MATLAB中的广义块对角矩阵

MATLAB中的广义块对角矩阵,matlab,matrix,Matlab,Matrix,我有一个大小为CbyC的方阵,我想构建一个对角块矩阵,重复N=2C(1+C)次。问题是C的值可能会改变,因此我不知道是否可以使用blkdiag,因为我不知道应该输入多少参数,因为矩阵的大小是用户选择的变量。如何在MATLAB中实现这一点?您可以使用 M = kron(eye(N),A); 其中,A是重复N次的CxC矩阵 因为这将快速扩展,所以对于稀疏实现,请使用: M = kron(speye(N),A); 你为什么不能用参数可变的blkdiag?@AndrasDeak我不知道怎么做。可能

我有一个大小为
C
by
C
的方阵,我想构建一个对角块矩阵,重复
N=2C(1+C)
次。问题是
C
的值可能会改变,因此我不知道是否可以使用
blkdiag
,因为我不知道应该输入多少参数,因为矩阵的大小是用户选择的变量。如何在MATLAB中实现这一点?

您可以使用

 M = kron(eye(N),A);
其中,
A
是重复
N次的CxC矩阵

因为这将快速扩展,所以对于稀疏实现,请使用:

M = kron(speye(N),A);

你为什么不能用参数可变的
blkdiag
?@AndrasDeak我不知道怎么做。可能吗?例如,我总是使用
blkdiag(A,A,A)
。我如何在不硬编码矩阵数的情况下编写它:构造一个单元格,然后将其传递给blkdiag(以逗号分隔的列表形式)。当然,可能有更直接的方法;我承认我在问之前并没有认真考虑你的问题:)所以我的意思是类似于
tmpcell=repmat({A}[1,2*C*(1+C)];out=blkdiag(tmpcell{:})
。我有一种感觉,虽然这将很快爆发,但Tendero需要一种不同的方法(稀疏矩阵?)。嗯,我想这一切都取决于大小。但我可以想象。想知道稀疏数组是否也有类似的优雅构造,或者需要使用一些
sparse()
索引扭曲。编辑:嗯,
kron
适用于稀疏矩阵,所以我想稀疏输入也可以。为什么你说它会“爆炸得很快”?(是的,顺便说一句,我正在为LDPC码构造一个稀疏矩阵)@tendo我想bla意味着你的线性大小与
C^2
相匹配,所以元素的数量与
C^4
相匹配,这是非常陡峭的。只需做
M=sparse(kron(eye(N),a))
,这样你就不会因为情况a和N很大而耗尽内存。。。