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

卡尔曼

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
卡尔曼
' m, k9 g, [2 q% F
- C" C7 K, G: Z. oclear clc;
1 x8 z2 k" b% ZN=600;%采样点的个数  % {3 p$ \; n9 U: {4 x3 ~- b
CON=25;%室内温度的理论值
9 L9 c) x. X% W; B/ b9 U: R4 Qx=zeros(1,N);%用来记录温度的最优化估算值  
, V' H2 W. H0 U$ _2 h' my=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声
3 n8 H( ^/ \& D1 _7 @x(1)=20;%为x(k)赋初值2 i2 |3 i# z$ G, f
p(1)=2;%x(1)对应的协方差0 N4 h. q/ |! ]5 u
Q=cov(randn(1,N));%过程噪声的协方差9 s' I5 `5 c3 j/ e9 M( q
R=cov(randn(1,N));%测量噪声的协方差
+ X1 K- V' e) G# k3 v* `' Zfor k=2:N%循环里面是卡尔曼滤波的具体过程   + U* Q# _. D9 M  @  C* d, o, n
x(k)=x(k-1);   
& H+ B+ W, N' tp(k)=p(k-1)+Q;     $ d2 U; f9 H1 I! ~% q( s& x8 n0 [; l
Kg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益     
- K/ b0 ~$ X+ @% Vx(k)=x(k)+Kg(k)*(y(k)-x(k));     : ?7 @0 r$ m. t* Z: @
p(k)=(1-Kg(k))*p(k);# a& ?0 X* |, e# v3 V
end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %这个模块起到平滑滤波作用3 D: o; V4 }, i0 l
Filter_Width=10;%滤波器带宽
. o/ t2 q) }$ ]Smooth_Result=zeros(1,N);%用来存放滤波后的各个采样点的值
0 M4 e. b0 D$ z5 z' Q, ffor i=Filter_Width+1:N     9 [9 X7 n2 A& q
Temp_Sum=0;      / i6 I6 S. ?0 _4 Y# k
for j=i-Filter_Width: (i-1)      . {# ?- o& l# p$ Q
Temp_Sum=x(j)+Temp_Sum;   
: t% _. e. i' n% Xend      - [+ n) W, U2 z0 C. B; g
Smooth_Result(i)=Temp_Sum/Filter_Width;%每一个点的采样值等于这个点之前的filter_width长度的采样点的平均值  F! w5 q3 N- ^8 H" X
end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" ^% y! w  @0 |
t=1:N;  $ V" s# w3 Z: D: J
figure('Name','Kalman Filter Simulation','NumberTitle','off');$ n: k" t) {' t" }# ?6 Q, B
expected_Value=zeros(1,N);
. @- b7 `! N. ~for i=1:N        ~. T8 n' j7 t5 C' O/ Z
expected_Value(i)=CON;$ }+ @" }- D: b2 ]1 M
end
! S% u( s/ g0 ^% ]9 M. |3 Zplot(t,expected_Value,'-b',t,y,'-g',t,x,'-k',t,Smooth_Result,'-m');%依次输出理论值,叠加测量噪声的温度计测量值,' D. y0 {6 ]" a/ ?# o4 g4 i" b
legend('expected','measure','estimate','smooth result');           %经过kalman滤波后的最优化估算值,平滑滤波后的输出值+ \' e8 i* y3 F
xlabel('sample time');
% _$ L) R8 F7 G# ?( J1 b6 gylabel('temperature');  title('Kalman Filter Simulation');
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-27 07:46 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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