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

卡尔曼

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
卡尔曼2 ]. ^/ F+ |( V4 H9 j
- W3 K0 ^* d3 x% W# v! O
clear clc;
+ Q! b- W, T. R% e5 i$ CN=600;%采样点的个数  0 i7 I4 \" z) p3 e* R
CON=25;%室内温度的理论值
% z; t* e/ k- Z; m7 N$ Dx=zeros(1,N);%用来记录温度的最优化估算值  ! ]% R' f8 N- U0 I
y=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声- V# X7 ?1 j2 ?/ E1 [% w
x(1)=20;%为x(k)赋初值- U7 t1 `) q2 }6 L
p(1)=2;%x(1)对应的协方差; T. h; o% R. L2 P/ O7 ?- i
Q=cov(randn(1,N));%过程噪声的协方差
6 g8 E0 x& {8 j9 K) A6 \1 `4 w; cR=cov(randn(1,N));%测量噪声的协方差1 d4 p/ y5 C2 R2 b8 Y" t
for k=2:N%循环里面是卡尔曼滤波的具体过程   ' k  h5 K) [+ T! e( A2 [' [7 J
x(k)=x(k-1);   
" c6 I9 C5 k' f" F. vp(k)=p(k-1)+Q;     4 P! x" `: Q. D; `: }3 F
Kg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益     
9 K: \- M+ G9 @x(k)=x(k)+Kg(k)*(y(k)-x(k));     ) o/ |  w7 D& K6 v: R! v" g
p(k)=(1-Kg(k))*p(k);* D( `' x0 D: D; X, V& x/ A$ T! X. l( Y6 a
end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %这个模块起到平滑滤波作用
+ t) {, i3 G5 `1 J5 |1 A$ I0 p! QFilter_Width=10;%滤波器带宽! v- B' m4 R" q9 A: l/ P
Smooth_Result=zeros(1,N);%用来存放滤波后的各个采样点的值
) R' U4 D- d. H. d9 i! u6 {+ bfor i=Filter_Width+1:N     : z0 M# X2 e3 u; l( p
Temp_Sum=0;      
% A+ m$ k+ i6 Z; v' Z: n1 ^& tfor j=i-Filter_Width: (i-1)      
+ p/ o, {, k4 x& Z) d& O+ q, C' tTemp_Sum=x(j)+Temp_Sum;   * b' G& `7 R9 m0 }; R# `
end      + Y0 K; r& j7 b
Smooth_Result(i)=Temp_Sum/Filter_Width;%每一个点的采样值等于这个点之前的filter_width长度的采样点的平均值
$ E2 p# @  E. @/ n% \. R$ b" Pend  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%( n* u/ E! e9 L; q
t=1:N;  
' `' d1 L2 z# f" qfigure('Name','Kalman Filter Simulation','NumberTitle','off');
- k5 c$ ?7 q: ^  Mexpected_Value=zeros(1,N);+ w  r4 j% j. e7 Y% H2 P  D
for i=1:N      ; g* h8 m* G% A) i
expected_Value(i)=CON;- @( ]* d+ u3 _2 z
end
2 U2 X6 x) ?+ B5 g" ]1 Z9 [plot(t,expected_Value,'-b',t,y,'-g',t,x,'-k',t,Smooth_Result,'-m');%依次输出理论值,叠加测量噪声的温度计测量值,
" j* i) z( g5 s4 R. ]legend('expected','measure','estimate','smooth result');           %经过kalman滤波后的最优化估算值,平滑滤波后的输出值4 g) u0 F$ k  [6 g+ \& _
xlabel('sample time');
7 n! v' i+ r+ {; Y* Jylabel('temperature');  title('Kalman Filter Simulation');
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-5 19:42 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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