How to create a 2D diagonal matrix from a 3D matrix with a generic dimension? It could be with a loop structure.
조회 수: 6 (최근 30일)
이전 댓글 표시
%%3D matrix k
n=3;
k=zeros(n)
for a=1:n
for b=1:n
for c=1:n
k(b,c,a)=c;
end
end
end
using blkdiag could be obtained, however for a generic number of matrices n, this doesn't work.
u=blkdiag(k(:,:,1),k(:,:,2),k(:,:,3))
댓글 수: 1
Stephen23
2017년 11월 16일
What is the expected output? Can you please provide a specific example with input and output arrays.
채택된 답변
KL
2017년 11월 16일
Use a cell array and then something like,
c = arrayfun(@(x) k(:,:,x),1:n,'uni',0)
u = blkdiag(c{:})
u =
1 2 3 0 0 0 0 0 0
1 2 3 0 0 0 0 0 0
1 2 3 0 0 0 0 0 0
0 0 0 1 2 3 0 0 0
0 0 0 1 2 3 0 0 0
0 0 0 1 2 3 0 0 0
0 0 0 0 0 0 1 2 3
0 0 0 0 0 0 1 2 3
0 0 0 0 0 0 1 2 3
댓글 수: 0
추가 답변 (1개)
참고 항목
카테고리
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!