找回密码
 注册
关于网站域名变更的通知
查看: 429|回复: 1
打印 上一主题 下一主题

卡尔曼

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-30 13:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
卡尔曼4 g7 s; o; H5 m3 H4 W7 h3 s

) j4 {2 p  K. Y0 S' p% wclear clc;
4 [3 V7 k" d- I1 y" G+ U) VN=600;%采样点的个数  ) L$ \" |( B, e" C0 N
CON=25;%室内温度的理论值
6 S% U, |; h4 N! o, L) }% k: ]x=zeros(1,N);%用来记录温度的最优化估算值  . X7 n: ?  C  Q( M9 H- p- I
y=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声# ?3 H) ^! L; \$ m4 ^( a: ~" }# o
x(1)=20;%为x(k)赋初值
! g" ?! j2 Z8 r1 u& [p(1)=2;%x(1)对应的协方差
4 V' C, W4 W: `7 l6 {5 x' oQ=cov(randn(1,N));%过程噪声的协方差: U7 {) Y7 U, U0 f. y6 H9 S; e+ b
R=cov(randn(1,N));%测量噪声的协方差- ]+ ?% k. T6 u3 F. H
for k=2:N%循环里面是卡尔曼滤波的具体过程   3 C5 z$ a0 q6 X+ T
x(k)=x(k-1);   
, U2 i4 u2 [1 ~  q) y. r$ d' Xp(k)=p(k-1)+Q;     $ f* T8 P5 I! r" l; R
Kg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益     
: _9 K, }6 u  M& R5 F0 `x(k)=x(k)+Kg(k)*(y(k)-x(k));     $ Y( Y- P" O( m& t: |6 [# h
p(k)=(1-Kg(k))*p(k);
2 ]* ~5 o$ d0 f: n! _/ Uend  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %这个模块起到平滑滤波作用
8 @2 A: ^0 v! U$ Z  W6 pFilter_Width=10;%滤波器带宽2 e- s2 [: ~+ z0 k$ `
Smooth_Result=zeros(1,N);%用来存放滤波后的各个采样点的值
8 I$ y! E( }3 e0 E3 a; _for i=Filter_Width+1:N     - [7 r3 j" M6 ?- H  Y
Temp_Sum=0;      ; A8 l1 G* s4 J3 a) u4 Y. v
for j=i-Filter_Width: (i-1)      
% c; ?& z  Z, z  `$ o7 R" N  OTemp_Sum=x(j)+Temp_Sum;   & n# L6 @3 K$ I4 f6 {* q
end      
+ e4 U+ U# Z: q, Y& Z  [( `% J' A9 VSmooth_Result(i)=Temp_Sum/Filter_Width;%每一个点的采样值等于这个点之前的filter_width长度的采样点的平均值
5 z0 Q5 q: c- L/ [; C: J! Send  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7 |$ B1 J0 |, ?0 Qt=1:N;  
4 P. l3 K: w; [) dfigure('Name','Kalman Filter Simulation','NumberTitle','off');
! v/ x  v- d8 B7 W7 }& B! t( g( C! k- ]expected_Value=zeros(1,N);
" q, J! p0 q2 K$ @for i=1:N      
5 @! d7 }* n5 K) Lexpected_Value(i)=CON;
  o3 i7 S5 ~2 S5 [8 W  _: Dend0 L: k( a2 C3 M, Y0 s2 o# r6 `! ~
plot(t,expected_Value,'-b',t,y,'-g',t,x,'-k',t,Smooth_Result,'-m');%依次输出理论值,叠加测量噪声的温度计测量值,& ^& \# ?8 j' Y
legend('expected','measure','estimate','smooth result');           %经过kalman滤波后的最优化估算值,平滑滤波后的输出值
% m8 o; _" Y, mxlabel('sample time');* c, o/ |: x- A( X: W6 O
ylabel('temperature');  title('Kalman Filter Simulation');
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 05:25 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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