如何基于N×N子矩阵生成10N×10N块矩阵且不使用for循环
矩阵块重复无循环实现方案
你之前使用kron未达到预期效果,本质是参数顺序写反了,调整参数顺序即可直接通过kron实现需求,无需额外编写for循环。
核心逻辑
你需要的效果是10×10网格排列的原矩阵副本,属于块级重复操作:
- 若写为
kron(原矩阵A, 10×10全1矩阵):会将A的每个元素放大为10×10的同值块,也就是你遇到的「仅放大原始矩阵」的问题 - 若写为
kron(10×10全1矩阵, 原矩阵A):会将全1矩阵的每个元素替换为完整的A矩阵,正好生成10N×10N的目标矩阵
各环境实现代码
MATLAB
% A为N×N的原始矩阵 result = kron(ones(10,10), A);
Python(Numpy)
import numpy as np # A为N×N的原始矩阵 result = np.kron(np.ones((10, 10), dtype=A.dtype), A)
如果不想用克罗内克积,也可以用tile广播实现,逻辑更直观:
N = A.shape[0] result = np.tile(A[np.newaxis, np.newaxis, :, :], (10, 10, 1, 1)).reshape(10*N, 10*N)
内容的提问来源于stack exchange,提问作者MementoMori
相关产品推荐
相关产品推荐

