设为首页收藏本站|繁體中文 快速切换版块

 找回密码
 立即加入
搜索
查看: 655|回复: 2

扩展卡尔曼滤波小程序

[复制链接]
  • TA的每日心情
    郁闷
    2018-5-7 15:44
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    累计签到:10 天
    连续签到:1 天
    发表于 2017-4-5 11:56:50 | 显示全部楼层 |阅读模式
    电子图书
    电子图书名: 扩展卡尔曼滤波小程序
    编者: H
    内容简介: 简单的卡尔曼滤波程序
    所属专业方向: matlab
    出版社:
    来源:

    马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!

    您需要 登录 才可以下载或查看,没有账号?立即加入

    ×
    % function  EXT Kalman Filtering3 Z; Z5 t6 h/ z0 ?5 i* N
    % vx[n]=vx[n-1]+ux[n]3 L! c! T7 d  M
    % vy[n]=vy[n-1]+uy[n]
    . W% p7 d' u5 x2 `. N6 `& T% rx[n]=rx[n-1]+vx[n-1]*t
    8 C7 o# |& C9 P+ Y8 _& R& n* y% ry[n]=ry[n-1]+vy[n-1]*t% D, c; P6 S3 f1 o
    % s[n]=[rx[n];ry[n];vx[n];vy[n]]) T$ R+ U" o6 v
    % A=[1 0 t 0;0 1 0 t;0 0 1 0;0 0 0 1]# R' I- u' l2 n) Q- F, }' \
    % s[n-1]=[rx[n-1];ry[n-1];vx[n-1];vy[n-1]]
    5 f) _0 J5 W2 Z) M+ ]4 [% u[n]=[0;0;ux[n];uy[n]]
    / |5 ^# x, e  d" V8 {! z; Z%       s[n]=As*[n-1]+u[n], V" w8 }* v" m, t6 K9 e4 G; @) {
    %       x[n]=h(s[n])+w[n]
    . E7 Y1 M: ]) c
    4 Z  ]$ X: L& ^) X9 F0 t$ I% initialization
    # d( @! Y0 v/ j! o; R: i9 cclear;
    1 |, W: f+ I& t+ mn=100;  z* @1 S8 q3 Z% \# I" s: C! E( ?
    A=[1 0 1 0;0 1 0 1;0 0 1 0;0 0 0 1];5 M7 A. K: ]& l
    rx=zeros(1,n); % 实际位置  r' e2 w. Y0 [! M0 Y3 F! N
    ry=zeros(1,n); % 实际位置
    - D# N+ k' {, p' K: tvx=zeros(1,n); % 实际速度
    9 e$ W4 a! @9 ^* T2 x! ~+ Wvy=zeros(1,n); % 实际速度
    ( {; c7 W/ k/ D: @" {rxe=zeros(1,n); % 精确位置5 `( e+ V: [% L' [' g4 b+ f) S
    rye=zeros(1,n); % 精确位置
    2 C' O' C0 O0 `, n7 nvxe=zeros(1,n); % 精确速度8 N2 X* m1 j8 J& B
    vye=zeros(1,n); % 精确速度
    - H8 \/ i9 e3 m7 D3 ?rx(1,1)=10; % 位置初始+ S7 S- k4 |" R* Z' w+ N+ H# t
    ry(1,1)=-5; % 位置初始: d; E# e: }1 r  `5 c
    vx(1,1)=-0.2; % 速度初始
    % \$ V% J6 e) wvy(1,1)=0.2; % 速度初始* Z. Q! }- W# _$ f, f2 a
    rxe(1,1)=10;3 p# W$ B( [( I  q1 j
    rye(1,1)=-5;
    + F  L: k7 F$ {0 f4 yvxe(1,1)=-0.2;
    6 c, O% d) e- Dvye(1,1)=0.2;5 |. q9 L/ ~8 G
    s=[rx;ry;vx;vy];
    ! k2 X2 R# Q! ese=[rxe;rye;vxe;vye];
    ! I/ h) W1 f# i( w: B3 Or=zeros(1,n);  ]. W# m" {9 K. i/ Y. l3 H& u1 I* O
    b=zeros(1,n);
    # m9 e, A% H: y" ~6 lrn=zeros(1,n);
    2 |  @0 t! r9 D. \re=zeros(1,n);$ m' @- |; G% n! F7 @: V7 X! B
    bn=zeros(1,n);# a$ C+ ?) B+ F$ a" g6 y2 T
    x=[rn;bn];& i/ |- ?2 B: Y  n
    H=zeros(2,4,n);% D/ x0 @$ K6 d9 [: M

    1 C- e4 L- N# f4 H5 h( n" k- cux=sqrt(0.00001)*randn(1,n);
    5 h2 }9 L( p5 U0 A% c3 `uy=sqrt(0.00001)*randn(1,n);
    1 r# R4 x; z& l; `- Ywr=sqrt(0.001)*randn(1,n);
    & P. x1 J6 d$ o: cwb=sqrt(0.0001)*randn(1,n);1 r* [, |. ^+ f; R

    9 B2 y* L# E2 y, c, E6 BQ=[0 0 0 0;0 0 0 0;0 0 cov(ux) 0;0 0 0 cov(uy)]; % 过程噪声矩阵8 t& N" B4 R* L2 E1 {
    C=[cov(wr) 0; 0 cov(wb)]; % 观测噪声矩阵
    - w! q" P& h- ]9 X4 D% ?
    / E4 H6 S: S+ s- uss=zeros(4,n);% 精确值
    " X3 n- v5 j( w4 F2 W/ `2 R5 _" xsn=zeros(4,n); % 估计修正值2 b2 c! m. g( a" |
    sn(:,1)=sn(:,1)+[15;5;0;0]; % 估计修正初始值
    0 }5 o2 l3 Y  ~9 A: Gss=zeros(4,n); % 一步预测- c8 P. M+ a- w' l$ _/ R. a: ^& i
    hs=zeros(2,n); % 观测值预测2 D- ~. D# G- o! L+ z
    inn=zeros(2,n); % 新息+ W  g# @- O. Q/ B+ Y
    M=zeros(4,4,n); % 估计均方误差
    ( [/ K6 J$ b# c* V4 `1 Y0 s. xM(:,:,1)=M(:,:,1)+[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1]; % 估计均方误差初始值
    2 c9 j; {: D4 G# q% F6 X* M) IMM=zeros(4,4,n); % 一步预测均方误差2 c* Z5 Q+ T5 G* z5 p2 b
    K=zeros(4,2,n); % 卡尔曼增益: X; s' Y) l" E1 c5 P3 u) L

      T9 `  P1 u. C& e; R' D% kalman filtering$ k+ v9 t. ^6 Q# u

    $ q, E1 d5 Y! D2 `for t=1:n-1
    ) f! C) b, l5 l" ~) @  m7 V( l%            s[n]=As*[n-1]+u[n]+ Q- [* i4 y, W4 ~1 N
    %            x[n]=h(s[n])+w[n]! c4 F' V% m& W& Y) B1 \# J
    % S2 t6 G- o1 ^% K" a
        vx(1,t+1)=vx(1,t)+ux(1,t+1); % 速度过程方程) X$ D. H3 `- @; f+ B/ ]4 `
        vy(1,t+1)=vy(1,t)+uy(1,t+1); % 速度过程方程! ^& \$ W1 x, x8 z/ b0 b
        rx(1,t+1)=rx(1,t)+vx(1,t); % 位置过程方程! y% @9 R. n% L
        ry(1,t+1)=ry(1,t)+vy(1,t); % 位置过程方程- z8 W( w1 Q& O! R6 K; e
        s(:,t+1)=[rx(1,t+1);ry(1,t+1);vx(1,t+1);vy(1,t+1)]; % 过程矩阵,维数4*10 _3 b" D$ G' f; ?
    ) R; b! n' }# D5 S
        vxe(1,t+1)=vxe(1,t); % 理论精确值
    $ D/ M- s2 b9 G5 B+ ~* V    vye(1,t+1)=vye(1,t); % 理论精确值9 U& C" C6 F5 W9 Z9 A- a
        rxe(1,t+1)=rxe(1,t)+vxe(1,t); % 理论精确值# F* [2 L) s( h; }# M
        rye(1,t+1)=rye(1,t)+vye(1,t); % 理论精确值
    ! f1 S3 h& w! y: Z$ P    se(:,t+1)=[rxe(1,t+1);rye(1,t+1);vxe(1,t+1);vye(1,t+1)]; % 过程矩阵,维数4*1" V; f5 U! ?, z! V' Y: X
    ! l3 @8 ?. y2 \5 M* d; b
        r(1,t+1)=(rx(1,t+1)^2+ry(1,t+1)^2)^(1/2); % 理论测量距离(含测量误差)
    / V: B3 O+ J9 F. B; H. S" |6 H& M    b(1,t+1)=atan(ry(1,t+1)/rx(1,t+1)); % 理论测量方位(含测量误差)
    # H( p& [( T1 ]. |    rn(1,t+1)=r(1,t+1)+wr(1,t+1); % 实际测量距离
    1 P: C' h0 ^9 G. i9 S5 j  Z. N. v    re(1,t+1)=(rxe(1,t+1)^2+rye(1,t+1)^2)^(1/2); % 理论测量距离(含测量误差)9 r0 M! ~! V5 v2 p4 B: ]
        bn(1,t+1)=b(1,t+1)+wb(1,t+1); % 实际测量方位4 q# c, Q/ c  k# b7 f
        x(:,t+1)=[rn(1,t+1);bn(1,t+1)]; % 观测矩阵,维数2*1
    3 h+ s7 \, P: @% G5 \
    & O' m" o+ Q4 c  R    % 对观测方程求导,得到雅可比矩阵H,维数2*4
    ) N! W# h& K' ~    H(:,:,t+1)=[rx(1,t+1)/((rx(1,t+1)^2+ry(1,t+1)^2)^(1/2)) ry(1,t+1)/((rx(1,t+1)^2+ry(1,t+1)^2)^(1/2)) 0 0;-ry(1,t+1)/(rx(1,t+1)^2+ry(1,t+1)^2) rx(1,t+1)/(rx(1,t+1)^2+ry(1,t+1)^2) 0 0];* Z3 Y7 h; p& J, q( P9 S
    ' s3 t1 K' j2 c  d! z$ |$ i  k8 _
    , y  t. ^: e* T
        MM(:,:,t+1)=A*M(:,:,t)*A'+Q; % 一步预测均方误差+ G1 t* h7 c2 t) U- V
        K(:,:,t+1)=MM(:,:,t+1)*H(:,:,t+1)'/(C+H(:,:,t+1)*MM(:,:,t+1)*H(:,:,t+1)'); % 卡尔曼增益
    . ^& a, Y+ _0 _    M(:,:,t+1)=(eye(4)-K(:,:,t+1)*H(:,:,t+1))*MM(:,:,t+1);% 估计均方误差
    ' }4 M9 h! a' R    ss(:,t+1)=A*sn(:,t); % 一步预测
    " Z& ~- q3 Z* J2 G    hs(:,t+1)=[((ss(1,t+1))^2+(ss(2,t+1))^2)^(1/2);atan(ss(2,t+1)/ss(1,t+1))]; % 观测值预测
    7 `* z- p5 G6 b4 G- |. d5 W    inn(:,t+1)=x(:,t+1)-hs(:,t+1); % 新息
    7 K4 n$ U+ K0 G0 S8 w" o; _# a    sn(:,t+1)=ss(:,t+1)+K(:,:,t+1)*inn(:,t+1); % 预测修正0 V4 }: y- j4 z7 V  F1 x) r
    end' w  `2 {6 }: }
    & _$ Y! _5 Q. Q2 t: E; l
    subplot(2,1,1);! X9 D( |3 t1 C; o& {& g
    plot(sn(1,:),sn(2,:)); % kalman估计值2 d& f* m' p2 n6 |2 }+ I, Y# ]3 f
    hold on;
    * R% ], T  j7 h, _plot(se(1,:),se(2,:),'-r'); % 理论精确值
    6 a2 {4 v0 L; z) w5 Q/ a/ o& Y" L% V3 u' J
    subplot(2,1,2); , h; d- k0 M, y  @! Y
    plot(rn); % 实际测量距离$ y/ J1 z) F  G5 u
    hold on;
      [4 x9 T+ g6 b* R4 h0 [plot(re,'-g'); % 理论精确值' S3 s5 W. F( y% p! i9 p: Z8 ?( Q9 C
    $ ?8 Q( @+ \% T3 p9 s  Z
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    郁闷
    2018-5-7 15:44
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    累计签到:10 天
    连续签到:1 天
     楼主| 发表于 2017-4-5 11:58:00 | 显示全部楼层
    这是一个位置和速度跟踪的小程序,感兴趣的可以看一下
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    [发帖际遇]: 帮助老师傅注册上研学论坛,HYSYYRPS受奖励威望5 点. 幸运榜 / 衰神榜
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
    回复 推荐 踩下

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-5-7 15:44
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    累计签到:10 天
    连续签到:1 天
     楼主| 发表于 2017-4-5 11:59:36 | 显示全部楼层
    有没有同学是电力系统方向的,有的话,有没有做电力系统状态估计方向的,可以交流下
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
    回复 推荐 踩下

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即加入

    本版积分规则

    招聘斑竹

    小黑屋|手机版|APP下载(beta)|Archiver|电力研学网 ( 赣ICP备12000811号-1|赣公网安备36040302000210号 )|网站地图

    GMT+8, 2025-11-27 17:12

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表