在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
- 元素数组,这绝对不是我想要的,也不会以1
结尾。我已经确认x.dtype
是float64
,这与Matlab的表示相同。
如何在numpy中获得完全对称的数组,就像我以前在Matlab中一样?
答案 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
,这就是它的用途,对于其他查看代码的人来说,它更具可读性。