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?
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Alaa Hameed
am 20 Jan. 2017
Kommentiert: Alaa Hameed
am 20 Jan. 2017
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 Kommentar
Jorge Mario Guerra González
am 20 Jan. 2017
For the forum order, try to summarize the title of the post into a shorter sentence. Check the answer I give you below.
Akzeptierte Antwort
Image Analyst
am 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)
2 Kommentare
Jorge Mario Guerra González
am 20 Jan. 2017
yes, this is what I meant with a smarter way of doing it.
Weitere Antworten (1)
Jorge Mario Guerra González
am 20 Jan. 2017
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
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!