MATLAB:创建具有相同重复 block 的 block 对角矩阵

标签 matlab matrix vectorization

我有一个 K 维度的矩阵 n x n。我想创建一个新的 M block 对角矩阵 N x N,它包含 d 个矩阵 block K 作为它的对角线。

如果 d 更小,我会直接使用 M = blkdiag(K,K,K) 等。不幸的是,d 非常大,我不想用 dblkdiag() 函数手动编写具有完全相同参数的公式。

有没有更短、更智能的方法来做到这一点?

最佳答案

您可以为此使用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/

相关文章:

c++ - 在 Visual Studio 中调试 mex 函数

performance - Matlab:数组在循环内增长 - 那又怎样?

arrays - 如何获取给定范围内大于x的元素?

c++ - 如何在 C++ 中递归地填充矩阵?

performance - 比较BSXFUN和REPMAT

r - 具有重复索引的向量化循环

matlab - 如何实现...?求给定角度的弧范围

c - C 中矩阵的每个单元格的递归枚举

c++ - 如何将具有两个 channel 的 Mat 转换为 vector<vector<int>>?

matlab - 提取 8 个点/顶点内的体素