关于数据挖掘:matlab稳态和时变卡尔曼滤波器Kalman-filter的设计和仿真植物动力学模型案例研究

59次阅读

共计 2599 个字符,预计需要花费 7 分钟才能阅读完成。

原文链接: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] 的更新预计。

给定以后预计 ˆx[nn],工夫更新预测下一个样本_n_  + 1 的状态值(提前一步预测)。而后,测量更新基于新的测量值 yv[n+1] 调整该预测。修改项是新值的函数,即 y[n+1] 的测量值和预测值之间的差别。这种差别由下式给出:

给定噪声协方差,抉择翻新增益 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 作为输入。查看属性进行验证。

InuNe


OupNme

 

您当初已筹备好模仿过滤器。生成正弦输出 _u_ 并解决和测量噪声向量 _w_ 和 _v_。

n = length
w = sqrt*randn
v = sqrt*randn

模仿因变量。

\[out,x\] = lsim

y = 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_重合。

Mn

M

 


最受欢迎的见解

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) 实现实现 ”)

9.matlab 实现 MCMC 的马尔可夫切换 ARMA – GARCH 模型

正文完
 0