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

卡尔曼

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
卡尔曼, r9 k# p9 D- G3 ?# ~

1 ~, P1 d! L; Z1 i* aclear clc;
( d, l2 d4 K( c" X4 EN=600;%采样点的个数  
6 |1 A/ \% M! i8 D5 L* E/ v- c  M+ fCON=25;%室内温度的理论值! o7 a" B, l- _' b! n; X
x=zeros(1,N);%用来记录温度的最优化估算值  . j. z- @7 l. g. L
y=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声
, A8 e" G  D4 {& s9 Q+ [x(1)=20;%为x(k)赋初值
0 @, P, v/ g4 F7 Q" X8 I) _p(1)=2;%x(1)对应的协方差
5 i1 `& c9 j# z" d: l4 ?9 UQ=cov(randn(1,N));%过程噪声的协方差
4 M% |) Z6 i, o+ UR=cov(randn(1,N));%测量噪声的协方差
/ q8 _% `$ [) dfor k=2:N%循环里面是卡尔曼滤波的具体过程   
0 c* T. F+ w* ]- Lx(k)=x(k-1);   ' C9 z. X* h. H, l  T) P
p(k)=p(k-1)+Q;     
4 I( H, l1 b+ iKg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益     
+ l9 f  l6 h9 v  F; X' ^- o! `x(k)=x(k)+Kg(k)*(y(k)-x(k));     
) Z, Z$ o  [$ H- gp(k)=(1-Kg(k))*p(k);
, N: z/ o" B. q* Z! d4 C. Mend  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %这个模块起到平滑滤波作用9 F' ]2 {( i0 a0 o. a) b
Filter_Width=10;%滤波器带宽
1 a; @) D$ X7 C- X( zSmooth_Result=zeros(1,N);%用来存放滤波后的各个采样点的值1 {4 l4 N4 Q8 r5 i: k5 S/ c& R- `5 i
for i=Filter_Width+1:N     
4 b! z% W) }6 bTemp_Sum=0;      % N9 }# Y3 {; M
for j=i-Filter_Width: (i-1)      ) a8 z& [4 l7 e3 i  I
Temp_Sum=x(j)+Temp_Sum;   / ^8 x. n4 ~6 c9 T
end      
1 C8 I( L0 G6 D3 JSmooth_Result(i)=Temp_Sum/Filter_Width;%每一个点的采样值等于这个点之前的filter_width长度的采样点的平均值
: f  X( B( @2 L% H0 V# t4 v% o. J0 |end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 H' ^  i6 @2 A. }& i% {
t=1:N;  8 ~3 N4 z( m# l
figure('Name','Kalman Filter Simulation','NumberTitle','off');
3 `9 X# z) N: A. C* B5 a8 xexpected_Value=zeros(1,N);
9 u3 T0 r* ~" n% Cfor i=1:N      
9 [$ `/ E" q( @, n4 a) g. m0 Cexpected_Value(i)=CON;
4 J' Y, }- c7 d6 `/ @- B, d3 qend
) a  u$ _& {  _8 c+ f1 Q  Jplot(t,expected_Value,'-b',t,y,'-g',t,x,'-k',t,Smooth_Result,'-m');%依次输出理论值,叠加测量噪声的温度计测量值,( T$ O& A% V$ Y
legend('expected','measure','estimate','smooth result');           %经过kalman滤波后的最优化估算值,平滑滤波后的输出值. [) ]) t2 q, Y% z$ S/ d2 x
xlabel('sample time');
2 D3 K0 S# e; Y: n  j  W; y1 Xylabel('temperature');  title('Kalman Filter Simulation');
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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