我有一个 K 维度的矩阵 n x n。我想创建一个新的 M block 对角矩阵 N x N,它包含 d 个矩阵 block K 作为它的对角线。
如果 d 更小,我会直接使用 M = blkdiag(K,K,K) 等。不幸的是,d 非常大,我不想用 d 为 blkdiag() 函数手动编写具有完全相同参数的公式。
有没有更短、更智能的方法来做到这一点?
最佳答案
您可以为此使用kron
。
M = kron(X,Y)
返回 X 和 Y 的克罗内克张量积。结果是一个大数组,由 X 和 Y 的元素之间的所有可能乘积组成。如果 X 是 m×n,Y 是 p×- q,则 kron(X,Y) 为 m*p-by-n*q。所以在你的情况下,这样的事情会做:
M = kron(eye(L),K)
L
block 的数量。
关于MATLAB:创建具有相同重复 block 的 block 对角矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16370371/