在Matlab中,一个人可以做到
N=1024;
X=1;
dx=2*X/(N-1);
x=-X:dx:X;
其中一个有一个数组 x
包括 -1
和 1
作为端点。
numpy 中的等价物:
from numpy import r_
N=1024
X=1
dx=2*X/N
x=r_[-X:X:dx]
给我0.998046875
作为x[N-1]
,这是不对的。使用 N-1
如上给了我一个 N-1
-element数组,这肯定不是我想要的,而且也不以1
结尾.我已经验证 x.dtype
是float64
, 这与 Matlab 的表示相同。
我怎样才能像以前在 Matlab 中那样在 numpy 中得到一个完全对称的数组?
最佳答案
您给出的 Python 代码不等价,因为除以 N
而不是 N-1
:
octave:1> N=1024;
octave:2> X=1;
octave:3> dx=2*X/(N-1);
octave:4> dx
dx = 0.0019550
对比
>>> N = 1024
>>> X = 1
>>> dx = 2. * X / N
>>> dx
0.001953125
因此,您得到不同的答案也就不足为奇了。现在,要获得与在 Matlab 中获得的结果相同的结果,您可以做
>>> dx = 2. * X / (N - 1)
>>> x = r_[-X:X+dx:dx]
>>> x
array([-1. , -0.99804497, -0.99608993, ..., 0.99608993,
0.99804497, 1. ])
>>> x.shape
(1024,)
但实际上,使用 linspace
,这就是它的用途,它对于查看您的代码的其他人来说更具可读性。
关于python - 获取从 -X 到 X 均匀分布的值的 N 元素向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16914657/