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

卡尔曼

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
卡尔曼
2 z1 v: t; H# A. e$ |" f% L! i, q' A3 M4 j. R( @* {' \
clear clc;/ Q6 W* z6 B8 D* E
N=600;%采样点的个数  
# x- ^  I8 G$ o$ D6 U+ Y9 i/ x! g8 VCON=25;%室内温度的理论值; \) _" F) g$ T8 R& C! R
x=zeros(1,N);%用来记录温度的最优化估算值  
6 M5 V0 J9 O4 K; d! F. by=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声' m8 v0 N  s6 B2 K
x(1)=20;%为x(k)赋初值2 q- r" f( x) V$ G* A
p(1)=2;%x(1)对应的协方差
8 w7 Y, d, z7 ]' _Q=cov(randn(1,N));%过程噪声的协方差. u5 {$ r9 i& M+ J/ L) j5 s: i, `
R=cov(randn(1,N));%测量噪声的协方差; C8 N% F5 N7 W
for k=2:N%循环里面是卡尔曼滤波的具体过程   
3 S! G+ ~& Q& N( \x(k)=x(k-1);   
3 `: ?3 _( J3 H- f% Rp(k)=p(k-1)+Q;     
( p$ y/ k/ @$ {/ l+ V, HKg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益     
1 }) q& y7 B( S( e5 fx(k)=x(k)+Kg(k)*(y(k)-x(k));     
! f, G; j- {3 l0 `( wp(k)=(1-Kg(k))*p(k);
$ _, W9 Q: z5 r" u0 D3 Vend  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %这个模块起到平滑滤波作用$ k, ?5 p/ f& k- E
Filter_Width=10;%滤波器带宽
: X2 X, ?/ O3 X$ [Smooth_Result=zeros(1,N);%用来存放滤波后的各个采样点的值8 K" p% p2 b7 p3 v7 F) X
for i=Filter_Width+1:N     
% P5 ^( b. p1 E  eTemp_Sum=0;      ( }2 O$ H0 ^+ q
for j=i-Filter_Width: (i-1)      
  p  n& d1 p( ]  W9 q) RTemp_Sum=x(j)+Temp_Sum;   
# B7 ~: W3 V& \2 f) Iend      
3 Z3 i/ V: O/ USmooth_Result(i)=Temp_Sum/Filter_Width;%每一个点的采样值等于这个点之前的filter_width长度的采样点的平均值
3 ^5 n: v1 ~1 U/ |# _end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9 Q6 R8 z0 x% F2 Q+ ^0 c, ft=1:N;  ) ~1 c' U- e1 H# i
figure('Name','Kalman Filter Simulation','NumberTitle','off');% U7 X/ G/ W7 ]( L1 V3 _
expected_Value=zeros(1,N);
7 ]6 `* d4 ^" \: ifor i=1:N      ( I3 x: S- D/ n% `4 C
expected_Value(i)=CON;
# J* Y" V) S  x) L/ bend
9 L5 l/ |1 h# {; ~: u8 [/ O4 Rplot(t,expected_Value,'-b',t,y,'-g',t,x,'-k',t,Smooth_Result,'-m');%依次输出理论值,叠加测量噪声的温度计测量值,4 ]. W% q" `" d3 @
legend('expected','measure','estimate','smooth result');           %经过kalman滤波后的最优化估算值,平滑滤波后的输出值! G" B. K9 M7 p: X7 d2 R
xlabel('sample time');0 {2 o4 I3 j# E, P; u
ylabel('temperature');  title('Kalman Filter Simulation');
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-25 09:07 , Processed in 0.062500 second(s), 23 queries , Gzip On.

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

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

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