Python编程实现DFT计算 输出:1.时域波形图;2.幅频谱图
时间: 2024-09-13 14:06:00 浏览: 46
DFT.zip_DFT_声发射信号_绘制频谱_频谱_频谱图
5星 · 资源好评率100%
在Python中,可以使用NumPy库来实现离散傅里叶变换(DFT),并可视化时域波形图和幅频谱图。以下是实现这一过程的基本步骤和代码示例:
1. 首先,确保你已经安装了NumPy和Matplotlib库。如果还没有安装,可以使用pip安装:
```
pip install numpy matplotlib
```
2. 导入必要的库并创建时域信号:
```python
import numpy as np
import matplotlib.pyplot as plt
# 创建一个时域信号,例如一个简单的正弦波
fs = 1000 # 采样频率
t = np.arange(0, 1, 1/fs) # 生成一个时间向量
freq = 5 # 正弦波频率
signal = np.sin(2 * np.pi * freq * t) # 生成正弦波信号
```
3. 计算信号的离散傅里叶变换(DFT):
```python
yf = np.fft.fft(signal) # 对信号进行DFT变换
xf = np.fft.fftfreq(len(signal), 1/fs) # 计算频率
```
4. 获取振幅谱并绘图:
```python
# 取DFT结果的绝对值,即振幅谱,并取其一半(因为DFT结果是对称的)
amplitude_spectrum = np.abs(yf)[:len(signal)//2]
plt.figure(figsize=(12, 6))
# 绘制时域波形图
plt.subplot(2, 1, 1)
plt.plot(t, signal)
plt.title('Time Domain Signal')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
# 绘制幅频谱图
plt.subplot(2, 1, 2)
plt.stem(xf[:len(signal)//2], amplitude_spectrum)
plt.title('Amplitude Spectrum')
plt.xlabel('Frequency [Hz]')
plt.ylabel('Amplitude')
plt.tight_layout()
plt.show()
```
这段代码首先创建了一个简单的正弦波信号,然后使用`np.fft.fft`计算其DFT变换,接着绘制了时域波形图和幅频谱图。
阅读全文