如何在MATLAB中由6X6对角矩阵生成4X6矩阵

如何在MATLAB中由6X6对角矩阵生成4X6矩阵,matlab,matrix,Matlab,Matrix,我有一个对角矩阵a=diag(a,b,c,d,e,f),它是一个6x6矩阵。由此,我想制作4x6矩阵,具体如下: B(1, :) = [a b 0 0 0 0] B(2, :) = [0 0 c 0 0 0] B(3, :) = [0 0 0 d e 0] B(4, :) = [0 0 0 0 0 f] 我的逻辑是这样的:将索引不除以3的两行相加,并将其放在这两行的第一行。。。然后删除索引为偶数的所有行。一个简单的for-循环可以: diagvalues = [10:15]; A = d

我有一个对角矩阵
a=diag(a,b,c,d,e,f)
,它是一个6x6矩阵。由此,我想制作4x6矩阵,具体如下:

B(1, :) = [a b 0 0 0 0]

B(2, :) = [0 0 c 0 0 0]

B(3, :) = [0 0 0 d e 0]

B(4, :) = [0 0 0 0 0 f]

我的逻辑是这样的:将索引不除以3的两行相加,并将其放在这两行的第一行。。。然后删除索引为偶数的所有行。

一个简单的
for
-循环可以:

diagvalues = [10:15];
A = diag(diagvalues);
B=[];

for i = 1:length(diagvalues)
    if mod(i,3) == 1
        B(size(B,1)+1,:) = A(i,:) + A(i+1,:);
    elseif mod(i,3) == 0
        B(size(B,1)+1,:) = A(i,:);
    end
end

您可以根据需要更改诊断向量。

您尝试了什么?一般认为,将你的尝试作为问题的一部分发布是一种好的做法。你的评论没有正确发表。另外,不要在评论中发布。在你问题的左下角有一个按钮。