I want to create a matrix combining 2 matrices. The new one must have from the diagonal up de elements of matrix A and from the diagonal down the elements of matrix B. Help
조회 수: 2 (최근 30일)
이전 댓글 표시
I want to create a matrix combining 2 matrices. The new one (matrix C) must have from the diagonal up de elements of matrix A and from the diagonal down the elements of matrix B. Both matrices A and B have 0 in the diagonal, they have the same size and are simetric. Can anyone help with the code for that? Thank you
댓글 수: 0
채택된 답변
Voss
2022년 1월 22일
You can use triu() and tril() to get upper- and lower-triangular matrices, respectively, and logical indexing to combine them:
% Create some symmetric matrices:
A = [0 1 2; 1 0 3; 2 3 0];
B = 10*A;
display(A); display(B);
% get upper-triangular matrix of A:
A_tri = triu(A);
% get lower-triangular matrix of B:
B_tri = tril(B);
display(A_tri); display(B_tri);
% get logical matrix where A_tri is non-zero:
A_idx = logical(A_tri);
% get logical matrix where B_tri is non-zero:
B_idx = logical(B_tri);
display(A_idx); display(B_idx);
% make a new matrix C and fill in the upper and lower triangular parts using the logical matrices:
C = zeros(size(A));
C(A_idx) = A(A_idx);
C(B_idx) = B(B_idx);
display(C)
댓글 수: 4
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!