标签: matlab matrix multidimensional-array diagonal
我有一个矩阵d = [ 1 1 0 0; 0 0 1 1; 0 0 0 0]; ,我想向矩阵D的对角线分配[N,~,P,Q]=size(D); diagIndex=repmat(logical(eye(N)),[1 1 P Q]); D(diagIndex)=d; 。我有下面的代码,但不允许我为D中的每个对角线值分配d。
d = [ 1 1 0 0; 0 0 1 1; 0 0 0 0];
[N,~,P,Q]=size(D); diagIndex=repmat(logical(eye(N)),[1 1 P Q]); D(diagIndex)=d;
d 0 0 0 0 d 0 0 0 0 d 0 0 0 0 d
30x432矩阵的输出如下:
{{1}}
答案 0 :(得分:0)
您可以使用spdiags创建对角线[10 x 108]稀疏矩阵,然后使用kron缩放并填充矩阵。
spdiags
[10 x 108]
kron
d = [ 1 1 0 0; 0 0 1 1; 0 0 0 0] size_D=[30, 432]; sz = size_D./size(d); diagonal = spdiags(ones(sz(1),1),0,sz(1),sz(2)); result = kron(diagonal ,d);