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

卡尔曼

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
卡尔曼; B; C& |2 U/ d  b7 S: K3 {

5 D) }9 v6 A( ~8 n4 c) Y8 xclear clc;- a) ]& {" {/ L& ?2 D8 Z! K3 c
N=600;%采样点的个数  
* n# v' _# e. \CON=25;%室内温度的理论值
$ D2 J8 D5 I- z/ T! X: m  Cx=zeros(1,N);%用来记录温度的最优化估算值  
+ W, @# |$ W, O$ l) f* V- o; _y=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声
; [9 e  m2 r+ p- A; ~x(1)=20;%为x(k)赋初值8 }6 U) w. q% f/ L: H; W! {! h
p(1)=2;%x(1)对应的协方差8 q% B+ n) p( j2 A; |0 f
Q=cov(randn(1,N));%过程噪声的协方差
( N* f' Q  y' j$ R9 YR=cov(randn(1,N));%测量噪声的协方差8 `& `% Q! g* x5 n4 F9 }
for k=2:N%循环里面是卡尔曼滤波的具体过程   4 ]- |! C% n/ }1 F' m6 C" t4 E6 e
x(k)=x(k-1);   
, s# n" Q# l! J- m; g9 J  d: v, O# gp(k)=p(k-1)+Q;     - {( r1 y. X9 a% u4 A( f9 \- d
Kg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益     
: s1 `- y  I2 i2 ~x(k)=x(k)+Kg(k)*(y(k)-x(k));     + c0 F# @5 e6 L
p(k)=(1-Kg(k))*p(k);. R1 H2 d; e! k2 s, K+ k! M
end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %这个模块起到平滑滤波作用
3 ~0 l0 w/ z# h9 R* L0 YFilter_Width=10;%滤波器带宽5 C% b! u% ?9 ^" J+ Q  G1 ]
Smooth_Result=zeros(1,N);%用来存放滤波后的各个采样点的值% L  u' g! }( u: @/ h
for i=Filter_Width+1:N     4 X# x: I; @$ p: s; F
Temp_Sum=0;      
5 Z4 f- q. F, N/ X8 v0 ]5 Ffor j=i-Filter_Width: (i-1)      
6 Q& Y+ U4 _! ~6 A3 K* p* L! x! ?5 I8 RTemp_Sum=x(j)+Temp_Sum;   " @+ g; M8 P" ^- F/ k
end      
+ p) [, p9 Z# C4 C8 g  `Smooth_Result(i)=Temp_Sum/Filter_Width;%每一个点的采样值等于这个点之前的filter_width长度的采样点的平均值3 w0 L! P5 g. P+ k* }8 N! b/ {
end  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 U- b8 g( [) f$ }. |9 B% Q
t=1:N;  0 d9 g0 E& h- L( f) P$ a
figure('Name','Kalman Filter Simulation','NumberTitle','off');/ S; c7 ?# ~! l& G
expected_Value=zeros(1,N);& z6 t" p9 ?1 P! O/ p& Z/ r
for i=1:N      
/ u) v0 @- i  Aexpected_Value(i)=CON;
) |% j! r) f# R) ^3 M4 s' D# A0 Nend, x6 j" `# U; F$ Y9 U5 E! N$ L
plot(t,expected_Value,'-b',t,y,'-g',t,x,'-k',t,Smooth_Result,'-m');%依次输出理论值,叠加测量噪声的温度计测量值,
: Q+ {% N! r* [legend('expected','measure','estimate','smooth result');           %经过kalman滤波后的最优化估算值,平滑滤波后的输出值2 o& x# g9 r  S" [
xlabel('sample time');# }* U' K8 M0 K* s* @% ^. w7 E4 v
ylabel('temperature');  title('Kalman Filter Simulation');
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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