使用python,基于1ms周期的采样数据,对数据进行频谱分析,生成bode图
时间: 2024-03-16 14:43:40 浏览: 11
要对1ms周期的采样数据进行频谱分析并生成Bode图,可以使用Python的numpy和scipy库来实现。下面是一个示例代码,你可以根据自己的需要进行修改:
```python
import numpy as np
import scipy.signal as signal
import matplotlib.pyplot as plt
# 生成示例数据(正弦波信号)
fs = 1000 # 采样频率
t = np.arange(0, 1, 1/fs) # 时间轴
f1 = 10 # 信号频率
f2 = 50 # 信号频率
x = 0.5 * np.sin(2 * np.pi * f1 * t) + 0.5 * np.sin(2 * np.pi * f2 * t)
# 计算频谱
f, H = signal.freqz(x, fs=fs)
# 绘制Bode图
fig, ax = plt.subplots(2, 1, figsize=(8, 6))
ax[0].plot(t, x)
ax[0].set_xlabel('Time (s)')
ax[0].set_ylabel('Amplitude')
ax[1].semilogx(f, 20 * np.log10(np.abs(H)))
ax[1].set_xlabel('Frequency (Hz)')
ax[1].set_ylabel('Magnitude (dB)')
ax[1].grid(True, which="both")
plt.show()
```
在这个例子中,我们生成了一个包含两个正弦波信号的示例数据。然后,使用`signal.freqz()`函数来计算频率响应,并绘制Bode图,其中第一个子图显示了原始信号,第二个子图显示了幅度响应。你可以将示例数据替换为自己的数据,或者使用其他信号生成方法,以满足你的需求。