【发布时间】:2018-05-07 22:12:27
【问题描述】:
我需要将一段 MATLAB 代码转换为 Python,而我在这两个方面都不擅长。 MATLAB 中的代码使用fft 和fftshift。我尝试在 Python 中使用 NumPy。代码运行,但是当我比较结果时它们不匹配。感谢您的帮助。
这是 MATLAB 代码:
h(1,1:Modes_number) = -1i*S;
hfft = fft(h);
hft0 = fftshift(hfft);
这是我写的 Python 代码:
h = np.zeros((1,self.cfg.Modes_number+1),dtype=complex)
for i in range(0, self.cfg.Modes_number+1):
h[0,i] = -1j*S;
hfft = np.fft.fft(h)
hft0 = np.fft.fftshift(hfft)
这是S 和Modes_number 的值:
S = 12.5022214424;
Modes_number = 200;
这也是我在 MATLAB 和 Python 中得到的结果示例:
MATLAB:
hfft(1,1)
ans =
1.1857e-13 - 2.5129e+03i
Python:
hfft[0]
0. -2.52544873e+03j
干杯。
【问题讨论】:
-
我也不擅长 Python,但我会保留纯粹的一维数据,而不是 MATLAB 中标准的单维二维:
h=np.zeros(self.cfg.Modes_number,dtype=complex) -
以上评论有帮助吗?如果没有,请告诉我们
Modes_number和S的值,没有这些我们无法重现您所看到的。 -
嗨 Cris,感谢您的回复和跟进。不幸的是,我无法使用您的提示修复它。这是 S 和 Modes_number 的值:
codeS=12.5022214424codeModes_number = 200 这也是我在 MATLAB 和 Python 中得到的结果示例:MATLAB hfft(1,1) ans = 1.1857e-13 - 2.5129e+03i Python hfft[0] = 0.-2.52544873e+03j