在Matlab中使用重复块创建块对角线和子对角线

时间:2014-10-28 15:51:07

标签: matlab matrix vectorization

假设我有n - by - n矩阵An - by - n矩阵B。我想创建一个块矩阵C,其中包含N矩阵A块作为对角线,以及(N - 1)矩阵B块作为A对角线下方的对角线。

这个link只给出了块对角线情况的答案,这些情况都很棒。现在我想添加一个块子对角线,我应该在Matlab中使用哪个命令?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

如果您知道如何在其对角线(大小为C - by - A)上创建一个nN矩阵nN,您还可以创建一个矩阵{ {1}}尺寸较小(D - by - n(N-1)),对角线上有n(N-1),那么您只需要在右边的子矩阵中添加B D

C

或者,使用kron

C( (n+1):end, (n+1):end ) = C( (n+1):end, (n+1):end ) + D;

你最好在这里使用稀疏矩阵

C = kron( eye(n), A ) + kron( diag(ones(n-1,1), -1), B );