我有一个矩阵D = zeros (30, 432);
,我想将d = [ 1 1 0 0; 0 0 1 1; 0 0 0 0];
分配给矩阵D的对角线。我有下面的代码,但它不允许我为D中的每个对角线值分配D。
[N,~,P,Q]=size(D);
diagIndex=repmat(logical(eye(N)),[1 1 P Q]);
D(diagIndex)=d;
30x432矩阵的输出如下:
d 0 0 0
0 d 0 0
0 0 d 0
0 0 0 d
您可以使用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);