使用python实现信号傅里叶变换
时间: 2023-12-12 12:05:22 浏览: 150
使用Python可以很方便地实现信号的傅里叶变换,可以使用NumPy和SciPy库来实现。具体步骤如下:
1. 导入所需库
```python
import numpy as np
import scipy.fft as fft
import matplotlib.pyplot as plt
```
2. 定义信号
```python
# 定义信号
t = np.linspace(0, 1, 1000) # 时间轴
f1 = 10 # 第一个频率
f2 = 50 # 第二个频率
signal = 2*np.sin(2*np.pi*f1*t) + 3*np.sin(2*np.pi*f2*t)
```
3. 进行傅里叶变换
```python
# 进行傅里叶变换
fft_signal = fft.fft(signal) # 快速傅里叶变换
freqs = fft.fftfreq(len(signal), t[1]-t[0]) # 频率轴
```
4. 绘制频谱图
```python
# 绘制频谱图
plt.figure()
plt.plot(freqs, np.abs(fft_signal))
plt.title('Frequency spectrum')
plt.xlabel('Frequency(Hz)')
plt.ylabel('Amplitude')
plt.show()
```
完整代码如下:
```python
import numpy as np
import scipy.fft as fft
import matplotlib.pyplot as plt
# 定义信号
t = np.linspace(0, 1, 1000) # 时间轴
f1 = 10 # 第一个频率
f2 = 50 # 第二个频率
signal = 2*np.sin(2*np.pi*f1*t) + 3*np.sin(2*np.pi*f2*t)
# 进行傅里叶变换
fft_signal = fft.fft(signal) # 快速傅里叶变换
freqs = fft.fftfreq(len(signal), t[1]-t[0]) # 频率轴
# 绘制频谱图
plt.figure()
plt.plot(freqs, np.abs(fft_signal))
plt.title('Frequency spectrum')
plt.xlabel('Frequency(Hz)')
plt.ylabel('Amplitude')
plt.show()
```
阅读全文