How can I find indices?

조회 수: 2 (최근 30일)
SM
SM 2021년 5월 27일
답변: Stephen23 2021년 5월 27일
I have two matrices:
A=[1 2 3 3 1 1 2 1;
1 1 1 2 2 3 2 3];
B=[2 1;
1 3];
The output matrix will be either
indx=[2, 6];
or
indx=[0 1 0 0 0 1 0 0];
Is there any smart way? I can definately solve it by using loop and conditional statement.
Appreciated!
  댓글 수: 2
KSSV
KSSV 2021년 5월 27일
What is output matrix?
SM
SM 2021년 5월 27일
편집: SM 2021년 5월 27일
indx=[2, 6]; or indx=[0 1 0 0 0 1 0 0];
If you look at A and B, B(:,1) matches with A(:,2), and B(:,2) matches with A(:,6) and A(:,8). I need only one index of an column array. Thus, output should be indx=[2, 6].

댓글을 달려면 로그인하십시오.

채택된 답변

Stephen23
Stephen23 2021년 5월 27일
A = [1,2,3,3,1,1,2,1;1,1,1,2,2,3,2,3]
A = 2×8
1 2 3 3 1 1 2 1 1 1 1 2 2 3 2 3
B = [2,1;1,3]
B = 2×2
2 1 1 3
[~,X] = ismember(B.',A.','rows')
X = 2×1
2 6

추가 답변 (1개)

Image Analyst
Image Analyst 2021년 5월 27일
Explain to me how you got [2,6] because it's not obvious to me. Your tag says "matches" and to find B in A, you can do this:
A=[1 2 3 3 1 1 2 1;
1 1 1 2 2 3 2 3];
B=[2 1;
1 3];
[rowsA, colsA] = size(A);
[rowsB, colsB] = size(B);
counter = 1;
index = [];
for col = 1 : (colsA - colsB + 1)
subA = A(:, col : col + colsB - 1)
if isequal(subA, B)
index(counter) = k;
end
end
index
but you can see your B never appears anywhere in your A. Are you perhaps just looking at the top row of each? But even that will not work because [2,1] occurs only at column 7-8.

카테고리

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