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?

조회 수: 7 (최근 30일)
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]

채택된 답변

Image Analyst
Image Analyst 2017년 1월 20일
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)

추가 답변 (1개)

Jorge Mario Guerra González
Jorge Mario Guerra González 2017년 1월 20일
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

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by