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

卡尔曼

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
卡尔曼% R) q; E; i- Z; P% V
& \; y- s/ r0 c+ c' N* r$ }
clear clc;- Z1 a  u& v1 I
N=600;%采样点的个数  
7 F5 m8 S- i) B4 g3 b) Y& ?CON=25;%室内温度的理论值
- E1 h7 ?& w/ x; ?4 ix=zeros(1,N);%用来记录温度的最优化估算值  " F3 X5 t) m- S/ V
y=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声) L+ V% |. @. w( r% n: k1 ]( Y0 k
x(1)=20;%为x(k)赋初值) v/ t' Q6 _! s- j# i* [4 T
p(1)=2;%x(1)对应的协方差
% `7 E! k7 o) g) ?) e% ZQ=cov(randn(1,N));%过程噪声的协方差6 `: Q% N) b, \; Z
R=cov(randn(1,N));%测量噪声的协方差$ O2 Y: u+ k  y
for k=2:N%循环里面是卡尔曼滤波的具体过程   # E1 _# r5 s' ^4 [) @
x(k)=x(k-1);   ) T  l5 |( G5 r5 M; A
p(k)=p(k-1)+Q;     + _+ P- m' U) W) I
Kg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益     
) v3 B) a& b1 V! P6 \8 B, C( M" ux(k)=x(k)+Kg(k)*(y(k)-x(k));     - C( j( ^5 m! H; O. E; i
p(k)=(1-Kg(k))*p(k);
/ o" r; V' L4 L5 gend  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %这个模块起到平滑滤波作用% {. ~2 @! ^: Y
Filter_Width=10;%滤波器带宽/ X* @* |+ |+ L) j9 t0 f
Smooth_Result=zeros(1,N);%用来存放滤波后的各个采样点的值- B) R/ p8 ?! v" y& z* S5 q7 a
for i=Filter_Width+1:N     
' ?( c9 |! P, d! ETemp_Sum=0;      & L, c! \7 L" ?9 `
for j=i-Filter_Width: (i-1)      1 K! ~6 v" {+ \  S% Q! H* @
Temp_Sum=x(j)+Temp_Sum;   / y0 R, s1 M. _) X! b4 n$ g" s
end      ; P+ H" C$ p/ x( P: R
Smooth_Result(i)=Temp_Sum/Filter_Width;%每一个点的采样值等于这个点之前的filter_width长度的采样点的平均值
$ f4 n4 G0 M& M% O% W" W! [1 f. rend  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%& }1 N# G# p/ K  n
t=1:N;  7 S7 s; _/ F7 M* C& E
figure('Name','Kalman Filter Simulation','NumberTitle','off');
, q2 Z( O; V- Pexpected_Value=zeros(1,N);
, F+ b$ f; o  R6 S9 Efor i=1:N      
) \8 c, Z8 p3 ]) p+ \  r2 sexpected_Value(i)=CON;3 B& y5 d5 h4 K( E3 d& M
end
$ A4 _2 x% l: T7 V' [  \plot(t,expected_Value,'-b',t,y,'-g',t,x,'-k',t,Smooth_Result,'-m');%依次输出理论值,叠加测量噪声的温度计测量值,
7 A% O& s4 S* }3 _8 ilegend('expected','measure','estimate','smooth result');           %经过kalman滤波后的最优化估算值,平滑滤波后的输出值6 X, ^7 w1 h# A& T& j3 {
xlabel('sample time');
& J5 ^4 M! E1 a' tylabel('temperature');  title('Kalman Filter Simulation');
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-26 20:13 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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