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

卡尔曼

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
卡尔曼
" b" M( o0 h3 @7 a! v; Z% w; c+ N
) `- D8 x/ ?3 fclear clc;) _. V! l; G8 Z9 U8 [8 t/ A! c. v
N=600;%采样点的个数  ( S6 [# J3 n8 ?, E6 L
CON=25;%室内温度的理论值
1 i! I7 }' o" ]4 k( x& Q9 Qx=zeros(1,N);%用来记录温度的最优化估算值  & G$ C( A% E/ ]$ ^
y=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声% D# W$ o: l9 B/ Z0 ~5 I
x(1)=20;%为x(k)赋初值0 n7 ?  W* P, V1 b
p(1)=2;%x(1)对应的协方差
# ^7 u. k5 L$ Z- K0 \" w& DQ=cov(randn(1,N));%过程噪声的协方差- i  O* D4 F1 y* O; [
R=cov(randn(1,N));%测量噪声的协方差
( d( u5 n7 H* D% }0 vfor k=2:N%循环里面是卡尔曼滤波的具体过程   
; C+ i& w1 p6 E+ Vx(k)=x(k-1);   - n$ f7 W) d( q1 t) h
p(k)=p(k-1)+Q;     . G  c! F% `% R2 ^9 {
Kg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益     / k4 V7 e. k$ h0 Q0 _# b
x(k)=x(k)+Kg(k)*(y(k)-x(k));     ' V. H4 X4 W' r) H! B3 Z
p(k)=(1-Kg(k))*p(k);
5 \8 O: f6 k' s$ w  Q. Qend  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %这个模块起到平滑滤波作用4 L. R& G. t0 Y2 m9 O
Filter_Width=10;%滤波器带宽
" {) @  P3 [" C  s, o3 BSmooth_Result=zeros(1,N);%用来存放滤波后的各个采样点的值2 X  P2 Q/ @9 x* D$ I8 v
for i=Filter_Width+1:N     
0 [  b& G" T+ n6 s1 RTemp_Sum=0;      
4 O2 u# |' w! _- ^: @( Sfor j=i-Filter_Width: (i-1)      
1 R" y2 D0 ^$ V: J: hTemp_Sum=x(j)+Temp_Sum;   
7 \4 x- t: k% U5 V2 dend      
! k4 n- q) _( n) U( P/ u$ cSmooth_Result(i)=Temp_Sum/Filter_Width;%每一个点的采样值等于这个点之前的filter_width长度的采样点的平均值
" m2 S8 @/ _4 c3 Z# N/ ?7 m1 ?end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0 @! y$ N4 q3 k& N7 rt=1:N;  % I" u6 k" _4 x: T/ U' t9 g0 J, X) P
figure('Name','Kalman Filter Simulation','NumberTitle','off');/ P" j1 ?  P8 V
expected_Value=zeros(1,N);
/ X' G) P+ ~9 m% [- X- bfor i=1:N      $ U, Z  B% }5 @$ b) p* I
expected_Value(i)=CON;
1 q+ }- c" ?$ a8 n* c- ^end1 ~; L# s6 }* a
plot(t,expected_Value,'-b',t,y,'-g',t,x,'-k',t,Smooth_Result,'-m');%依次输出理论值,叠加测量噪声的温度计测量值,
- i$ ~8 z9 `/ Z7 [# v  f" |! P1 D+ c! w, ]: {legend('expected','measure','estimate','smooth result');           %经过kalman滤波后的最优化估算值,平滑滤波后的输出值
3 f; M6 A' r( h) [* Dxlabel('sample time');
& ?9 B. i8 R& g2 `4 w# a) vylabel('temperature');  title('Kalman Filter Simulation');
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 20:06 , Processed in 0.203125 second(s), 23 queries , Gzip On.

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

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

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