卡尔曼滤波降噪python'实现
时间: 2023-11-06 12:18:08 浏览: 76
卡尔曼滤波是一种常用的信号滤波算法,可以对含有噪声的信号进行滤波处理。下面是使用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`。
在主程序中,设置了过程噪声方差和观测噪声方差,然后调用卡尔曼滤波函数进行滤波处理,并绘制了原始信号和滤波后的信号的对比图。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)