如何在Python中生成等效于MATLAB的L×1维度数组
MATLAB L×1数组生成逻辑的Numpy实现方案
问题原因
原有代码未得到预期结果,核心是两点语法差异:
- Numpy的
np.arange为左闭右开区间逻辑,你传入的右端点L/2.0在L为2的整数次幂时,生成的序列数值范围和MATLAB一致,但默认返回形状为(L,)的一维数组,而非MATLAB中转置后得到的L×1二维列向量 - MATLAB的冒号语法默认生成整数类型序列(步长为1时),直接传入浮点端点的话Numpy会默认生成浮点数组,存在类型差异
正确实现代码
import numpy as np L = 2 ** 8 # 生成和MATLAB完全一致的L×1整数列向量 x = np.arange(-L // 2, L // 2, dtype=int).reshape((L, 1))
如果需要浮点类型的数组,可以修改为:
x = np.arange(-L / 2, L / 2)[:, np.newaxis]
结果验证
生成的x的shape属性为(256, 1),数值范围为[-128, 127],和MATLAB运行结果完全匹配。
内容的提问来源于stack exchange,提问作者Dimitri_896
相关产品推荐
相关产品推荐

