假设我有一个m x n
矩阵A.
有没有办法创建B
,(n x m) x n
矩阵的“对角线”由A
的列组成?
示例:
A = [1 2;
3 4]
B = [1 0;
3 0;
0 2;
0 4]
答案 0 :(得分:4)
这是一种方式:
A
转换为其mat2cell
列; blkdiag
的输入。代码:
A = [1 2; 3 4]; %// example data
C = mat2cell(A, size(A,1), ones(1,size(A,2))); %// step 1
B = blkdiag(C{:}); %// step 2
这会产生
B =
1 0
3 0
0 2
0 4
答案 1 :(得分:2)
这是一个完成此任务的简短脚本。它适用于A的任何尺寸。
A=[1 2; 3 4];
[R C] = size(A);
for i=1:C
B( 1+R*(i-1) : R*i , i ) = A(:,i);
end