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

卡尔曼

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
卡尔曼" F* U: G; s4 k( l) i% Z
2 i, Z5 L' B& J" L8 j3 \8 d5 p
clear clc;! F. @/ j. K$ L3 e2 E
N=600;%采样点的个数  8 t4 T1 Q7 z+ ?0 ~' v+ m
CON=25;%室内温度的理论值, P5 B1 w) P. N
x=zeros(1,N);%用来记录温度的最优化估算值  5 k4 s# S3 R/ f: }7 r/ F, Y
y=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声
' U7 N' w) q: @% C$ ax(1)=20;%为x(k)赋初值
, Y! b; P! |4 J' @p(1)=2;%x(1)对应的协方差
! U9 N) \  J% O) W6 r; G- gQ=cov(randn(1,N));%过程噪声的协方差
5 ~* b/ o! P0 @) u1 iR=cov(randn(1,N));%测量噪声的协方差
' ]0 m0 T# P6 E% {. W" dfor k=2:N%循环里面是卡尔曼滤波的具体过程   
3 F0 Q7 x, j+ F  i8 ]' j. yx(k)=x(k-1);   
2 N  m4 ]( k2 k9 Op(k)=p(k-1)+Q;     
+ ^& b1 m( ~' t9 q3 IKg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益     ( I  G- y+ f9 o, W+ R7 U* _- y
x(k)=x(k)+Kg(k)*(y(k)-x(k));     ! ~9 |: ~8 Q  y/ j
p(k)=(1-Kg(k))*p(k);- B2 u7 x- U' G+ b
end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %这个模块起到平滑滤波作用% A; ~3 ~0 ~9 ~* x$ j
Filter_Width=10;%滤波器带宽0 J" e. o, c' p0 d
Smooth_Result=zeros(1,N);%用来存放滤波后的各个采样点的值
/ U1 a+ x- Y) R9 H; D" ^for i=Filter_Width+1:N     4 @) L3 O7 x6 R- F3 V6 P( h9 p" o
Temp_Sum=0;      ! X2 u# D: V' o& R4 B" Q
for j=i-Filter_Width: (i-1)      
" N3 K2 P$ x  }; n* T" nTemp_Sum=x(j)+Temp_Sum;   6 D5 f+ [3 \0 J
end      % D. `3 ?4 G- W1 {, E' V
Smooth_Result(i)=Temp_Sum/Filter_Width;%每一个点的采样值等于这个点之前的filter_width长度的采样点的平均值5 d6 y& g2 s  d. v! Y
end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
# ?2 V/ i/ X8 {! l: }1 ?# h3 l% pt=1:N;  
6 L: z# I. z1 x1 Lfigure('Name','Kalman Filter Simulation','NumberTitle','off');
7 S* ]9 j9 n% ]1 ^) l& U- m0 Hexpected_Value=zeros(1,N);$ q; ?% C% E2 g2 [" v+ B% g6 w
for i=1:N      2 R' F0 \: |2 f6 A) A0 M% v
expected_Value(i)=CON;
. m0 o' Y2 c3 z4 vend$ O3 b3 {; A1 `& ^1 X
plot(t,expected_Value,'-b',t,y,'-g',t,x,'-k',t,Smooth_Result,'-m');%依次输出理论值,叠加测量噪声的温度计测量值,
9 R' I. ^8 O1 F  j8 {$ Llegend('expected','measure','estimate','smooth result');           %经过kalman滤波后的最优化估算值,平滑滤波后的输出值* s2 X& a- z2 U$ c. m" R; W! s* @
xlabel('sample time');
) I. o, {: y/ w) nylabel('temperature');  title('Kalman Filter Simulation');
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-6 23:33 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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