帮我用python写一个对一个采样时间为17秒,采样频率为1024Hz的时域振动数据进行去除毛刺并降噪处理后出图的列子
时间: 2024-05-12 21:21:10 浏览: 95
以下是一个简单的例子,使用Python进行时域振动数据的去除毛刺和降噪处理,并绘制图表。
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter, find_peaks
# 生成随机的时域振动数据
time = np.linspace(0, 17, 17*1024)
data = np.random.randn(len(time))
# 去除毛刺
peaks, _ = find_peaks(data, distance=100)
for p in peaks:
data[p] = np.mean(data[p-50:p+50])
# 降噪处理
filtered = savgol_filter(data, window_length=51, polyorder=3)
# 绘制图表
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(time, data, label='Raw Data')
ax.plot(time, filtered, label='Filtered Data')
ax.set_xlabel('Time (s)')
ax.set_ylabel('Amplitude')
ax.legend()
plt.show()
```
在这个例子中,我们首先生成了一个随机的时域振动数据。然后,我们使用`find_peaks`函数找到数据中的峰值,并在每个峰值处用局部均值来去除毛刺。接下来,我们使用`Savitzky-Golay`滤波器对数据进行降噪处理。最后,我们使用`matplotlib`库绘制了原始数据和过滤后的数据。
阅读全文