我是第一个使用Python的计算物理课程,我完全被硬件问题所困扰。我已经工作了好几天没有进展。我通过电子邮件发送时教授没有提供任何帮助
问题如下: 考虑一下锯齿波 f(x)= t,0 <t <0.5 f(x)= 1-t,0.5 <t <1 (a)使用代码定义此功能。 (b)找到傅立叶变换。 (c)绘制傅里叶变换。
这正是给出的。没有提供示例。我似乎无法弄清楚如何以我可以应用np.fft.fft()的方式编写步骤函数
我的最新(差)尝试:
import numpy as np
import matplotlib.pyplot as plt
import scipy.fftpack
fig = plt.figure(figsize=(16,9))
def f(x):
X = 1.0
if (0 < x < (X/2.)):
return x
elif ((X/2.) < x < X):
return 1-x
t = np.arange(0.0,1.001,0.001)
FFT = np.abs(np.fft.fft(f(t)))
freqs = np.fft.fftfreq(f.size,t[1]-t[0])
plt.subplot(211)
plt.plot(t,np.array([f(x) for x in t]))
plt.xlim((-0.5,1.5))
plt.ylim((0.0,0.75))
plt.subplot(212)
plt.plot(freqs,np.log10(FFT),'x')
plt.show()
当然这不起作用。
请!任何建议,评论,更正,笑话等?
我想现在已经晚了 - 但是有一种超级简单的方法可以做到这一点:
from scipy.fftpack import fft
from scipy import signal
# Number of sample points
N = 600
# sample spacing
T = 1.0 / 800.0
y = signal.sawtooth(2 * np.pi * 5 * x, width=.5)
yf = fft(y)
xf = np.linspace(0.0, 1.0 / (2.0*T), N//2)
plt.plot(xf, 2.0/N * np.abs(yf[0:N//2]))
plt.show()
有关更多信息,请参阅信号和fft的文档 - 这只是对这些页面中的示例的占用。
https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.sawtooth.html https://docs.scipy.org/doc/scipy/reference/tutorial/fftpack.html