卡尔曼
状态估计的卡尔曼滤波器设计
语法
描述
例子
SISO装置卡尔曼滤波器设计
为有加性白噪声的工厂设计卡尔曼滤波器w在输入和v输出,如下图所示。
假设植物具有以下状态空间矩阵,并且是一个样本时间未知的离散时间植物(Ts = -1
).
A = [1.1269 -0.4940 0.1129 1.0000 000 1.0000 0];B = [-0.3832 0.5919 0.5191];C = [1 0 0];D = 0;植物= ss(A,B,C,D,-1);工厂。我nputName =“联合国”;工厂。OutputName =“次”;
使用卡尔曼
,您必须提供一个模型sys
它对噪声有一个输入w
.因此,sys
不一样吗植物
,因为植物
接受输入UN = u + w
.你可以构造sys
通过为噪声输入创建求和结。
Sum = sumblk('un = u + w');sys = connect(Plant,Sum,{“u”,' w '},“次”);
同样地,你可以使用sys = Plant*[1 1]
.
指定噪声协方差。因为工厂有一个噪声输入和一个输出,这些值是标量。在实践中,这些值是系统中噪声源的属性,您可以通过测量或系统的其他知识来确定。对于这个例子,假设两个噪音源都有单位协方差且不相关(N
= 0)。
Q = 1;R = 1;N = 0;
设计过滤器。
[kalmf,L,P] = kalman(sys,Q,R,N);大小(kalmf)
具有4个输出、2个输入和3个状态的状态空间模型。
卡尔曼滤波器kalmf
是具有两个输入和四个输出的状态空间模型。kalmf
以植物输入信号为输入u而工厂的输出噪声很大
.第一个输出是估计的真实工厂产量
.其余三个输出是状态估计
.的输入和输出名称kalmf
来看看卡尔曼
相应地给它们贴上标签。
kalmf。我nputName
ans =2 x1细胞{'u'} {'yt'}
kalmf。OutputName
ans =4 x1细胞{'yt_e'} {'x1_e'} {'x2_e'} {'x3_e'}
检验卡尔曼增益l
.对于一个有三个状态的SISO工厂,l
是一个三元素列向量。
l
L =3×10.3586 0.3798 0.0817
为一个例子,说明如何使用kalmf
要减少由于噪声引起的测量误差,请参见卡尔曼滤波.
MIMO工厂卡尔曼滤波器设计
考虑一个有三个输入的工厂,其中一个代表过程噪声w,和两个测量输出。工厂有四个状态。
假设有以下状态空间矩阵,创建sys
.
A = [-0.71 0.06 -0.19 -0.17;0.06 -0.52 -0.03 0.30;-0.19 -0.03 -0.24 -0.02;-0.17 0.30 -0.02 -0.41];B = [1.44 2.91 0;-1.97 0.83 -0.27;-0.20 1.39 1.10;-1.2 0 -0.28];C = [0 -0.36 -1.58 0.28;-2.05 0 0.51 0.03]; D = zeros(2,3); sys = ss(A,B,C,D); sys.InputName = {‘u1’,“u2”,' w '};sys。OutputName = {“日元”,“日元”};
因为工厂只有一个过程噪声输入,协方差问是标量。对于这个例子,假设过程噪声有单位协方差。
Q = 1;
卡尔曼
使用的维度问
来确定哪些输入是已知的,哪些是噪声输入。对于标量问
,卡尔曼
假设一个噪声输入并使用最后一个输入,除非您另有指定(参见输出不可测的植物).
对于两个输出上的测量噪声,指定一个2 × 2噪声协方差矩阵。对于本例,第一个输出使用单位方差,第二个输出使用1.3的方差。将非对角线值设置为零表示两个噪声通道不相关。
R = [10 0;0 1.3);
设计卡尔曼滤波器。
[kalmf,L,P] = kalman(sys,Q,R);
检查输入和输出。卡尔曼
使用InputName
,OutputName
,InputGroup
,OutputGroup
的属性kalmf
帮助你记录输入和输出kalmf
代表。
kalmf。我nputGroup
ans =带字段的结构:已知输入:[1 2]测量:[3 4]
kalmf。我nputName
ans =4 x1细胞{'u1'} {'u2'} {'y1'} {'y2'}
kalmf。OutputGroup
ans =带字段的结构:输出估计:[1 2]状态估计:[3 4 5 6]
kalmf。OutputName
ans =6 x1细胞{' y1_e}{‘y2_e}{‘x1_e}{‘x2_e}{‘x3_e} {' x4_e '}
因此有两个已知的输入u1
和u2
前两个输入是kalmf
和两个测量输出日元
和y2
最后两个输入是否为kalmf
.的输出kalmf
,前两个为估计输出,其余四个为状态估计。为了使用卡尔曼滤波器,以类似于SISO设备的方式将这些输入连接到设备和噪声信号卡尔曼滤波.
输出不可测的植物
考虑一个有四个输入和两个输出的工厂。第一个和第三个输入是已知的,而第二个和第四个输入表示过程噪声。该装置也有两个输出,但只有第二个输出被测量。
使用以下状态空间矩阵创建sys
.
A = [-0.37 0.14 -0.01 0.04;0.14 -1.89 0.98 -0.11;-0.01 0.98 -0.96 -0.14;0.04 -0.11 -0.14 -0.95];B = [-0.07 -2.32 0.68 0.10;-2.49 0.08 0 0.83;0 -0.95 0 0.54;-2.19 0.41 0.45 0.90];C = [0 0 -0.50 -0.38;-0.15 -2.12 -1.27 0.65]; D = zeros(2,4); sys = ss(A,B,C,D,-1);%不确定抽样时间的离散性sys。我nputName = {‘u1’,“w1”,“u2”,“那”};sys。OutputName = {“云”,“ym”};
使用卡尔曼
若要为此系统设计过滤器,请使用已知的
和传感器
Input参数用于指定工厂的哪些输入是已知的,哪些输出是测量的。
已知= [1 3];传感器= [2];
指定噪声协方差并设计滤波器。
Q =眼睛(2);R = 1;N = 0;[kalmf,L,P] = kalman(sys,Q,R,N,传感器,已知);
的输入和输出标签kalmf
显示筛选器期望的输入和它返回的输出。
kalmf。我nputGroup
ans =带字段的结构:KnownInput: [1 2
kalmf。我nputName
ans =3 x1细胞{'u1'} {'u2'} {'ym'}
kalmf
的两个已知输入作为输入sys
的噪声测量输出sys
.
kalmf。OutputGroup
ans =带字段的结构:输出估计:1状态估计:[2 3 4 5]
的第一个输出kalmf
是它对实测植物产量的真实值的估计值。剩余的输出是状态估计。
输入参数
sys
- - - - - -带过程噪声的工厂模型
党卫军
模型
R
- - - - - -测量噪声协方差
标量|矩阵
测量噪声协方差,指定为标量或Ny——- - - - - -Ny矩阵,Ny是工厂产出的数量。卡尔曼
假设测量噪声v白噪声是否具有协方差R
=E(vvT).当工厂只有一个输出通道时,R
标量是否等于的方差v.当设备有多个输出通道且测量噪声不相关时,R
是一个对角矩阵。在实践中,您将确定适当的值R
通过测量或对系统的噪声特性进行有根据的猜测。
有关测量噪声协方差的其他约束,请参见限制.
N
- - - - - -噪声交叉协方差
0(默认)|标量|矩阵
噪声交叉协方差,指定为标量或Ny——- - - - - -Nw矩阵。卡尔曼
假设过程噪声w测量噪声v满足N
=E(西弗吉尼亚州T).如果两个噪声源不相关,可以省略N
,相当于设置N = 0
.在实践中,您将确定适当的值N
通过测量或对系统的噪声特性进行有根据的猜测。
传感器
- - - - - -测量输出sys
向量
测量输出sys
,指定为索引向量,用于标识的输出sys
测量。例如,假设您的系统有三个输出,但只测量了其中两个,对应于的第一个和第三个输出sys
.在本例中,设置传感器= [1 3]
.
已知的
- - - - - -的已知输入sys
向量
的已知输入sys
,指定为索引向量,标识哪些输入是已知的(确定性)。例如,假设您的系统有三个输入,但只有第一个和第二个输入是已知的。在本例中,设置已知= [1 2]
.卡尔曼
的任何剩余输入sys
是随机的。
输出参数
Mx
,我的
——状态估计器创新成果
数组
离散时间系统的状态估计器的创新增益,以数组形式返回。
Mx
和我的
只有当类型
= '现在'
,它是离散时间系统的默认估计器。对连续时间sys
或类型
=“延迟”
,然后Mx = My = []
.
为“当前”
类型估计量,Mx
和我的
更新方程中的创新收益是:
当噪声输入没有直接馈通时w到工厂产量y(也就是说,当H= 0,见离散时间估计),然后 ,则输出估计化简为 .
数组的维数Mx
和我的
取决于的尺寸sys
如下。
Mx
- - - - - -Nx——- - - - - -Ny,在那里Nx工厂中的状态数和Ny是输出的数量。我的
- - - - - -Ny——- - - - - -Ny.
有关如何卡尔曼
获得Mx
和我的
,请参阅离散时间估计.
限制
设备和噪声数据必须满足:
(C,一个),其中:
和 ,在那里
在连续时间的虚轴上没有不可控模式,在离散时间的单位圆上也没有不可控模式。
算法
连续时间估计
考虑一个已知输入的连续时间植物u,过程白噪声w,白测量噪声v:
噪音信号w和v满足:
卡尔曼滤波器,或卡尔曼估计器,计算一个状态估计 使稳态误差协方差最小化:
卡尔曼滤波器有以下状态方程和输出方程:
得到滤波器增益l,卡尔曼
求解一个代数Riccati方程,得到
在哪里
P求解相应的代数Riccati方程。
估计器使用已知的输入u还有测量y生成输出和状态估计 和 .
离散时间估计
离散植物由:
在离散时间,噪声信号w和v满足:
离散时间估计器的状态方程如下:
卡尔曼
求解离散Riccati方程得到增益矩阵l:
在哪里
卡尔曼
可以计算离散时间卡尔曼估计量的两种变体,电流估计量(类型
=“当前”
)和延迟估计量(类型
=“延迟”
).
电流估计器-生成输出估计 以及各州的估计 使用所有可用的测量到 .这个估计器有输出方程
创新成果在哪里米x和米y定义为:
因此,米x更新状态估计 使用新的测量方法 :
同样的,米y计算更新的输出估计值:
当H= 0,则 ,则输出估计化简为 .
延迟估计器——生成输出估计 以及各州的估计 使用测量仅到yv[n1]。该估计器的输出方程为:
延迟估计器更容易部署在控制循环中。
版本历史
R2006a之前介绍
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。