帮我用python将采样频率为65536Hz,采集时间为1/64s的时域振动信号装转化单边频谱图,其频谱图纵坐标为分贝幅值,横坐标显示长度为0-1=3200HZ
时间: 2024-05-06 10:21:34 浏览: 122
好的,您的问题是将采样频率为65536Hz,采集时间为1/64s的时域振动信号转化为单边频谱图,纵坐标为分贝幅值,横坐标显示长度为0-3200HZ。以下是Python代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
# 假设采样频率为65536Hz,采集时间为1/64s
fs = 65536
t = np.linspace(0, 1/64, int(fs/64), endpoint=False) # 采集时间为1/64s
# 假设这里的振动信号为一个sin波,频率为1000Hz
f = 1000
signal = np.sin(2*np.pi*f*t)
# 进行FFT变换
fft = np.fft.fft(signal) / len(signal)
freq = np.fft.fftfreq(len(signal), 1/fs)
# 取单边频谱图
fft = np.abs(fft[:int(len(signal)/2)])
freq = freq[:int(len(signal)/2)]
# 将频率转换为0-3200Hz
freq = freq * fs
max_freq_index = np.where(freq > 3200)[0][0]
fft = 20 * np.log10(2 * np.abs(fft) / np.sqrt(2))
fft = fft[:max_freq_index]
freq = freq[:max_freq_index] / fs
# 画图
plt.plot(freq, fft)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude (dB)')
plt.show()
```
将上述代码复制到Python环境中即可得到单边频谱图。
阅读全文