获取从-X到X均匀间隔的值的N元素向量

时间:2013-06-04 09:47:37

标签: python numpy scipy

在Matlab中,可以做到

N=1024;
X=1;
dx=2*X/(N-1);
x=-X:dx:X;

,其中一个数组x包含-11作为端点。

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 - 元素数组,这绝对不是我想要的,也不会以1结尾。我已经确认x.dtypefloat64,这与Matlab的表示相同。

如何在numpy中获得完全对称的数组,就像我以前在Matlab中一样?

1 个答案:

答案 0 :(得分:3)

由于N而不是N-1的划分,您提供的Python代码并不等效:

octave:1> N=1024;
octave:2> X=1;
octave:3> dx=2*X/(N-1);
octave:4> dx
dx =  0.0019550

VS

>>> 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,这就是它的用途,对于其他查看代码的人来说,它更具可读性。