请注意,您不是在计算连续时间的傅立叶变换,计算机是处理离散数据的,Numpy也是如此,如果您看一下
numpy.fft.fft说明以下内容的文档:
numpy.fft.fft(a,n = None,axis = -1)[源代码]
计算一维离散傅立叶变换。
此函数使用高效的快速傅立叶变换(FFT)算法计算一维n点离散傅立叶变换(DFT)
这意味着您正在计算方程式定义的DFT:
连续时间傅立叶变换的定义为:
如果您进行数学运算以查找它们之间的关系:
如您所见,有一个常数因子
1/N正好是您的标度值
dt(
x[n] - x[n-1]其中n在[0,T]区间中等于
1/N)。
只是对您的代码进行注释,导入所有内容
from numpy import *而不是使用以下方法不是一个好习惯:
import numpy as npimport matplotlib.pyplot as plt# create dataN = 4097T = 100.0t = np.linspace(-T/2,T/2,N)f = np.exp(-np.pi*t**2)# perform FT and multiply by dtdt = t[1]-t[0]ft = np.fft.fft(f) * dt freq = np.fft.fftfreq(N, dt)freq = freq[:N/2+1]# plot resultsplt.plot(freq, np.abs(ft[:N/2+1]),'o')plt.plot(freq, np.exp(-np.pi * freq**2),'r')plt.legend(('numpy fft * dt', 'exact solution'), loc='upper right')plt.xlabel('f')plt.ylabel('amplitude')plt.xlim([0, 1.4])plt.show()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)