matlab稳态和时变卡尔曼滤波器Kalman|matlab稳态和时变卡尔曼滤波器Kalman filter的设计和仿真植物动力学模型案例研究
原文链接:http://tecdat.cn/?p=24947
本案例研究说明了卡尔曼滤波器的设计和仿真。考虑稳态和时变卡尔曼滤波器。
植物动力学
考虑一个在输入u[n]上有加性高斯噪声w[n]的离散植物。
文章图片
此外,让 yv[n] 是输出 y[n] 的噪声测量,其中 v[n] 表示测量噪声:
文章图片
离散卡尔曼滤波器
该问题的稳态卡尔曼滤波器方程如下。
- 测量更新:
文章图片
- 时间更新:
文章图片
在这些方程中:
- ?x[n?n?1] 是 x[n] 的估计值,给定过去直到 yv[n?1] 的测量值。
- ?x[n?n] 是基于最后一次测量 yv[n] 的更新估计。
文章图片
给定噪声协方差,选择创新增益 M 以最小化估计误差的稳态协方差:
文章图片
您可以将时间和测量更新方程组合到一个状态空间模型中,即卡尔曼滤波器:
文章图片
该滤波器生成 yn 的最佳估计 ?y[n?n]。请注意,过滤器状态是 ?x[n?n?1]。
稳态设计 您可以使用函数 设计上述稳态卡尔曼滤波器
kalman
。首先指定带有过程噪声的工厂模型:文章图片
这里,第一个表达式是状态方程,第二个是测量方程。
以下命令指定此工厂模型。采样时间设置为 -1,以将模型标记为离散模型而不指定采样时间。
Pla = s
假设 _Q_=R= 1,设计离散卡尔曼滤波器。
kalm
此命令返回
kalmf
滤波器的状态空间模型 以及创新增益 M
。M
文章图片
kalmf
的输入 是 _u_ 和 yv,以及。输出是工厂输出和状态估计,ye=?y[n?n] 和 ?x[n?n]。文章图片
因为您对输出估计 ye 感兴趣,所以选择第一个输出
kalmf
并丢弃其余的。kalmf
要查看滤波器的工作原理,请生成一些输入数据和随机噪声,并将滤波后的因变量 ye 与真实因变量 _y 进行比较_。您可以单独生成每个因变量,也可以同时生成两者。要分别模拟每个因变量,先单独使用 植物,然后将植物和过滤器连接在一起。接下来详细介绍联合仿真替代方案。
下面的框图显示了如何生成真实输出和过滤输出。
文章图片
您可以使用函数和 构建此框图的状态空间模型 。首先构建一个完整的工厂模型,以 _u_、_w_、_v_ 作为输入,_y_ 和 yv(测量值)作为输出。
s(a,b,c,d,-1,'iptnme',{'u' 'w' 'v'},'ouutnae',{'y' 'yv'});
然后形成下图的并联。
文章图片
pal(P,kf,1,1,\[\],\[\]);
最后,通过将设备输出 yv 连接到具有正反馈的过滤输入 yv 来关闭传感器回路。
Smoe = feedback;
% 围绕输入#4和输出#2关闭循环
SiMe = SMdl % 从I/O列表中删除yv
生成的仿真模型将 _w_、_v_、_u_ 作为输入,_y_ 和 ye 作为输出。查看属性进行验证。
InuNeOupNme
文章图片
文章图片
您现在已准备好模拟过滤器。生成正弦输入 _u_ 并处理和测量噪声向量 _w_ 和 _v_。
n = length
w = sqrt*randn
v = sqrt*randn
模拟因变量。
\[out,x\] = lsimy = out;
% 真实响应
ye = out;
% 滤过的响应
yv = y + v;
% 测量响应
以图形方式比较真实和过滤后的因变量。
plot
xlabel
title
subplot
xlabel
文章图片
第一个图显示了真实因变量 _y_(虚线)和过滤后的输出 ye(实线)。第二个图将测量误差(点划线)与估计误差(实线)进行比较。该图显示噪音水平已显着降低。这是通过计算协方差误差来确认的。滤波前的误差协方差(测量误差)为:
MEro = sum/length
滤波后的误差协方差(估计误差)降低:
EsrCv = sum/length
时变卡尔曼滤波器 时变卡尔曼滤波器是对时变系统或具有非平稳噪声协方差的 LTI 系统的稳态滤波器的推广。
考虑以下工厂状态和测量方程。
文章图片
时变卡尔曼滤波器由以下递归给出:
- 测量更新:
文章图片
- 时间更新:
文章图片
这里,?x[n?n?1] 和 ?x[n?n] 如前所述。此外:
文章图片
为简单起见,表示状态空间矩阵的时间依赖性的下标已被删除。
给定初始条件 x[1?0] 和 P[1?0],您可以迭代这些方程来执行过滤。您必须在每个时间样本更新状态估计 x[n?.] 和误差协方差矩阵 P[n?.]。
时变设计 要实现这些滤波器递归,首先要生成噪声输出测量值。使用 之前产生的过程噪声
w
和测量噪声 v
。y = lsim
假设以下初始条件:
文章图片
用
for
循环实现时变滤波器 。P = B\*Q\*B';
%初始误差协方差
x = zeros;
% 状态的初始条件for i = 1:length
% 测量更新
erv(i) = C\*P\*C';
% 时间更新
x = A\*x + B\*u;
以图形方式比较真实输出和估计输出。
subplot(211)subplot
xlabel
文章图片
第一个图显示了真实因变量 _y_(虚线)和过滤后的因变量 ye(实线)。第二个图将测量误差(点划线)与估计误差(实线)进行比较。
时变滤波器还估计
errcov
每个样本的估计误差 y-ye的协方差 。绘制它以查看您的滤波器是否达到稳定状态(正如您对固定输入噪声所期望的那样)。subplot(211)
plot
文章图片
从这个协方差图中,您可以看到输出协方差确实在大约五个样本中达到了稳定状态。从那时起,您的时变滤波器具有与稳态版本相同的性能。
与由实验数据导出的估计误差协方差比较:
Esro = sum/length
该值小于理论值
errcov
,接近稳态设计获得的值。最后,注意最终值 M[n] 和 创新增益矩阵的稳态值 _M_重合。
MnM
文章图片
文章图片
文章图片
最受欢迎的见解
1.matlab使用经验模式分解emd 对信号进行去噪
2.Matlab使用Hampel滤波去除异常值
3.matlab偏最小二乘回归(PLSR)和主成分回归(PCR)和主成分回归(PCR)")
4.matlab预测ARMA-GARCH 条件均值和方差模型
5.matlab中使用VMD(变分模态分解)")
6.matlab使用贝叶斯优化的深度学习
7.matlab贝叶斯隐马尔可夫hmm模型
8.matlab中的隐马尔可夫模型(HMM)实现实现")
【matlab稳态和时变卡尔曼滤波器Kalman|matlab稳态和时变卡尔曼滤波器Kalman filter的设计和仿真植物动力学模型案例研究】9.matlab实现MCMC的马尔可夫切换ARMA – GARCH模型
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福