# How can I find indices?

조회 수: 1(최근 30일)
SM 2021년 5월 27일
답변: Stephen 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표시숨기기 이전 댓글 수: 1
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].

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

### 채택된 답변

Stephen 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 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.

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

### Community Treasure Hunt

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

Start Hunting!

Translated by