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

 找回密码
 立即加入
搜索
查看: 831|回复: 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
    2 W6 W9 D9 n! r! B9 h% g: Z# I7 @% vx[n]=vx[n-1]+ux[n], u, b" ]; k: x1 K8 ]7 g
    % vy[n]=vy[n-1]+uy[n]
    8 j. Q' B+ o' b' n4 ~6 U, s% rx[n]=rx[n-1]+vx[n-1]*t, T7 O3 m/ m7 E; g
    % ry[n]=ry[n-1]+vy[n-1]*t
    0 U3 q- s6 g7 m6 S& r' l% s[n]=[rx[n];ry[n];vx[n];vy[n]]* `: W6 a* n5 g
    % A=[1 0 t 0;0 1 0 t;0 0 1 0;0 0 0 1]
    + |: I. _+ c1 Z3 Z9 T; I1 V% s[n-1]=[rx[n-1];ry[n-1];vx[n-1];vy[n-1]]$ N# M/ o- }: [
    % u[n]=[0;0;ux[n];uy[n]]# ^* g1 z, l! l; L
    %       s[n]=As*[n-1]+u[n]; {; W+ X* k7 ?7 ~( h' @+ Y
    %       x[n]=h(s[n])+w[n]
    - {0 h; ]7 R/ b4 ]3 P& D+ G4 P! S  V* [% ?0 e
    % initialization  I+ W( i, t: I; @0 {' P
    clear;
    8 ]+ G$ i8 k  sn=100;
    7 Q' @/ ?0 O* `8 V! p4 DA=[1 0 1 0;0 1 0 1;0 0 1 0;0 0 0 1];
    8 s# G* r; H! D! C, v- ~. d5 @9 Qrx=zeros(1,n); % 实际位置
    3 x" E  |' Y2 H) z& dry=zeros(1,n); % 实际位置+ k! i4 M2 y( Z9 B
    vx=zeros(1,n); % 实际速度
    & ^, m  y3 G/ J7 f, V5 n- {4 G' Wvy=zeros(1,n); % 实际速度
    / `8 |6 K8 J  B& }& x0 `1 Crxe=zeros(1,n); % 精确位置
    8 ~4 r$ t, W- S3 i6 zrye=zeros(1,n); % 精确位置* _6 r* f8 Y" ^; u9 t, r
    vxe=zeros(1,n); % 精确速度
    9 L; c4 y2 j/ c. y! k$ o0 v, p- Svye=zeros(1,n); % 精确速度
    2 {2 D5 F# _, Q/ ?rx(1,1)=10; % 位置初始
    : g4 D$ D: @: [  L3 [) j. nry(1,1)=-5; % 位置初始- f) v4 d( f! I3 w+ d- T) h
    vx(1,1)=-0.2; % 速度初始
    9 F. n% i* T" O* \8 gvy(1,1)=0.2; % 速度初始" m  c4 E4 G; A6 W5 S" r" ]
    rxe(1,1)=10;
    & C" Q6 }. L% E' F. I3 brye(1,1)=-5;# s$ a( N( }) v4 E" g) ]
    vxe(1,1)=-0.2;* s( E0 ]9 H) ?: \2 y3 X. Z
    vye(1,1)=0.2;
    4 H1 n) `) j+ f! w4 J1 C% Ds=[rx;ry;vx;vy];3 V* v2 }# p9 X8 f
    se=[rxe;rye;vxe;vye];1 B: r% K/ Y4 o$ u- U$ P5 y" a/ w
    r=zeros(1,n);+ N# A& B& ?8 Z% p/ J8 {0 f- T
    b=zeros(1,n);7 k' I: n+ E: `0 s6 ?
    rn=zeros(1,n);; T" B1 t8 f7 ?: F5 f4 B& J
    re=zeros(1,n);1 Y- ^/ u9 J7 ]
    bn=zeros(1,n);
    + w& ^1 O$ D1 j- dx=[rn;bn];9 ^! ]5 ]; Z3 Z/ i- U. `- a
    H=zeros(2,4,n);
    * q* T6 b) G# U7 a
    ( A& d& w$ f% G( fux=sqrt(0.00001)*randn(1,n);. K* y" \; ?; F# D) a( K6 v
    uy=sqrt(0.00001)*randn(1,n);- L; \1 T% |) D- Z% k
    wr=sqrt(0.001)*randn(1,n);
    & Y& [9 x- Y, H9 ]2 Jwb=sqrt(0.0001)*randn(1,n);
    7 J4 z0 W* y# P2 U( I2 }: v' Y% B/ N; e, Y) `) z. _5 z# \
    Q=[0 0 0 0;0 0 0 0;0 0 cov(ux) 0;0 0 0 cov(uy)]; % 过程噪声矩阵: f2 x4 Y2 b9 h! p' t
    C=[cov(wr) 0; 0 cov(wb)]; % 观测噪声矩阵4 }0 B; U, \5 x! p; ]/ }5 u5 r
    0 {* @4 r: a) Q. Y8 K. l: j' T
    ss=zeros(4,n);% 精确值3 r3 A& m6 A9 C
    sn=zeros(4,n); % 估计修正值
    7 q  a; N& O' D& O7 G7 S) m2 Bsn(:,1)=sn(:,1)+[15;5;0;0]; % 估计修正初始值
    ; c' |% O# p' ~5 [ss=zeros(4,n); % 一步预测, g6 K% r0 ?. ?6 A( o- B3 a  @4 f
    hs=zeros(2,n); % 观测值预测
    6 A; D0 \7 e  R$ P. i# b: M, K) b8 e% `inn=zeros(2,n); % 新息( V( N% R9 m8 d& c# J
    M=zeros(4,4,n); % 估计均方误差
    & i' O' E* X: ?0 Y# \M(:,:,1)=M(:,:,1)+[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1]; % 估计均方误差初始值9 U) g' K8 B2 V: l5 R/ i2 A
    MM=zeros(4,4,n); % 一步预测均方误差
    $ J* T& {8 _' d2 l+ }K=zeros(4,2,n); % 卡尔曼增益
    ! l& T* m2 n9 v: J7 V. Z7 z
    % V7 z7 u( y  W9 g% kalman filtering' U) W4 |  O, R1 U$ [3 i! [, h+ s
    ; g# j6 X+ V! _+ p
    for t=1:n-1
    " ]( r3 E' f5 f9 A%            s[n]=As*[n-1]+u[n]
    ( \$ x" t2 m" }# W5 ~%            x[n]=h(s[n])+w[n]
    ! ^( n; V1 d- K9 |% i0 |
    1 a# O- d6 x0 C8 M+ o4 }1 }: E    vx(1,t+1)=vx(1,t)+ux(1,t+1); % 速度过程方程  h7 U9 m  L9 G" Q/ K( s: Q
        vy(1,t+1)=vy(1,t)+uy(1,t+1); % 速度过程方程+ r% P# {! P; o5 ^# [( q
        rx(1,t+1)=rx(1,t)+vx(1,t); % 位置过程方程
      A0 J; E4 h4 [5 x' w6 u! n' |    ry(1,t+1)=ry(1,t)+vy(1,t); % 位置过程方程8 y! Q4 u3 v' `& L' a& G
        s(:,t+1)=[rx(1,t+1);ry(1,t+1);vx(1,t+1);vy(1,t+1)]; % 过程矩阵,维数4*19 L5 w' v& i8 `( W' z
    4 J& R, g1 U1 x; z' x
        vxe(1,t+1)=vxe(1,t); % 理论精确值4 E& x* u+ o! K" }! B9 p
        vye(1,t+1)=vye(1,t); % 理论精确值4 Z, r; Q3 y1 z
        rxe(1,t+1)=rxe(1,t)+vxe(1,t); % 理论精确值6 ~0 j1 W/ g* ~
        rye(1,t+1)=rye(1,t)+vye(1,t); % 理论精确值
    ' F( H/ {6 C6 Q+ q    se(:,t+1)=[rxe(1,t+1);rye(1,t+1);vxe(1,t+1);vye(1,t+1)]; % 过程矩阵,维数4*1& G- E- Z# X0 w8 V
    ; q+ B9 _- }/ R  K4 i; K
        r(1,t+1)=(rx(1,t+1)^2+ry(1,t+1)^2)^(1/2); % 理论测量距离(含测量误差)7 {8 u5 \$ W( Y- k4 I- s
        b(1,t+1)=atan(ry(1,t+1)/rx(1,t+1)); % 理论测量方位(含测量误差)7 ]& r3 Q% ~1 H$ j# z$ I" U$ c
        rn(1,t+1)=r(1,t+1)+wr(1,t+1); % 实际测量距离; N1 v( m, i6 w. {3 Z; t
        re(1,t+1)=(rxe(1,t+1)^2+rye(1,t+1)^2)^(1/2); % 理论测量距离(含测量误差)
    7 w; X! E. Z% s9 T7 x/ Z% Q4 U    bn(1,t+1)=b(1,t+1)+wb(1,t+1); % 实际测量方位
    ' \# Y1 k" C, o) m6 \9 J" u" w    x(:,t+1)=[rn(1,t+1);bn(1,t+1)]; % 观测矩阵,维数2*13 X9 c. B3 |% A

    8 B2 t5 h0 F0 ^8 h# _3 `    % 对观测方程求导,得到雅可比矩阵H,维数2*49 J. V! ~8 _. X; R5 R4 M
        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 ^8 h' b! L+ S# F( C
    ( j1 K( N: }! R& k, d6 S% q) R
    + C3 U% e7 y1 g; A# H( V. q, Y    MM(:,:,t+1)=A*M(:,:,t)*A'+Q; % 一步预测均方误差) e1 y+ q) C# H1 n
        K(:,:,t+1)=MM(:,:,t+1)*H(:,:,t+1)'/(C+H(:,:,t+1)*MM(:,:,t+1)*H(:,:,t+1)'); % 卡尔曼增益$ r9 Q& p- f, a
        M(:,:,t+1)=(eye(4)-K(:,:,t+1)*H(:,:,t+1))*MM(:,:,t+1);% 估计均方误差9 i" u" f! E+ a3 w' h6 K
        ss(:,t+1)=A*sn(:,t); % 一步预测4 `( ^8 R$ w! E- ?# b: b
        hs(:,t+1)=[((ss(1,t+1))^2+(ss(2,t+1))^2)^(1/2);atan(ss(2,t+1)/ss(1,t+1))]; % 观测值预测6 v7 K+ \, m1 W! M2 K+ s
        inn(:,t+1)=x(:,t+1)-hs(:,t+1); % 新息
    " y5 V* b1 @: X) c2 M, R    sn(:,t+1)=ss(:,t+1)+K(:,:,t+1)*inn(:,t+1); % 预测修正
    ; ?9 a0 @0 f# lend4 C2 y. J1 ~9 d
    + Q9 O1 H& [& x# {: P
    subplot(2,1,1);
    + r  f% ?# L5 r/ dplot(sn(1,:),sn(2,:)); % kalman估计值
    - x) _7 Y' {3 H" g% z3 p6 Ahold on;
    0 V$ D. [* ~" Z* Q' ~6 c1 splot(se(1,:),se(2,:),'-r'); % 理论精确值- j3 J* W7 V) p4 d, Z/ a
    3 W+ N' I5 Y/ L* i3 J* {& y- R% N
    subplot(2,1,2);
    - w3 t- @6 I; o* m4 O, `. E- wplot(rn); % 实际测量距离- ~9 c' W# A- B5 c
    hold on;- M+ `  J- V0 N) @* E. b, j
    plot(re,'-g'); % 理论精确值
    ; u" T& q9 @, A3 y$ G2 K! W. d
    2 ^' s8 n1 W4 {" w& N
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • 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-11-14 05:06

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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