卡尔曼滤波降噪python'实现
时间: 2023-11-06 09:18:08 浏览: 130
kalmanpy:卡尔曼滤波器在Python中的实现
卡尔曼滤波是一种常用的信号滤波算法,可以对含有噪声的信号进行滤波处理。下面是使用Python实现卡尔曼滤波的简单示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成含有噪声的信号
t = np.linspace(0, 10, 100)
x = np.sin(t) + np.random.randn(100) * 0.1
# 卡尔曼滤波函数
def kalman_filter(x, z, Q, R):
n = len(x)
# 初始化
x_hat = np.zeros(n)
P = np.zeros(n)
K = np.zeros(n)
# 预测
x_hat[0] = x[0]
P[0] = 1
# 更新
for i in range(1, n):
x_hat[i] = x_hat[i-1]
P[i] = P[i-1] + Q
K[i] = P[i] / (P[i] + R)
x_hat[i] = x_hat[i] + K[i] * (z[i] - x_hat[i])
P[i] = (1 - K[i]) * P[i]
return x_hat
# 设置参数
Q = 1e-5
R = 0.1
# 进行滤波
x_hat = kalman_filter(x, x, Q, R)
# 绘制结果
plt.plot(t, x, label='Raw signal')
plt.plot(t, x_hat, label='Filtered signal')
plt.legend()
plt.show()
```
上述代码中,首先生成了一个含有噪声的信号,然后定义了一个卡尔曼滤波函数`kalman_filter`,函数中输入为原始信号`x`、观测信号`z`、过程噪声方差`Q`和观测噪声方差`R`,输出为滤波后的信号`x_hat`。在函数中,首先进行了初始化操作,然后进行了预测和更新操作,最终返回滤波后的信号`x_hat`。
在主程序中,设置了过程噪声方差和观测噪声方差,然后调用卡尔曼滤波函数进行滤波处理,并绘制了原始信号和滤波后的信号的对比图。
阅读全文