写一段python代码对信号进行快速傅里叶变换
时间: 2023-06-05 14:07:06 浏览: 136
C# 实现快速傅里叶变换代码.zip
3星 · 编辑精心推荐
以下是Python代码对信号进行快速傅里叶变换的示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成信号
fs = 1000 # 采样率
t = np.arange(0, 2, 1./fs) # 时间序列
f1 = 5 # 信号频率1
f2 = 50 # 信号频率2
x = 10 * np.sin(2*np.pi*f1*t) + 5 * np.sin(2*np.pi*f2*t) # 信号
# 绘制原始信号时域图
plt.figure()
plt.plot(t, x)
plt.title('Original Signal')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.grid()
# 进行快速傅里叶变换
X = np.fft.fft(x) # 傅里叶变换结果
f = np.fft.fftfreq(len(x), 1./fs) # 频率序列
A = np.abs(X) # 幅度谱(能量分布)
phi = np.angle(X) # 相位谱
# 绘制幅度谱和相位谱的频域图
plt.figure()
plt.plot(f, A)
plt.title('Amplitude Spectrum')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.grid()
plt.figure()
plt.plot(f, phi)
plt.title('Phase Spectrum')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Phase (rad)')
plt.grid()
plt.show()
```
该代码生成两个正弦波信号并绘制其时域图,然后用快速傅里叶变换将信号转换为频域信号,并绘制了幅度谱和相位谱的频域图。
阅读全文