Python与MATLAB中kron函数使用差异及数组列赋值实现问题
MATLAB kron列赋值逻辑Python实现方案
问题根因
MATLAB的克罗内克积函数kron对两个列向量计算时,直接输出列向量结构;而NumPy的kron如果输入是二维数组,会按矩阵克罗内克积规则输出二维数组,这是你得到不同维度结果的核心原因。
实现代码
你只需要把kron的输出拉平为一维数组,就可以直接赋值给grid_val的对应列,示例如下:
import numpy as np # 提前确认mgrid为(35,1)列向量、pgrid为(1000,1)列向量 # 若输入为一维数组,可先通过.reshape(-1,1)转列向量: # mgrid = mgrid.reshape(-1, 1) # pgrid = pgrid.reshape(-1, 1) grid_val = np.zeros((35000, 2)) # 赋值第一列 grid_val[:, 0] = np.kron(np.ones((35, 1)), pgrid).flatten() # 赋值第二列 grid_val[:, 1] = np.kron(mgrid, np.ones((1000, 1))).flatten()
补充说明
如果需要显式对齐MATLAB的输出结构,也可以把flatten()替换为reshape(-1, 1),赋值逻辑完全一致,运行结果没有差异。
内容的提问来源于stack exchange,提问作者loganusa
相关产品推荐
相关产品推荐

