主要内容

dsp.kalmanfilter.

(要被删除)使用卡尔曼滤波器估计系统测量和状态

dsp.kalmanfilter.将在将来的释放中删除。使用传感器融合和跟踪工具箱™中的卡尔曼过滤功能。

描述

dsp.kalmanfilter.系统对象™是用于递归地获得线性最佳滤波的解决方案的估计器。在没有精确知识的潜在动态系统的情况下进行了此估计。卡尔曼滤波器实现了具有状态的以下线性离散时间过程,X,在这一点K.TH.时间步骤: X K. = 一种 X K. - 1 + B. K. - 1 + W. K. - 1 (状态方程)。这个测量,Z.,被给予: Z. K. = H X K. + V. K. (测量方程式)。

卡尔曼滤波器算法递归地计算以下两个步骤:

  • 预测:使用先前状态估计过程参数x(状态)和p(状态误差协方差)。

  • 校正:使用当前测量校正状态和错误协方差。

要过滤输入的每个通道:

  1. 创造dsp.kalmanfilter.对象并设置其属性。

  2. 使用参数调用对象,就像它是一个函数。

要了解有关系统对象如何工作的更多信息,请参阅什么是系统对象?

创建

描述

卡尔曼= dsp.kalmanfilter.返回卡尔曼筛选系统对象,卡尔曼,参数的默认值。

例子

卡尔曼= dsp.kalmanfilter(STMATRIX.mmatrix.pncovariance.Mncovariance.Cimatrix.返回卡尔曼过滤系统对象,卡尔曼。这stateveransitionmatrix.属性设置为STMATRIX., 这MeasurementMatrix.属性设置为mmatrix., 这processnoisecovariance.属性设置为pncovariance., 这MeasurementNoisecovariance.属性设置为Mncovariance.,而且ControlInputmatrix.属性设置为Cimatrix.

卡尔曼= dsp.kalmanfilter(名称,价值返回卡尔曼过滤系统对象,卡尔曼,每个属性都设置为指定值。用单引号括起每个属性名称。未指定的属性具有默认值。

特性

展开全部

除非另有说明,否则属性是不可努力,这意味着在调用对象后无法更改其值。当您调用它们时,对象锁定发布功能解锁它们。

如果属性是调节,您可以随时更改其值。

有关更改属性值的详细信息,请参阅MATLAB使用系统对象的系统设计

指定一种在状态等式中,将先前的时间步骤中的状态涉及当前时间步骤的状态。一种是一个方形矩阵,每个维度等于状态的数量。

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

指定B.在将控制输入与状态相关的状态等式中。B.是一个列向量,其中多行等于状态的数量。

依赖性

此属性仅激活ControlInputport.物业价值是真的

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

指定H在将状态与测量相关的测量方程中。H是一排矢量,其中多列等于测量次数。

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

指定问:作为方形矩阵,每个维度等于状态的数量。问:是白高斯过程噪音的协方差,W.,在状态方程中。

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

指定R.作为方形矩阵,每个维度等于状态的数量。R.是白高斯过程噪音的协方差,V.,在测量方程中。

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

指定模型状态的初始估计作为具有等于状态数量的长度的列向量。

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

指定状态误差协方差的初始估计,作为每个维度等于状态数量的方矩阵。

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

指定为标量逻辑值,禁用系统对象过滤器在卡尔曼滤波器算法中的预测步骤之后执行校正步骤。

使用标量逻辑值指定是否存在控制输入。默认值是真的

用法

描述

例子

[撒尿雪最司MSE_EST.zpred.Xpred.mse_pred.] =卡尔曼(Z.通过测量执行迭代卡尔曼滤波器算法Z.并控制输入。列中的列Z.被视为单独的并行滤波器的输入,其校正(或更新)步骤可以由禁用违约财产。返回的值是估计测量值撒尿,估计的国家雪最司,估计州的MSEMSE_EST.,预测测量zpred.,预测状态Xpred.和预测状态的母版mse_pred.

输入参数

展开全部

测量输入,指定为向量或矩阵。

测量输入的行数与行数的数量MeasurementMatrix.属性必须等于控件输入的行数与列数的比率ControlInputmatrix.财产。

测量信号可以是可变尺寸输入。锁定对象后,您可以更改每个输入通道的大小,但通道数不能更改。

数据类型:单身的|双倍的

控制输入​​,指定为向量或矩阵。

控制输入​​的行数的数量与列数的比率ControlInputmatrix.属性必须等于测量输入的行数与行数的数量MeasurementMatrix.财产。

控制信号可以是可变大小的输入。锁定对象后,您可以更改每个输入通道的大小,但通道数不能更改。

数据类型:单身的|双倍的

输出参数

展开全部

估计测量值,返回为向量或矩阵。

数据类型:单身的|双倍的

估计状态,作为向量或矩阵返回。

数据类型:单身的|双倍的

估计状态的均值误差,作为标量或列向量返回。如果输入是行向量,则估计状态的MSE是标量。

数据类型:单身的|双倍的

预测测量值,作为向量或矩阵返回。

数据类型:单身的|双倍的

预测状态,作为向量或矩阵返回。

数据类型:单身的|双倍的

预测状态的均值误差,作为标量或列向量返回。如果输入是行向量,则估计状态的MSE是标量。

数据类型:单身的|双倍的

对象功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,要发布命名的系统对象的系统资源obj.,使用此语法:

释放(obj)

展开全部

跑步系统对象算法
发布 释放资源并允许更改系统对象属性值和输入特性
重置 重置内部状态系统对象

例子

全部收缩

笔记:如果您使用的是R2016A或早期版本,请使用等效步骤语法替换对对象的每个调用。例如,obj(x)成为步骤(obj,x)

为更改的标量输入,卡尔曼滤波器和范围创建系统对象(用于绘图)。

numsamples = 4000;r = 0.02;src = dsp.signalsource;src.signal = [on(numsamples / 4,1);  -  3 *(numsamples / 4,1);......4 *那些(NumSamples / 4,1);-0.5 *那些(numsamples / 4,1)];tscope = timescope('numinputports',3,......'timespansource''财产''时间跨度',numsamples,......'不时''秒''ylimits',[ -  5 5],......'陈旧',真的);%创建时间范围卡尔曼= dsp.kalmanfilter('processnoisecovariance',0.0001,......'MeasurementNoisecovariance',r,......'initalstateestimate',5,......'InitialErrorcovarianceStimate',1,......'controlinputport',错误的);%创建卡尔曼过滤器

向标量添加噪点,并将结果传递给卡尔曼滤波器。流数据,并绘制过滤的信号。

尽管(〜ISDONE(SRC))TRUEVAL = SRC();noisyval = trueval + sqrt(r)* randn;Estval =卡尔曼(诺斯Yval);Tscope(诺斯Yval,Trueval,Estval);结尾

算法

该对象实现了描述的算法,输入和输出卡尔曼筛选块参考页面。对象属性对应于块参数。

兼容性考虑因素

展开全部

不推荐从R2021A开始

参考

[1] Greg Welch和Gary Bishop,卡尔曼滤波器介绍,技术报告TR95 041.教堂山的北卡罗来纳大学:教堂山,NC。1995年。

扩展能力

也可以看看

介绍在R2013B.