作者:陈可1993_532 | 来源:互联网 | 2023-05-26 12:10
我需要从3D数组中形成对角矩阵:
给定A =rand(2,2,5)
。 B
是一个矩阵,其对角元素是A
的切片
A
具有以下切片:a1,a2,a3,a4和a5,切片2 x 2。
B
的外观应为:
[a1 0 0 0 0;
0 a2 0 0 0;
0 0 a3 0 0;
0 0 0 a4 0;
0 0 0 0 a5]
我将其实现为:
lambda=[];
for m=1:N
l=A(:,:,m);
lambda = [lambda; l];
end
它形成的矩阵为10 x2。我的错误在哪里?
有一个内置函数:blkdiag:
% random matrice
A = rand(2,2,5)
% split A into 2D matrix (or slice) we preserve the 1st and 2nd dimension
C = num2cell(A,[1 2])
% block diagonalize
B = blkdiag(C{:})