我在matrix
中有matlab
,如下所示:
A=
1 2 3 4
5 6 7 8
3 4 5 6
我想转换成以下矩阵:
1 0 0 0
5 2 0 0
3 6 3 0
0 4 7 4
0 0 5 8
0 0 0 6
我该如何进行这种转变?
答案 0 :(得分:1)
如你所说,你在MATLAB中有矩阵,我假设你想在MATLAB中找到一个解决方案。您可以使用diag
函数将每一行写入相应的对角线。
% Create A and get size
A = [1 2 3 4; 5 6 7 8; 3 4 5 6];
[m n] = size(A);
% Preallocate square matrix with correct number of rows
B = zeros(n + m-1);
% Put each row of A in the corresponding diagonal
for k=1:m
B(1:n-(1-k),1:n-(1-k)) = B(1:n-(1-k),1:n-(1-k)) + diag(A(k,:),1-k);
end
% Crop B to get correct size
B = B(:,1:n);