3

在 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.998046875as x[N-1],这是不对的。N-1如上所述使用给了我一个N-1-element 数组,这绝对不是我想要的,也不会以1. 我已经验证了x.dtypeis float64,这与 Matlab 的表示相同。

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

4

1 回答 1

3

您提供的 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,)

但实际上, use linspace,这就是它的用途,对于查看您的代码的其他人来说,它更具可读性。

于 2013-06-04T10:10:35.257 回答