[英]Block diagonal matrix from columns
Suppose I have an mxn
matrix A . 假设我有一个mxn
矩阵A.
Is there a way to create B
, a (nxm) xn
matrix whose "diagonal" is formed by A
's columns ? 有没有办法创建B
,一个(nxm) xn
矩阵,其“对角线”由A
的列组成?
Example: 例:
A = [1 2;
3 4]
B = [1 0;
3 0;
0 2;
0 4]
Here is a way: 这是一种方式:
A
to a cell array of its columns, using mat2cell
; 使用mat2cell
将A
转换为其列的单元数组 ; blkdiag
. 从该单元格数组生成以逗号分隔的列表 ,并将其用作blkdiag
的输入。 Code: 码:
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
This produces 这产生了
B =
1 0
3 0
0 2
0 4
Here is a short script to accomplish this. 这是一个完成此任务的简短脚本。 It works for any dimensions of A. 它适用于任何尺寸的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.