帮我用python写一个将采样频率为256Hz的txt振动信号进行低通滤波降噪处理并按规定画布出图的列子
时间: 2024-05-08 07:14:43 浏览: 99
好的,我可以帮你编写Python代码实现这个功能。以下是示例代码:
```
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import butter, lfilter
def butter_lowpass(cutoff, fs, order=5):
nyq = 0.5 * fs
normal_cutoff = cutoff / nyq
b, a = butter(order, normal_cutoff, btype='low', analog=False)
return b, a
def butter_lowpass_filter(data, cutoff, fs, order=5):
b, a = butter_lowpass(cutoff, fs, order=order)
y = lfilter(b, a, data)
return y
# 读取采样信号数据
data = np.loadtxt('signal.txt')
# 设置信号采样频率和低通滤波器截止频率
fs = 256.0
cutoff = 30.0
# 对采样信号进行低通滤波处理
filtered_data = butter_lowpass_filter(data, cutoff, fs, order=5)
# 画出处理前后的信号波形
plt.figure(figsize=(10,6))
plt.subplot(2, 1, 1)
plt.plot(data)
plt.title('Raw Signal')
plt.xlabel('Time (samples)')
plt.ylabel('Amplitude')
plt.grid()
plt.subplot(2, 1, 2)
plt.plot(filtered_data)
plt.title('Filtered Signal')
plt.xlabel('Time (samples)')
plt.ylabel('Amplitude')
plt.grid()
plt.tight_layout()
plt.show()
```
其中,`signal.txt`是包含256Hz采样频率的振动信号的数据文件。代码中使用了巴特沃斯低通滤波器对信号进行了滤波处理,并最后输出处理前后的信号波形图。你可以根据自己的需求修改代码中的截止频率、采样频率以及数据文件名等参数。注意要将数据文件放在代码所在的目录下。
阅读全文