2017-10-13 21 views
-1

Comment comparer deux tableaux de tailles différentes et obtenir un tableau séparé des valeurs et des emplacements adaptés tableau séparé pour les valeurs correspondantes.comparer deux tableaux de tailles différentes et obtenir un tableau 1 séparé des valeurs appariées et 1 des emplacements

J'ai deux tableaux de tailles différentes

Ylocknew = [0 1.0000 -4.3000 5.0000 -4.2000 7.0000 -7.4000 8.0000 1.0000 4.0000] 

Ypos   = [1  5  7  8 4] 

Je veux comparer deux tableaux et obtenir un autre tableau qui contient les mêmes valeurs de Ypos et Ylocknew et aussi d'autres tableaux qui contient des valeurs d'index de points appariés.

Code:

Ypos(end:numel(Ylocknew))=inf 
R_common =Ylocknew(Ylocknew==Ypos); 
I = find(Ylocknew==Ypos); 

Valeurs de sortie attendues:

Je besoin de 2 nouveau tableau

Yposlocknew = [1 5 7 8 4] 
Yposloc = [2 4 6 8 10] 

approche occasion:

RST_intersection = (intersect(Ylocknew,Ypos)) 

Output for similar values : 

RST_intersection = [ 1  5  7  8] 

Pour indicies (j'ai essayé):

RST_intersection = find(intersect(Ylocknew,Ypos)) 

Le résultat est (Ce qui est faux)

RST_intersection =[ 1  2  3  4] 

Je suis en train de le faire, mais il me donne une matrice vide de taille 1 * 0.

De toute façon rapide et facile de faire cela sans utiliser la boucle si possible pour accélérer le processus que j'ai beaucoup de valeurs.

+0

Ceci est le résultat que je reçois avec ismember mais son mauvais ismember est en train de reproduire les valeurs que j'ai essayé cette commande aussi. et pourquoi pas est la raison pour laquelle la dernière extrémité 1 est pas que j'assortit dois correspondre Ypos avec Ylocknew et de la matrice obtenir sans moyens répétition Ypos a des valeurs et j'ai besoin endroits où ces valeurs sont avaiable en ordre – Peter

Répondre

1

Tout ce que vous avez besoin ici est intersect avec le drapeau stable.

[Yposlocknew, Yposloc] = intersect(Ylocknew,Ypos,'stable'); 

find(intersect(Ylocknew,Ypos)) vous donnera certainement [1 2 3 4] puisque tous les éléments de intersect(Ylocknew,Ypos) ne sont pas nuls.

+0

Oui merci beaucoup cela a fonctionné maintenant bien .. Grande réponse et merci pour l'aide ur et le temps upvoted et accepté. – Peter