MATLAB Answers

# Square matrix with relationships among equal rows.

조회 수: 1(최근 30일)
GEORGIOS BEKAS 26 Oct 2017
댓글: Cedric Wannaz 27 Oct 2017
I have a matrix with the following form:
A = [ 9 9 9; 5 6 5; 9 9 9; 4 4 2; 5 6 5; 5 6 5; 4 4 4; 9 9 9]
If a particular row is equal to another, I am searching for a square matrix that contains ones, when a particular row is equal to another. Therefore if row 3 is equal to row 1, I want the elements B(1,3) and B(3,1) of a new matrix B, to be equal to 1.

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

### 채택된 답변

Andrei Bobrov 26 Oct 2017
B = ~squareform(pdist(A));
##### 댓글 수: 2표시숨기기 이전 댓글 수: 1
Andrei Bobrov 27 Oct 2017
Thank you, Jos!

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

### 추가 답변(2개)

Jos (10584) 26 Oct 2017
편집: Jos (10584) 26 Oct 2017
Use ismember to loop through the rows of A, and work backwards to induce automatic pre-allocation. Note that the diagonal contains 1s as well.
A = [ 9 9 9; 5 6 5; 9 9 9; 4 4 2; 5 6 5; 5 6 5; 4 4 4; 9 9 9];
B = [] ;
for k=size(A,1):-1:1
B(ismember(A,A(k,:),'rows'),k) = 1 ;
end
##### 댓글 수: 0표시숨기기 이전 댓글 수: -1

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

Cedric Wannaz 26 Oct 2017
편집: Cedric Wannaz 26 Oct 2017
B = all(permute(A, [1,3,2]) == permute(A, [3,1,2]), 3) ;
and if you have a version of MATLAB < R2016b:
B = all(bsxfun(@eq, permute(A, [1,3,2]), permute(A, [3,1,2])), 3) ;
##### 댓글 수: 2표시숨기기 이전 댓글 수: 1
Cedric Wannaz 27 Oct 2017
Thank you Andrei :)

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

### Community Treasure Hunt

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

Start Hunting!