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

卡尔曼

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
卡尔曼
( z: d( p3 W- {. e* }& p
9 v0 P* h' F5 Y. w* Fclear clc;
$ k$ z3 u) V" |+ s& v% U8 G. q$ EN=600;%采样点的个数  + m1 n9 ~) l8 _4 Y- g9 h! b
CON=25;%室内温度的理论值
9 l6 T# T) t$ S* k' P- H+ xx=zeros(1,N);%用来记录温度的最优化估算值  
, S- i+ G5 \0 q( n% Hy=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声1 |1 `! i7 Q4 Q$ p/ n+ V) u
x(1)=20;%为x(k)赋初值
+ Z0 W% J/ o; @p(1)=2;%x(1)对应的协方差
( I+ P6 o( r8 jQ=cov(randn(1,N));%过程噪声的协方差9 o# ~  r9 M: G: [1 _  s$ P) |$ a* }
R=cov(randn(1,N));%测量噪声的协方差
9 O$ t4 u* r8 `2 R8 ?/ D4 Tfor k=2:N%循环里面是卡尔曼滤波的具体过程   
; f1 _! V" o# f+ v+ C4 Qx(k)=x(k-1);   - b9 t$ b8 N. T7 a' ~% G
p(k)=p(k-1)+Q;     
7 O6 I- z/ t. b% t' {: cKg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益       K* D- m0 X) Y' \7 K3 d: @' E! i
x(k)=x(k)+Kg(k)*(y(k)-x(k));     0 P' ~# R" V/ y) F3 U8 P5 D
p(k)=(1-Kg(k))*p(k);2 ^+ G: `3 Z7 F2 Y
end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %这个模块起到平滑滤波作用9 K- y  W, j/ G0 U# m
Filter_Width=10;%滤波器带宽
; j0 q4 z/ {5 h4 ^8 E8 W- z) ^Smooth_Result=zeros(1,N);%用来存放滤波后的各个采样点的值
- I- z0 h1 A! L6 \; I9 r2 |for i=Filter_Width+1:N     
& f& j, k; f$ o) Z' V2 JTemp_Sum=0;      6 o% ~, p9 i& @3 [; h7 ~& x/ g8 Q
for j=i-Filter_Width: (i-1)      
" I2 {8 N* x1 @8 J* o; P6 @) fTemp_Sum=x(j)+Temp_Sum;   
1 \% q8 \" b0 W( }" h9 a0 E+ |end      
9 _8 z) m9 G- T0 e2 LSmooth_Result(i)=Temp_Sum/Filter_Width;%每一个点的采样值等于这个点之前的filter_width长度的采样点的平均值
8 q6 V0 l3 G# kend  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 m5 S7 m5 M! F; Ot=1:N;  
4 c. K" k& b8 Y; W% ofigure('Name','Kalman Filter Simulation','NumberTitle','off');! {" a2 r$ ]* o
expected_Value=zeros(1,N);: `) K$ ]( B7 [- u" M: ~
for i=1:N      
+ q& t: @' s( k$ q  sexpected_Value(i)=CON;1 [1 H3 B" S9 ^
end
/ a0 }: l  _9 I" \1 d# Hplot(t,expected_Value,'-b',t,y,'-g',t,x,'-k',t,Smooth_Result,'-m');%依次输出理论值,叠加测量噪声的温度计测量值,
& J! |' _, q4 u  Ylegend('expected','measure','estimate','smooth result');           %经过kalman滤波后的最优化估算值,平滑滤波后的输出值
, @. V  b- b5 w5 `! C& G) Nxlabel('sample time');$ J$ P2 P: b7 a! s2 Y2 q
ylabel('temperature');  title('Kalman Filter Simulation');
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 22:39 , Processed in 0.140625 second(s), 25 queries , Gzip On.

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

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

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