def plot_freqDomain(data, fs=20480, title=None, clear_boundary=False, img_save_path=None, *args, **kwargs, ):
时间: 2024-05-01 13:20:27 浏览: 124
该函数的作用是绘制给定数据的频域图。
参数说明:
- data:要绘制频域图的数据
- fs:采样频率,默认为20480Hz
- title:图像标题,默认为None
- clear_boundary:是否清除图像边界,默认为False
- img_save_path:图像保存路径,默认为None
- *args和**kwargs:传递给matplotlib.pyplot.plot()函数的其他参数
函数实现:
```python
import matplotlib.pyplot as plt
import numpy as np
def plot_freqDomain(data, fs=20480, title=None, clear_boundary=False, img_save_path=None, *args, **kwargs, ):
# 计算FFT
spectrum = np.fft.fft(data) / len(data)
freq = np.fft.fftfreq(len(data), d=1 / fs)
# 绘制频域图
plt.plot(freq[:len(freq)//2], 20 * np.log10(np.abs(spectrum[:len(spectrum)//2])), *args, **kwargs)
# 设置标题和坐标轴标签
plt.title(title)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude (dB)')
# 清除图像边界
if clear_boundary:
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)
plt.gca().xaxis.set_ticks_position('bottom')
plt.gca().yaxis.set_ticks_position('left')
plt.gca().spines['bottom'].set_position(('data', 0))
plt.gca().spines['left'].set_position(('data', 0))
# 保存图像
if img_save_path:
plt.savefig(img_save_path)
# 显示图像
plt.show()
```
该函数首先通过numpy.fft.fft()函数计算给定数据的FFT,然后绘制频域图。其中,x轴表示频率,y轴表示幅度(以dB为单位)。该函数还可以设置标题、坐标轴标签、清除图像边界、保存图像等。最后,调用matplotlib.pyplot.show()函数显示图像。
阅读全文