Hello, I have two matrices of different sizes and I want to find the indices for the elements in the bigger matrix that match with those in the smaller one, allowing for repetition?

6 vues (au cours des 30 derniers jours)
Hello, I have two matrices of different sizes and I want to find the indices for the elements in the bigger matrix that match with those in the smaller one, allowing for repetition? A=[1 1 1 2 3 5 5 1 ] B=[1 2 5] I want to get C=[1 2 3 4 6 7 8]
  1 commentaire
Jorge Mario Guerra González
For the forum order, try to summarize the title of the post into a shorter sentence. Check the answer I give you below.

Connectez-vous pour commenter.

Réponse acceptée

Image Analyst
Image Analyst le 20 Jan 2017
Use ismember():
A=[1 1 1 2 3 5 5 1 ]
B=[1 2 5]
% Want C=[1 2 3 4 6 7 8]
[inA, inB] = ismember(A, B)
C = find(inA)

Plus de réponses (1)

Jorge Mario Guerra González
Hello Alaa, I believe the way to do it is just comparing array A with each element of B using find function. There must be a smarter way to it, but this example gives the output you want.
A=[1 1 1 2 3 5 5 1];
B=[1 2 5];
result=[];
for i=1:length(B)
C=find(A==B(i));
result=[result C]; %#ok<AGROW>
end
result=sort(result);
disp(result);
I hope it works for you

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by