文档帮助中心文档
设计状态估计的卡尔曼滤波器
(kalmf L P) =卡尔曼(sys, Q, R, N)
(kalmf L P) =卡尔曼(sys, Q, R, N,传感器,已知)
[kalmf L P, Mx, Z,我]=卡尔曼(___)
[kalmf L P, Mx, Z,我]=卡尔曼(___、类型)
例子
[kalmf.,l,P] =卡尔曼(SYS.,问,R,N)创建给定植物模型的卡尔曼滤波器SYS.和噪声协方差数据问,R,N.该功能计算Kalman滤波器,用于卡尔曼估计器,其配置如下图所示。
[kalmf.,l,P] =卡尔曼(SYS.,问,R,N)
kalmf.
l
P
SYS.
问
R
N
你构建这个模型SYS.与已知的输入u白处理噪声输入w,这样w由最后的Nw输入SYS..“真实”植物产量yt的所有输出SYS..您还可以提供噪声协方差数据问,R,N.返回的卡尔曼滤波器kalmf.是一种呈现已知输入的状态空间模型u噪声测量y然后得出一个估计 y ^ 的真实产量和估计 x ^ 植物的状态。卡尔曼也返回卡尔曼收益l和稳态错误协方差矩阵P.
卡尔曼
[kalmf.,l,P] =卡尔曼(SYS.,问,R,N,传感器,已知的)当下列条件之一或同时存在时,计算卡尔曼滤波器。
[kalmf.,l,P] =卡尔曼(SYS.,问,R,N,传感器,已知的)
传感器
已知的
不是所有的输出SYS.测量。
扰动的输入w是不是最后的投入SYS..
索引向量传感器指定的输出SYS.测量。这些输出y.索引向量已知的指定哪些输入是已知的(确定性)。已知的输入组成u.这卡尔曼命令采用剩余的输入SYS.是随机输入w.
[kalmf.,l,P,Mx,Z,我的] =卡尔曼(___)也回报了创新的收益Mx和我的和稳态错误的考核P和Z一个离散时间SYS..您可以使用此语法与任何先前的输入参数组合。
[kalmf.,l,P,Mx,Z,我的] =卡尔曼(___)
Mx
Z
我的
[kalmf.,l,P,Mx,Z,我的] =卡尔曼(___,类型)指定离散时间的估计量类型SYS..
[kalmf.,l,P,Mx,Z,我的] =卡尔曼(___,类型)
类型
键入='current'-计算输出估计 y ^ [ n | n ] 和国家估计数 x ^ [ n | n ] 使用所有可用的测量值 y [ n ] .
键入='current'
键入='延迟'-计算输出估计 y ^ [ n | n − 1 ] 和国家估计数 x ^ [ n | n − 1 ] 使用的测量值仅为 y [ n − 1 ] .延迟估计器更容易在控制回路中实现。
键入='延迟'
你可以使用类型使用以前的输入参数组合的任何输入参数。
全部折叠
设计具有添加性白噪声的植物的卡尔曼滤波器w在输入和v在输出上,如下图所示。
假设该工厂具有以下状态空间矩阵,并且是具有未指定采样时间的离散时间工厂(Ts = 1).
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 ='联合国';plant.outputname =.'yt';
使用卡尔曼,您必须提供一个模型SYS.这是噪声的输入w.因此,SYS.与...不同植物,因为植物需要输入UN = u + w.你可以构建SYS.通过为噪声输入创建求和结。
w
植物
UN = u + w
sum = sumblk('un = u + w');sys = connect(植物,总和,{“u”,' w '},'yt');
同样地,你可以用sys = plant * [1 1].
sys = plant * [1 1]
指定噪声协方差。因为工厂有一个噪声输入和一个输出,这些值是标量。在实践中,这些值是系统中噪声源的属性,是通过测量或系统的其他知识确定的。对于本例,假设两个噪声源都有单位协方差且不相关(N= 0)。
Q = 1;R = 1;N = 0;
设计过滤器。
[kalmf L P] =卡尔曼(sys, Q, R, N);大小(kalmf)
具有4个输出,2个输入和3个状态的状态空间模型。
卡尔曼过滤器kalmf.是一个有两个输入和四个输出的状态空间模型。kalmf.以植物的输入信号作为输入u和嘈杂的工厂输出 y = y t + v .第一个产量是估计的真实植物产量 y 人 .剩下的三个产出是国家估计 x 人 .的输入和输出名称kalmf.来看看卡尔曼相应地标签。
kalmf.inputname.
ans =2x1细胞{' u '}{“欧美”}
kalmf。OutputName
ans =4 x1细胞{'yt_e'} {'x1_e'} {'x2_e'} {'x3_e'}
检查卡尔曼收益l.对于一个有三个州的SISO工厂,l是一个三元素列向量。
L =3×10.3586 0.3798 0.0817
有关显示如何使用的示例kalmf.由于噪音降低测量误差,请参阅卡尔曼滤波.
考虑一个有三个输入的工厂,其中一个表示过程噪声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 -02 -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 = {'y1','y2'};
因为工厂只有一个过程噪声输入,协方差问是一个标量。对于本例,假设过程噪声具有单位协方差。
Q = 1;
卡尔曼使用问确定已知哪些输入以及哪些输入是噪声输入。对于标量问,卡尔曼假设有一个噪声输入并使用最后一个输入,除非您另有规定(参见植物有未测量的输出).
对于两个输出的测量噪声,指定一个2 × 2噪声协方差矩阵。对于本例,第一个输出使用单位方差,第二个输出使用1.3的方差。将非对角线值设置为零,表示两个噪声通道是不相关的。
R = [1 0;0 1.3);
设计卡尔曼滤波器。
[kalmf L P] =卡尔曼(sys, Q, R);
检查输入和输出。卡尔曼使用InputName,OutputName,InputGroup,OutputGroup属性kalmf.来帮助你跟踪输入和输出kalmf.代表。
InputName
OutputName
InputGroup
OutputGroup
kalmf.inputgroup.
ans =结构体字段:KnownInput: [1 2] Measurement: [3 4]
ans =4 x1细胞{'u1'} {'u2'} {'y1'} {'y2'}
kalmf。OutputGroup
ans =结构体字段:产权:[1 2]偏见:[3 4 5 6]
ans =6x1细胞{'y1_e'} {'y2_e'} {'x1_e'} {'x2_e'} {'x3_e'} {'x3_e'} {'x4_e'}
这两个输入是已知的U1.和U2.前两个输入是kalmf.和两个测量输出y1.和Y2.是最后两个输入kalmf..对于输出kalmf.,前两个是估计输出,其余四个是状态估计。使用卡尔曼滤波器,连接这些输入到工厂和噪声信号,以一种类似的方式显示的SISO工厂在卡尔曼滤波.
U1.
U2.
y1.
Y2.
考虑一个有四个输入和两个输出的设备。第一个和第三个输入是已知的,而第二个和第四个输入代表过程噪声。工厂也有两个输出,但只有第二个输出被测量。
使用以下状态空间矩阵创建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.InputName = {'U1','W1','U2','w2'};sys。OutputName = {“云”,“ym”};
使用卡尔曼为设计该系统的滤波器,使用已知的和传感器输入参数,用于指定工厂的输入,并测量输出。
已知= [1 3];传感器= [2];
指定噪声CoviRACE并设计过滤器。
q =眼睛(2);R = 1;N = 0;[kalmf,l,p] =卡尔曼(SYS,Q,R,N,传感器,已知);
检查的输入和输出标签kalmf.显示过滤器期望和输出返回的输入。
ans =结构体字段:众所周知:[1 2]测量:3
ans =3 x1细胞{'U1'} {'U2'} {'ym'}
kalmf.的两个已知输入作为输入SYS.的噪声测量输出SYS..
ans =结构体字段:输出:1 StateEstimate: [2 3 4 5]
的第一个输出kalmf.它估计了测量植物输出的真实值。剩余的输出是状态估计。
SS.
工厂模型与过程噪声,指定为状态空间(SS.)模型。植物知道输入u白处理噪声输入w.植物产出yt不包括测量噪声。
yt
您可以编写这样的工厂模型的状态空间矩阵:
一个 , [ B G ] , C , [ D H ]
卡尔曼假设高斯噪音v在输出上。因此,在连续时间内,状态空间方程卡尔曼适用于:
x ˙ = 一个 x + B u + G w y = C x + D u + H w + v
在离散时间下,状态空间方程为:
x [ n + 1 ] = 一个 x [ n ] + B u [ n ] + G w [ n ] y [ n ] = C x [ n ] + D u [ n ] + H w [ n ] + v [ n ]
如果你不使用已知的输入参数,卡尔曼使用问来确定哪些输入SYS.是噪声输入。在这种情况下,卡尔曼对待最后一点Nw=大小(Q, 1)输入作为噪声输入。当噪声输入w是不是最后的投入SYS.,你可以使用已知的输入参数,指定已知的植物输入。卡尔曼将剩余的输入视为随机性。
大小(Q, 1)
有关植物矩阵属性的附加约束,请参阅限制.
处理噪声协方差,指定为标量或Nw-经过-Nw矩阵,其中Nw是植物的噪声输入的数量。卡尔曼使用问来确定哪些输入SYS.噪声输入是否占最后一个Nw=大小(Q, 1)除非您以其他方式指定,否则输入为噪声输入已知的输入参数。
卡尔曼假设过程噪声w高斯噪声是否有协方差问=E(WW.T).当工厂只有一个过程噪声输入时,问标量是等于方差的标量w.当工厂具有多个不相关的噪声输入时,问是一个对角线矩阵。在实践中,您需要为问通过测量或对系统的噪声特性进行有根据的猜测。
测量噪声协方差,指定为标量或Ny-经过-Ny矩阵,其中Ny为植物产出的数量。卡尔曼假设测量噪声v白噪声是否有协方差R=E(VV.T).当工厂只有一个输出通道时,R标量是等于方差的标量v.当设备有多个输出通道且测量噪声不相关时,R是一个对角线矩阵。在实践中,您需要为R通过测量或对系统的噪声特性进行有根据的猜测。
有关测量噪声协方差的其他限制,请参阅限制.
噪声交叉协方差,指定为标量或Ny-经过-Nw矩阵。卡尔曼假设过程噪声w和测量噪声v满足N=E(WV.T).如果两个噪声源不相关,可以省略N,它相当于设置n = 0..在实践中,您需要为N通过测量或对系统的噪声特性进行有根据的猜测。
n = 0.
测量的输出SYS.,指定为一个索引向量,该索引向量标识哪些输出SYS.测量。例如,假设您的系统有三个输出,但只有其中两个被测量,对应于的第一个和第三个输出SYS..在本例中,set传感器= [1 3].
传感器= [1 3]
已知的投入SYS.,指定为索引向量,标识哪些输入是已知的(确定性)。例如,假设您的系统有三个输入,但只有第一个和第二个输入是已知的。在本例中,set已知= [1 2].卡尔曼解释任何剩余的输入SYS.随机。
已知= [1 2]
“当前”
'延迟'
为计算的离散时间估计器类型,指定为“当前”或'延迟'.此输入仅适用于离散时间SYS..
“当前”-计算输出估计 y ^ [ n | n ] 和国家估计数 x ^ [ n | n ] 使用所有可用的测量值 y [ n ] .
'延迟'-计算输出估计 y ^ [ n | n − 1 ] 和国家估计数 x ^ [ n | n − 1 ] 使用的测量值仅为 y [ n − 1 ] .延迟估计器更容易在控制回路中实现。
有关如何卡尔曼计算当前和延迟的估计,见离散时间估计.
卡尔曼估算器或卡尔曼滤波器,作为状态空间返回(SS.)模型。生成的估计器有输入 [ u ; y ] 和输出 [ y ^ ; x ^ ] .换句话说,kalmf.将植物的输入作为输入u和嘈杂的工厂输出y,并产生输出估计无辐射植物输出 y ^ 和估计的状态值 x ^ .
卡尔曼自动设置InputName,OutputName,InputGroup,OutputGroup属性kalmf.帮助您跟踪哪些输入和输出对应于哪个信号。
对于状态和输出方程kalmf.,请参阅连续时间估计和离散时间估计.
筛选器增益,作为大小数组返回Nx-经过-Ny, 在哪里Nx工厂中的状态数和Ny为植物产出的数量。在连续时间内,卡尔曼滤波器的状态方程是:
x ^ ˙ = 一个 x ^ + B u + l ( y − C x ^ − D u ) .
在离散时间内,状态等式是:
x ^ [ n + 1 | n ] = 一个 x ^ [ n | n − 1 ] + B u [ n ] + l ( y [ n ] − C x ^ [ n | n − 1 ] − D u [ n ] ) .
了解这些表达方式的细节l计算,看连续时间估计和离散时间估计.
稳态错误考罗德,返回Nx-经过-Nx, 在哪里Nx是工厂中的州数量。卡尔曼滤波器计算最小化的状态估计P.连续时间下,稳态误差协方差为:
P = 林 t → ∞ E ( { x − x ^ } { x − x ^ } T ) .
在离散时间内,通过以下方式提供稳态错误考核:
P = 林 n → ∞ E ( { x [ n ] − x ^ [ n | n − 1 ] } { x [ n ] − x ^ [ n | n − 1 ] } T ) , Z = 林 n → ∞ E ( { x [ n ] − x ^ [ n | n ] } { x [ n ] − x ^ [ n | n ] } T ) .
有关这些数量的更多详细信息以及如何卡尔曼使用它们,看连续时间估计和离散时间估计.
离散时间系统状态估计器的创新收益,以数组的形式返回。
Mx和我的只有当类型='当前',这是离散时间系统的默认估计器。连续时间SYS.或类型='延迟',然后Mx = My = [].
='当前'
='延迟'
Mx = My = []
为了“当前”类型估计量,Mx和我的更新方程中的创新获取:
x ^ [ n | n ] = x ^ [ n | n − 1 ] + 米 x ( y [ n ] − C x ^ [ n | n − 1 ] − D u [ n ] )
y ^ [ n | n ] = C x ^ [ n | n − 1 ] + D u [ n ] + 米 y ( y [ n ] − C x ^ [ n | n − 1 ] − D u [ n ] )
当噪声输入没有直接馈通时w到工厂产出y(也就是说,当H= 0,看到离散时间估计), 然后 米 y = C 米 x ,输出估计简化为 y ^ [ n | n ] = C x ^ [ n | n ] + D u [ n ] .
阵列的尺寸Mx和我的取决于尺寸SYS.如下。
Mx- - - - - -Nx-经过-Ny, 在哪里Nx工厂中的状态数和Ny为输出数。
我的- - - - - -Ny-经过-Ny.
有关如何卡尔曼获得Mx和我的,请参阅离散时间估计.
工厂和噪声数据必须满足:
(C,一个)为可检测的,其中:
R ¯ > 0 和 [ 问 ¯ N ¯ ; N ¯ ” R ¯ ] ≥ 0 , 在哪里
[ 问 ¯ N ¯ N ¯ ” R ¯ ] = [ G 0 H 我 ] [ 问 N N ” R ] [ G 0 H 我 ] ” .
( 一个 − N ¯ R ¯ − 1 C , 问 ¯ − N ¯ R ¯ − 1 N ¯ T ) 在连续时间或离散时间的单位圆上没有在假想轴上没有无法控制模式。
考虑一个具有已知输入的连续时间设备u,白过程噪声w,白测量噪声v:
噪声信号w和v满足:
E ( w ) = E ( v ) = 0 , E ( w w T ) = 问 , E ( v v T ) = R , E ( w v T ) = N
卡尔曼滤波器或卡尔曼估计器计算了一个国家估计 x ^ ( t ) 最小化稳态错误协方差:
卡尔曼滤波器的状态和输出方程如下:
d x ^ d t = 一个 x ^ + B u + l ( y − C x ^ − D u ) [ y ^ x ^ ] = [ C 我 ] x ^ + [ D 0 ] u
获取过滤器增益l,卡尔曼解决代数Riccati方程以获得
l = ( P C T + N ¯ ) R ¯ − 1
在哪里
R ¯ = R + H N + N T H T + H 问 H T N ¯ = G ( 问 H T + N )
P解相应的代数Riccati方程。
估计器使用已知的输入u和测量y生成输出和状态估计 y ^ 和 x ^ .
离散植物是:
在离散时间,噪声信号w和v满足:
E ( w [ n ] w [ n ] T ) = 问 , E ( v [ n ] v [ n ] T ) = R , E ( w [ n ] v [ n ] T ) = N
离散时间估计器具有以下状态等式:
卡尔曼求解一个离散Riccati方程,得到增益矩阵l:
l = ( 一个 P C T + N ¯ ) ( C P C T + R ¯ ) − 1
卡尔曼可以计算两种离散时间卡尔曼估计量,当前估计量(类型=“当前”)和延迟估计(类型='延迟').
当前估计-生成输出估计 y ^ [ n | n ] 和国家估计数 x ^ [ n | n ] 使用所有可用的测量值 y [ n ] .这个估计量有输出方程
[ y ^ [ n | n ] x ^ [ n | n ] ] = [ ( 我 − 米 y ) C 我 − 米 x C ] x ^ [ n | n − 1 ] + [ ( 我 − 米 y ) D 米 y − 米 x D 米 x ] [ u [ n ] y [ n ] ] .
创新收益的地方米x和米y被定义为:
米 x = P C T ( C P C T + R ¯ ) − 1 , 米 y = ( C P C T + H 问 H T + H N ) ( C P C T + R ¯ ) − 1 .
因此,米x更新国家估计 x ^ [ n | n − 1 ] 使用新的测量方法 y [ n ] :
同样的,米y计算更新的输出估计值:
什么时候H= 0,那么 米 y = C 米 x ,输出估计简化为 y ^ [ n | n ] = C x ^ [ n | n ] + D u [ n ] .
延迟估算器 - 生成输出估计 y ^ [ n | n − 1 ] 和国家估计数 x ^ [ n | n − 1 ] 使用的测量值仅为yv[n1]。这个估计量有输出方程:
[ y ^ [ n | n − 1 ] x ^ [ n | n − 1 ] ] = [ C 我 ] x ^ [ n | n − 1 ] + [ D 0 0 0 ] [ u [ n ] y [ n ] ]
延迟估计器更容易部署在控制回路中。
您有此示例的修改版本。您是否希望使用您的编辑打开此示例?
你点击一个链接对应于这个MATLAB命令:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,以便在可用的地方进行翻译的内容,并查看本地活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系您当地的办公室