请写出读取正弦加速度数据,然后添加白噪声,接着用最好的过滤器过滤噪音的代码
时间: 2024-10-08 18:13:53 浏览: 18
在Python中,你可以使用numpy库来处理数学运算,matplotlib库来可视化数据,以及scipy库中的滤波器函数。下面是一个简单的示例,假设我们已经有了正弦加速度数据存储在一个名为`sine_acceleration`的数组中,而白噪声可以由numpy的randn函数生成:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import butter, filtfilt
# 假设sine_acceleration是你实际的数据
sine_acceleration = ... # 正弦加速度数据
# 添加白噪声
noise_level = 0.1 # 噪声级别
noisy_data = sine_acceleration + noise_level * np.random.randn(len(sine_acceleration))
# 设定滤波器参数 - 这里是一个低通 Butterworth 滤波器的例子
fs = 100 # 数据采样频率
cutoff_freq = 5 # 频率截止点 (Hz)
order = 4 # 滤波器阶数
b, a = butter(order, cutoff_freq / (fs / 2), btype='lowpass') # 设计滤波器系数
# 使用filtfilt函数进行无失真滤波
filtered_data = filtfilt(b, a, noisy_data)
# 可视化原始数据、带噪数据和滤波后的数据
plt.figure(figsize=(10, 6))
plt.plot(range(len(sine_acceleration)), sine_acceleration, label='Original Sine Acceleration')
plt.plot(range(len(noisy_data)), noisy_data, label='Noisy Data')
plt.plot(range(len(filtered_data)), filtered_data, label='Filtered Data')
plt.legend()
plt.xlabel('Sample Index')
plt.ylabel('Acceleration')
plt.title('Sinusoidal Acceleration with Noise and Filtering')
plt.grid(True)
plt.show()
阅读全文