主要内容

卡尔曼

设计Kalman滤波器进行状态估计

    描述

    示例

    [kalmf.L.P.] =卡尔曼(SYS.问:R.N给定植物模型创建卡尔曼过滤器SYS.和噪声协方差数据问:R.,和N。该功能计算Kalman滤波器,用于卡尔曼估计器,其配置如下图所示。

    卡尔曼估计包括植物SYS和卡尔曼滤波器Kalmf。该工厂已输入U,噪声输入W,输出YT。卡尔曼滤波器作为输入W和嘈杂的工厂输出Y = YT + v。过滤器输出是Y帽,估计的真植物输出和X-HAT,估计状态值。

    你构建模型SYS.具有已知的投入和白色过程噪声输入W.,这样W.包括最后一个NW.输入到SYS.。“真实”植物产量yT.包括所有输出SYS.。您还提供了噪声协方差数据问:R.,和N。返回的卡尔曼过滤器kalmf.是一种呈现已知输入的状态空间模型和嘈杂的测量y并产生估计 y ^ 真正的植物产量和估计 X. ^ 植物状态。卡尔曼也返回卡尔曼收益L.和稳态错误协方差矩阵P.

    示例

    [kalmf.L.P.] =卡尔曼(SYS.问:R.N传感器众所周知当存在以下一个或两个条件时计算卡尔曼滤波器。

    • 并非所有产出SYS.测量。

    • 干扰投入W.不是最后的输入SYS.

    索引矢量传感器指定哪些输出SYS.测量。这些产出弥补了y。索引矢量众所周知指定已知哪些输入(确定性)。已知的输入弥补。当卡尔曼命令采用剩余的输入SYS.是随机输入W.

    [kalmf.L.P.MX.Z.我的] =卡尔曼(___还返回创新收益MX.我的和稳态错误的考核P.Z.对于离散时间SYS.。您可以使用此语法与任何先前的输入参数组合。

    [kalmf.L.P.MX.Z.我的] =卡尔曼(___type指定离散时间的估计类型SYS.

    • 键入='current'- 计算输出估计 y ^ [ N | N ] 和国家估计数 X. ^ [ N | N ] 使用所有可用的测量值 y [ N ]

    • 键入='延迟'- 计算输出估计 y ^ [ N | N - 1 ] 和国家估计数 X. ^ [ N | N - 1 ] 只使用测量值 y [ N - 1 ] 。延迟估计器更容易实现内部控制循环。

    你可以使用type使用以前的输入参数组合的任何输入参数。

    例子

    崩溃

    设计具有添加性白噪声的植物的卡尔曼滤波器W.在输入和V.在输出上,如下图所示。

    假设该工厂具有以下状态空间矩阵,并且是具有未指定采样时间的离散时间工厂(ts = -1)。

    a = [1.1269 -0.4940 0.1129 1.0000 0 0 0 1.0000 0];B = [-0.3832 0.5919 0.5191];c = [1 0 0];d = 0;植物= ss(a,b,c,d,-1);Plant.Inputname =.“联合国”;plant.outputname =.'yt';

    使用卡尔曼,您必须提供模型SYS.这对噪音有一个输入W.。因此,SYS.与...不同植物,因为植物取消输入联合国= u + w。你可以构建SYS.通过为噪声输入创建求和结。

    sum = sumblk('联合国= u + w');sys = connect(植物,总和,{'U''W'},'yt');

    等效,你可以使用sys = plant * [1 1]

    指定噪声CoviRAce。由于工厂具有一个噪声输入和一个输出,因此这些值是标量。在实践中,这些值是系统中噪声源的属性,您可以通过测量或系统的其他知识来确定。对于此示例,假设两个噪声源都具有单位协方差,并且不相关(N= 0)。

    q = 1;r = 1;n = 0;

    设计过滤器。

    [kalmf,l,p] =卡尔曼(sys,q,r,n);大小(kalmf)
    具有4个输出,2个输入和3个状态的状态空间模型。

    卡尔曼过滤器kalmf.是具有两个输入和四个输出的状态空间模型。kalmf.作为输入植物输入信号和嘈杂的植物产量 y = y T. + V. 。第一个输出是估计的真实工厂输出 y 。剩下的三个产出是国家估计 X. 。检查输入和输出名称kalmf.看看怎么样卡尔曼相应地标记它们。

    kalmf.inputname.
    ans =.2x1细胞{'你'} {'yt'}
    kalmf.outputname.
    ans =.4x1细胞{'yt_e'} {'x1_e'} {'x2_e'} {'x3_e'}

    检查卡尔曼收益L.。对于有三个州的Siso植物,L.是一个三元素柱矢量。

    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.,和产量组属性kalmf.帮助您跟踪输入和输出的内容kalmf.代表。

    kalmf.inputgroup.
    ans =.结构与字段:众所周知:[11]测量:[3 4]
    kalmf.inputname.
    ans =.4x1细胞{'u1'} {'u2'} {'y1'} {'y2'}
    kalmf.outputgroup.
    ans =.结构与字段:产权:[1 2]偏见:[3 4 5 6]
    kalmf.outputname.
    ans =.6x1细胞{'y1_e'} {'y2_e'} {'x1_e'} {'x2_e'} {'x3_e'} {'x3_e'} {'x4_e'}

    因此两个已知的输入U1.U2.是前两个输入kalmf.和两个测量的输出y1.Y2.是最后两个输入kalmf.。对于输出kalmf.,前两个是估计的输出,其余四是状态估计。要使用Kalman滤波器,以类似于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.InputName = {'U1''w1''U2''w2'};sys.outputname = {'yun''ym'};

    使用卡尔曼要为此系统设计过滤器,请使用众所周知传感器输入参数,用于指定工厂的输入,并测量输出。

    已知= [1 3];传感器= [2];

    指定噪声CoviRACE并设计过滤器。

    q =眼睛(2);r = 1;n = 0;[kalmf,l,p] =卡尔曼(SYS,Q,R,N,传感器,已知);

    检查输入和输出标签kalmf.显示过滤器期望和输出返回的输入。

    kalmf.inputgroup.
    ans =.结构与字段:众所周知:[1 2]测量:3
    kalmf.inputname.
    ans =.3x1细胞{'U1'} {'U2'} {'ym'}

    kalmf.作为输入的输入两个已知的输入SYS.和嘈杂的测量输出SYS.

    kalmf.outputgroup.
    ans =.结构与字段:产权:1次间隔:[2 3 4 5]

    第一个输出kalmf.它估计了测量植物输出的真实值。剩余的输出是状态估计。

    输入参数

    崩溃

    工厂模型与过程噪声,指定为状态空间(SS.)模型。该工厂具有已知的输入和白色过程噪声输入W.。植物产出yT.不包括测量噪声。

    图示说明SYS包括植物动力学和过程噪声输入,但不是工厂输出上的添加噪声。

    您可以编写这样的工厂模型的状态空间矩阵:

    A. [ B. G. ] C. [ D. H. ]

    卡尔曼假设高斯噪音V.在输出上。因此,在连续时间内,状态空间方程卡尔曼适用于:

    X. ˙ = A. X. + B. + G. W. y = C. X. + D. + H. W. + V.

    在离散时间内,状态空间方程式是:

    X. [ N + 1 ] = A. X. [ N ] + B. [ N ] + G. W. [ N ] y [ N ] = C. X. [ N ] + D. [ N ] + H. W. [ N ] + V. [ N ]

    如果你不使用众所周知输入参数,卡尔曼使用大小问:确定哪些投入SYS.是噪声输入。在这种情况下,卡尔曼对待最后一点NW.=尺寸(q,1)输入作为噪声输入。当噪声输入W.不是最后的输入SYS.,你可以使用众所周知输入参数指定已知哪些工厂输入。卡尔曼将剩余的输入视为随机性。

    有关植物矩阵属性的额外约束,请参阅限制

    过程噪声协方差,指定为标量或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通过测量或对系统的噪声属性进行教育猜测。

    测量输出SYS.,指定为识别哪个输出的指标向量SYS.测量。例如,假设您的系统有三个输出,但仅测量其中两个,对应于第一和第三输出SYS.。在这种情况下,设置传感器= [1 3]

    已知的投入SYS.,指定为识别已知哪些输入(确定性)的索引矢量。例如,假设您的系统有三个输入,但只知道第一和第二输入。在这种情况下,设置已知= [1 2]卡尔曼解释任何剩余的投入SYS.是随机的。

    为计算的离散时间估计器类型,指定为'当前'或者'延迟'。此输入仅适用于离散时间SYS.

    • '当前'- 计算输出估计 y ^ [ N | N ] 和国家估计数 X. ^ [ N | N ] 使用所有可用的测量值 y [ N ]

    • '延迟'- 计算输出估计 y ^ [ N | N - 1 ] 和国家估计数 X. ^ [ N | N - 1 ] 只使用测量值 y [ N - 1 ] 。延迟估计器更容易实现内部控制循环。

    有关如何的详细信息卡尔曼计算当前和延迟估计,请参阅离散时间估计

    输出参数

    崩溃

    卡尔曼估算器或卡尔曼滤波器,作为状态空间返回(SS.)模型。生成的估计器有输入 [ ; y ] 和产出 [ y ^ ; X. ^ ] 。换句话说,kalmf.作为输入植物输入和嘈杂的植物产量y,并产生输出估计无辐射植物输出 y ^ 和估计的状态值 X. ^

    显示带有输入u和y的卡尔曼滤波器的图表和输出y帽和x帽。

    卡尔曼自动设置InputName.outputName.InputGroup.,和产量组属性kalmf.帮助您跟踪哪些输入和输出对应于哪个信号。

    对于状态和输出方程kalmf.,看看连续时间估计离散时间估计

    过滤器收益,返回为尺寸数组NX.-Ny,在哪里NX.是植物中的州数量Ny是植物产出的数量。在连续时间内,卡尔曼滤波器的状态方程是:

    X. ^ ˙ = A. X. ^ + B. + L. y - C. X. ^ - D.

    在离散时间内,状态等式是:

    X. ^ [ N + 1 | N ] = A. X. ^ [ N | N - 1 ] + B. [ N ] + L. y [ N ] - C. X. ^ [ N | N - 1 ] - D. [ 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.我的只有在何时相关type='当前',这是离散时间系统的默认估计器。连续时间SYS.或者type='延迟'那么mx = my = []

    对于'当前'键入估计器,MX.我的更新方程中的创新获取:

    X. ^ [ N | N ] = X. ^ [ N | N - 1 ] + m X. y [ N ] - C. X. ^ [ N | N - 1 ] - D. [ N ]

    y ^ [ N | N ] = C. X. ^ [ N | N - 1 ] + D. [ N ] + m y y [ N ] - C. X. ^ [ N | N - 1 ] - D. [ N ]

    当没有从噪声输入中直接馈通时W.到工厂产出y(也就是说,何时H.= 0,见离散时间估计那个) m y = C. m X. ,输出估计简化了 y ^ [ N | N ] = C. X. ^ [ N | N ] + D. [ N ]

    阵列的尺寸MX.我的取决于尺寸SYS.如下。

    • MX.-NX.-Ny,在哪里NX.是植物中的州数量Ny是输出的数量。

    • 我的-Ny-Ny

    有关如何的详细信息卡尔曼获得MX.我的,看看离散时间估计

    限制

    植物和噪声数据必须满足:

    • C.A.)是可检测的,其中:

    • R. ¯ > 0. [ 问: ¯ N ¯ ; N ¯ ' R. ¯ ] 0. ,在哪里

      [ 问: ¯ N ¯ N ¯ ' R. ¯ ] = [ G. 0. H. ] [ 问: N N ' R. ] [ G. 0. H. ] '

    • A. - N ¯ R. ¯ - 1 C. 问: ¯ - N ¯ R. ¯ - 1 N ¯ T. 在连续时间或离散时间的单位圆上没有在假想轴上没有无法控制模式。

    算法

    崩溃

    连续时间估计

    考虑具有已知输入的连续时间工厂,白色过程噪音W.和白色测量噪声V.

    X. ˙ = A. X. + B. + G. W. y = C. X. + D. + H. 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. 最小化稳态错误协方差:

    P. = T. E. { X. - X. ^ } { X. - X. ^ } T.

    卡尔曼滤波器具有以下状态和输出方程式:

    D. X. ^ D. T. = A. X. ^ + B. + L. y - C. X. ^ - D. [ y ^ X. ^ ] = [ C. ] X. ^ + [ D. 0. ]

    获取过滤器增益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方程。

    估算器使用已知的输入和测量y生成输出和状态估计 y ^ X. ^

    离散时间估计

    离散植物是:

    X. [ N + 1 ] = A. X. [ N ] + B. [ N ] + G. W. [ N ] y [ N ] = C. X. [ N ] + D. [ N ] + H. W. [ N ] + V. [ N ]

    在离散时间内,噪声信号W.V.满足:

    E. W. [ N ] W. [ N ] T. = 问: E. V. [ N ] V. [ N ] T. = R. E. W. [ N ] V. [ N ] T. = N

    离散时间估计器具有以下状态等式:

    X. ^ [ N + 1 | N ] = A. X. ^ [ N | N - 1 ] + B. [ N ] + L. y [ N ] - C. X. ^ [ N | N - 1 ] - D. [ N ]

    卡尔曼解决离散的Riccati方程,以获得增益矩阵L.

    L. = A. P. C. T. + N ¯ C. P. C. T. + R. ¯ - 1

    在哪里

    R. ¯ = R. + H. N + N T. H. T. + H. 问: H. T. N ¯ = G. 问: H. T. + N

    卡尔曼可以计算离散时间卡尔曼估计器的两个变体,当前估计器(type='当前')和延迟估计(type='延迟')。

    • 当前估算器 - 生成输出估计 y ^ [ N | N ] 和国家估计数 X. ^ [ N | N ] 使用所有可用的测量值 y [ N ] 。该估计器具有输出方程

      [ y ^ [ N | N ] X. ^ [ N | N ] ] = [ - m y C. - m X. C. ] X. ^ [ N | N - 1 ] + [ - m y D. m y - m X. D. m X. ] [ [ N ] y [ N ] ]

      创新收益的地方mX.my被定义为:

      m X. = P. C. T. C. P. C. T. + R. ¯ - 1 m y = C. P. C. T. + H. 问: H. T. + H. N C. P. C. T. + R. ¯ - 1

      因此,mX.更新国家估计 X. ^ [ N | N - 1 ] 使用新测量 y [ N ]

      X. ^ [ N | N ] = X. ^ [ N | N - 1 ] + m X. y [ N ] - C. X. ^ [ N | N - 1 ] - D. [ N ]

      同样地,my计算更新的输出估计值:

      y ^ [ N | N ] = C. X. ^ [ N | N - 1 ] + D. [ N ] + m y y [ N ] - C. X. ^ [ N | N - 1 ] - D. [ N ]

      什么时候H.= 0,然后 m y = C. m X. ,输出估计简化了 y ^ [ N | N ] = C. X. ^ [ N | N ] + D. [ N ]

    • 延迟估算器 - 生成输出估计 y ^ [ N | N - 1 ] 和国家估计数 X. ^ [ N | N - 1 ] 只使用测量值yV.[N-1]。该估算器具有输出方程式:

      [ y ^ [ N | N - 1 ] X. ^ [ N | N - 1 ] ] = [ C. ] X. ^ [ N | N - 1 ] + [ D. 0. 0. 0. ] [ [ N ] y [ N ] ]

      延迟估计器更易于部署内部控制循环。

    在R2006A之前介绍