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

 找回密码
 立即加入
搜索
查看: 697|回复: 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 Filtering- S6 H  D9 r* V9 l/ l
    % vx[n]=vx[n-1]+ux[n]) @  |& }2 b/ H. V" m0 G$ K
    % vy[n]=vy[n-1]+uy[n]
    . p* @. S: I0 _+ o3 T% V% rx[n]=rx[n-1]+vx[n-1]*t
    0 ?' h8 h5 d9 }$ _+ O* N% ry[n]=ry[n-1]+vy[n-1]*t
      d9 H; O! n  G7 _) x: L% s[n]=[rx[n];ry[n];vx[n];vy[n]]
    & D' _% u- G  S2 a/ r% A=[1 0 t 0;0 1 0 t;0 0 1 0;0 0 0 1]" ]( e, ^  @( y  F' n
    % s[n-1]=[rx[n-1];ry[n-1];vx[n-1];vy[n-1]]. T' S5 j: N( T' Y4 m0 Z1 a
    % u[n]=[0;0;ux[n];uy[n]]
    ; B  J. t% D2 P, q9 C%       s[n]=As*[n-1]+u[n]' d. A$ @3 }- L
    %       x[n]=h(s[n])+w[n]* m4 @" |# u1 s: Q

    ) a; X7 V- a! Z# o3 g4 j, |: y% initialization
    ! b6 j& ?! }7 [6 Rclear;( \" g0 T# t( g
    n=100;( K. ^: v( L4 N0 D6 b
    A=[1 0 1 0;0 1 0 1;0 0 1 0;0 0 0 1];
    9 K$ m3 h6 b" a) E$ B( Y2 d3 Vrx=zeros(1,n); % 实际位置( z1 N+ w% Y3 K& ~7 S( z) R8 b
    ry=zeros(1,n); % 实际位置
    ' w. P$ m# i/ F6 ]vx=zeros(1,n); % 实际速度
    * }- Z# }5 P% h: gvy=zeros(1,n); % 实际速度# e! o, p0 m/ z. W; D, h
    rxe=zeros(1,n); % 精确位置
    + N5 _+ V$ k+ e& x% Rrye=zeros(1,n); % 精确位置( P. w7 @4 Q# w! M1 g1 L
    vxe=zeros(1,n); % 精确速度
    $ k2 e/ c9 G$ F# K0 _) `vye=zeros(1,n); % 精确速度
    " ?0 @* u. ~) h9 Drx(1,1)=10; % 位置初始
    ; t! R9 D5 @$ xry(1,1)=-5; % 位置初始8 h) f7 k1 f9 S
    vx(1,1)=-0.2; % 速度初始
    + c6 k4 A' o. {5 E/ s& B8 qvy(1,1)=0.2; % 速度初始! i% ?( l0 i! l% X
    rxe(1,1)=10;
    : Z! H' O, C+ p% x% o/ frye(1,1)=-5;
    4 ], C5 @: _* N0 N; O" m" Cvxe(1,1)=-0.2;" m; |0 \1 M9 V
    vye(1,1)=0.2;/ j" d3 E7 g. s- @9 x2 X
    s=[rx;ry;vx;vy];0 {- I* t7 X: @& B# Z
    se=[rxe;rye;vxe;vye];8 f7 \( h  u  r/ v
    r=zeros(1,n);
    : L4 j3 B2 J7 c5 Pb=zeros(1,n);
    , u% |& Q! b: [. Q  z3 Frn=zeros(1,n);3 _7 i. e# ]5 |3 R2 |3 [* R6 M
    re=zeros(1,n);6 T* e- d5 z: [( x2 E
    bn=zeros(1,n);
    7 |, f' v: p8 M& j  Rx=[rn;bn];
    ; l$ b; E& N# _/ C3 T6 j8 `H=zeros(2,4,n);/ J6 b: S/ p8 O2 a6 w

    1 [* e& H! `( @3 l/ xux=sqrt(0.00001)*randn(1,n);
    8 w( x, h9 L$ ]% v1 ]uy=sqrt(0.00001)*randn(1,n);- g; J5 q4 n! x1 s" D( }
    wr=sqrt(0.001)*randn(1,n);
    8 R# w* o. Y6 Hwb=sqrt(0.0001)*randn(1,n);
    $ ~3 Y" V* [7 F* f4 P. e- \% ~3 Q: p6 {! u* b* ?( X
    Q=[0 0 0 0;0 0 0 0;0 0 cov(ux) 0;0 0 0 cov(uy)]; % 过程噪声矩阵
    2 T; D: G$ U: e& ~C=[cov(wr) 0; 0 cov(wb)]; % 观测噪声矩阵
    + V8 z/ @( |, T; {. c4 e" P
    , K; d5 N( K! e6 x) o' K0 Qss=zeros(4,n);% 精确值
    6 @7 ?3 Y/ `, G8 ?$ T/ G+ G" U/ Dsn=zeros(4,n); % 估计修正值# E, T& N0 C( D4 W( D
    sn(:,1)=sn(:,1)+[15;5;0;0]; % 估计修正初始值: C7 z1 H4 r% }$ V
    ss=zeros(4,n); % 一步预测$ W) ]& \' t9 [
    hs=zeros(2,n); % 观测值预测
    5 C! y% D# \- w8 O+ Xinn=zeros(2,n); % 新息0 r% R6 @, \! ]1 r* H8 {" X% s
    M=zeros(4,4,n); % 估计均方误差
    9 W! B; f, |8 a% Q6 T; g+ VM(:,:,1)=M(:,:,1)+[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1]; % 估计均方误差初始值/ Q/ b; D, H* G4 v' e  v5 ~
    MM=zeros(4,4,n); % 一步预测均方误差/ ]: `# z4 O. ?8 Z* c7 h. [6 {
    K=zeros(4,2,n); % 卡尔曼增益: D# s& B" ]9 S+ U' ~2 S0 c; `

    ' ~& ]+ _/ O8 R) N/ Q+ N% kalman filtering% B+ p" p+ {5 B

    8 b7 [- j! C& ifor t=1:n-14 A7 x; Z4 Z! m& r  ^  J6 |
    %            s[n]=As*[n-1]+u[n]# z- r9 j3 j' Q) f: N/ I+ K( A
    %            x[n]=h(s[n])+w[n]
    2 I9 ]+ F7 b9 C" N$ Y0 ]* S* l1 g6 R. K* m  x/ V6 F
        vx(1,t+1)=vx(1,t)+ux(1,t+1); % 速度过程方程% L# A" X( w1 ]) R
        vy(1,t+1)=vy(1,t)+uy(1,t+1); % 速度过程方程3 P3 J' N! O2 T4 ], G* X
        rx(1,t+1)=rx(1,t)+vx(1,t); % 位置过程方程
    9 B, O* [$ P3 ?! |1 q. w* O    ry(1,t+1)=ry(1,t)+vy(1,t); % 位置过程方程
    $ |1 o6 J/ I9 ?    s(:,t+1)=[rx(1,t+1);ry(1,t+1);vx(1,t+1);vy(1,t+1)]; % 过程矩阵,维数4*1& ?- t4 S$ o* x$ j

    / ?  M9 M) i+ ]( s( s+ P& [    vxe(1,t+1)=vxe(1,t); % 理论精确值
    5 M! y+ r& }% h. j& Q) q# k    vye(1,t+1)=vye(1,t); % 理论精确值8 B+ m5 D( Y9 U6 M- J, {! y) }
        rxe(1,t+1)=rxe(1,t)+vxe(1,t); % 理论精确值3 h: S# W2 q3 O% e; H
        rye(1,t+1)=rye(1,t)+vye(1,t); % 理论精确值9 S2 E3 [7 i2 H( a
        se(:,t+1)=[rxe(1,t+1);rye(1,t+1);vxe(1,t+1);vye(1,t+1)]; % 过程矩阵,维数4*1
    * z* b+ E+ y; e) f  }. R
    . p6 g/ ]2 e& A5 x8 R1 J8 q    r(1,t+1)=(rx(1,t+1)^2+ry(1,t+1)^2)^(1/2); % 理论测量距离(含测量误差)
    % h+ |5 c: o# R# O' j% d4 E    b(1,t+1)=atan(ry(1,t+1)/rx(1,t+1)); % 理论测量方位(含测量误差)/ e- B! L0 v8 n- x/ K( j
        rn(1,t+1)=r(1,t+1)+wr(1,t+1); % 实际测量距离
    5 E, G2 s  P& ]" G& f! D6 R    re(1,t+1)=(rxe(1,t+1)^2+rye(1,t+1)^2)^(1/2); % 理论测量距离(含测量误差)3 u  r6 B2 I/ h
        bn(1,t+1)=b(1,t+1)+wb(1,t+1); % 实际测量方位
    8 q0 y( y3 A  n" R/ y/ @    x(:,t+1)=[rn(1,t+1);bn(1,t+1)]; % 观测矩阵,维数2*1+ r" ~6 v! ?6 N) I) V

    $ c- ~, D! A4 p) H    % 对观测方程求导,得到雅可比矩阵H,维数2*4! i7 F" q/ U( B' l
        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];8 c$ Y& i4 j7 b0 D% Y

    - Z8 Y- m! u, O5 d# K( \
    " ]# u* A) A7 [% h2 ~" J$ C$ M    MM(:,:,t+1)=A*M(:,:,t)*A'+Q; % 一步预测均方误差
    2 @9 o4 ^6 f% h    K(:,:,t+1)=MM(:,:,t+1)*H(:,:,t+1)'/(C+H(:,:,t+1)*MM(:,:,t+1)*H(:,:,t+1)'); % 卡尔曼增益
    . y' ~: n0 X6 ~! p    M(:,:,t+1)=(eye(4)-K(:,:,t+1)*H(:,:,t+1))*MM(:,:,t+1);% 估计均方误差
    ; a; b! I: m% n8 a; m) C. W* `    ss(:,t+1)=A*sn(:,t); % 一步预测
    5 D. ^& c1 J3 i* `0 l    hs(:,t+1)=[((ss(1,t+1))^2+(ss(2,t+1))^2)^(1/2);atan(ss(2,t+1)/ss(1,t+1))]; % 观测值预测
    . \0 O; ?" Q: ]    inn(:,t+1)=x(:,t+1)-hs(:,t+1); % 新息
    & M) G4 M0 X" H    sn(:,t+1)=ss(:,t+1)+K(:,:,t+1)*inn(:,t+1); % 预测修正
    ' h7 d- B' R, ?8 ?9 X1 o9 r, |8 R" W6 Cend
    0 u1 t5 x4 g: [+ u0 D% P0 @0 k2 M$ R
    subplot(2,1,1);
    9 U) O( Q$ a- J3 ?( i6 Xplot(sn(1,:),sn(2,:)); % kalman估计值
    6 h4 N2 a3 p9 {7 a' _$ A5 p/ [hold on;+ K9 x5 t7 u2 B, I* M2 q
    plot(se(1,:),se(2,:),'-r'); % 理论精确值% J# b3 B" s; o, B  I- B5 ]/ A

    8 P" Z! v' g5 y8 j- n: Esubplot(2,1,2); 5 I  E& H; C% x' w2 M
    plot(rn); % 实际测量距离
    7 n! g. g9 m( u# G3 R9 @/ khold on;
    / @' A! t! }' F$ r, z: oplot(re,'-g'); % 理论精确值
    9 |* n. U, \$ Q1 B4 s  d$ ^. x( E" y- s0 S% q
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • 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, 2026-3-18 11:48

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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