卡尔曼
状态估计的卡尔曼滤波器设计
语法
描述
例子
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 =带有字段的结构:KnownInput:[1 2]测量:[3 4]
kalmf。我nputName
ans =4 x1细胞{'u1'} {'u2'} {'y1'} {'y2'}
kalmf。OutputGroup
ans =带有字段的结构:OutputEstimate: [1 2] StateEstimate: [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”};
使用卡尔曼
要为该系统设计过滤器,请使用已知的
而且传感器
输入参数,以指定对工厂的哪些输入是已知的,哪些输出是测量的。
已知= [1 3];传感器= [2];
指定噪声协方差并设计滤波器。
Q =眼睛(2);R = 1;N = 0;[kalmf,L,P] = kalman(sys,Q,R,N,传感器,已知);
的输入和输出标签kalmf
显示过滤器期望的输入和它返回的输出。
kalmf。我nputGroup
ans =带有字段的结构:[1 2]测量:3
kalmf。我nputName
ans =3 x1细胞{'u1'} {'u2'} {'ym'}
kalmf
取的两个已知输入作为输入sys
和噪声测量输出sys
.
kalmf。OutputGroup
ans =带有字段的结构:OutputEstimate: 1 StateEstimate: [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,卡尔曼
求解一个代数里卡提方程,得到
在哪里
P求解相应的代数里卡提方程。
估计器使用已知的输入u还有测量y生成输出和状态估计 而且 .
离散时间估计
离散植物由:
在离散时间中,噪声信号w而且v满足:
离散时间估计器的状态方程如下:
卡尔曼
求解离散Riccati方程得到增益矩阵l:
在哪里
卡尔曼
可以计算离散时间卡尔曼估计量的两个变体,即当前估计量(类型
=“当前”
)和延迟估计量(类型
=“延迟”
).
当前估计器——生成输出估计 以及各州的估算 使用所有可用的测量方法 .这个估计量有输出方程
哪里有创新米x而且米y定义为:
因此,米x更新状态估计 使用新的测量方法 :
同样的,米y计算更新后的输出估计:
当H= 0,则 ,则输出估计化简为 .
延迟估计器——生成输出估计 以及各州的估算 只使用到yv[n1]。该估计器的输出方程为:
延迟估计器更容易部署在控制循环中。
版本历史
第一MATLAB
Hai fatto clic su uncollegamento che对应一个任务的MATLAB:
Esegui il comando inserendolo nella finestra di comando MATLAB。我浏览器网页不支持我的MATLAB。万博1manbetx
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。