2016-11-01 1 views
0

J'ai une matrice de données Données (8765x138) que les première et deuxième colonnes sont des coordonnées x et y. J'ai échantillonné quelques points spécifiques dans un autre tableau, Points (2000x2), les première et deuxième colonnes dans A se réfère à x et y, respectivement. Je veux extraire des lignes spécifiques dans Matlab qui correspondent à la matrice A (les deux x, y). La sortie devrait être (2000x138). J'ai essayé le code suivant mais le résultat n'est pas correct.Comment récupérer des lignes spécifiques que les coordonnées x, y ont été sauvegardées dans une autre matrice?

newData = Data(ismember(Data(:,1),Points(:,1))& ismember(Data(:,2),Points(:,2)),:); 

Que dois-je faire pour sélectionner les lignes de données que ses première et deuxième colonnes correspondent à mes Points matrice. Quelqu'un s'il vous plaît aider, j'ai l'impression d'avoir tout essayé!

+0

Je ne comprends pas votre sortie désirée. Vous avez 2000 points, mais vous produisez la ligne entière qui correspond? Pouvez-vous donner un petit exemple de ce que vous essayez de faire? – beaker

+0

Je pense que vous mélangez entre 'Points' et' A' ... – EBH

Répondre

0

Vous pouvez utiliser ismember avec l'argument rows

newData = Data(ismember(Data(:,1:2),Points(:,1:2),'rows'),:); 

Mais quand vous échantillonnage, il est préférable de sauvegarder l'index des données échantillonnées et les utiliser pour extraire les coordonnées.

+0

merci beaucoup pour votre aide –

0

Il est une question formulée mal, si difficile de savoir avec certitude, mais la solution pourrait être d'utiliser ismember() pour trouver les lignes correspondantes, .: par exemple

DataXY = Data(:,[1,2]); 
tf = ismember(DataXY, Points, 'rows'); 
newData = Data(tf,:); 
+1

Qui est ce que [@ rahnema1 suggéré ...] (http://stackoverflow.com/a/40368750/2627163) – EBH

+1

Grands esprits, etc, etc – Justin

+1

[Goût semblable!] (Https://www.youtube.com/watch?v=xx_hlStCL7g) – EBH