Python做傅里叶变换
时间: 2023-06-23 14:45:58 浏览: 77
Python中可以使用NumPy库来进行傅里叶变换。具体步骤如下:
1. 导入NumPy库:`import numpy as np`
2. 准备信号数据,可以使用NumPy的数组来表示信号
3. 对信号数据进行傅里叶变换,可以使用`np.fft.fft()`函数,该函数返回复数数组,可以使用`np.abs()`函数计算得到幅度谱,使用`np.angle()`函数计算得到相位谱
4. 可以使用`np.fft.ifft()`函数对傅里叶变换后的数据进行逆变换得到原始信号
下面是一个简单的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
# 产生一个信号数据
t = np.linspace(0, 2*np.pi, 128)
sig = np.sin(5*t) + np.sin(10*t)
# 进行傅里叶变换
sig_fft = np.fft.fft(sig)
freqs = np.fft.fftfreq(len(sig))
amplitudes = np.abs(sig_fft)
phases = np.angle(sig_fft)
# 绘制幅度谱和相位谱
plt.figure()
plt.subplot(211)
plt.plot(freqs[:len(sig)//2], amplitudes[:len(sig)//2])
plt.title("Amplitude Spectrum")
plt.subplot(212)
plt.plot(freqs[:len(sig)//2], phases[:len(sig)//2])
plt.title("Phase Spectrum")
# 进行逆变换得到原始信号
sig_ifft = np.fft.ifft(sig_fft)
# 绘制原始信号和逆变换后的信号
plt.figure()
plt.subplot(211)
plt.plot(t, sig)
plt.title("Original Signal")
plt.subplot(212)
plt.plot(t, sig_ifft)
plt.title("Signal after Inverse Fourier Transform")
plt.show()
```
运行该代码可以得到信号的幅度谱、相位谱和原始信号以及逆变换后的信号的图像。
阅读全文