
Matlab的:
fs = 1e4;dt = 1 / fs;t = 0:dt:0.5;F = 1e3;y = cos(2*pi*F*t);S = fftshift(fft(y) / length(y));f_scale = linspace(-1,1,length(y)) * (fs / 2);a = abs(S);phi = (angle(S));subplot(2,1)plot(f_scale,a)Title('amplitude')subplot(2,2)plot(f_scale,phi)Title('phase') Python:
import numpy as npimport matplotlib.pyplot as pltfs = 1e4dt = 1 / fst = np.arange(0,0.5,dt)F = 1e3y = np.cos(2*np.pi*F*t)S = np.fft.fftshift(np.fft.fft(y) / y.shape[0])f_scale = np.linspace(-1,y.shape[0]) * (fs / 2)a = np.abs(S)phi = np.angle(S)plt.subplot(2,title="amplitude")plt.plot(f_scale,a)plt.subplot(2,2,title="phase")plt.plot(f_scale,phi)plt.show()
matlab output
numpy output
解决方法 这是理解np.arange的一个问题.它在达到所需值之前停止一个dt(你传递的间隔在右侧打开).如果你定义t = np.arange(0,0.5+dt,dt)
一切都会好起来的.
总结以上是内存溢出为你收集整理的python – 为什么numpy fft会返回错误的相位信息?全部内容,希望文章能够帮你解决python – 为什么numpy fft会返回错误的相位信息?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)