矩阵变换操作

时间:2014-12-11 10:03:24

标签: matlab

我在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

我该如何进行这种转变?

1 个答案:

答案 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);