码迷,mamicode.com
首页 > 其他好文 > 详细

卡尔曼滤波学习笔记1-Matlab模拟温度例子--代码比较乱,还需优化

时间:2014-11-19 07:13:41      阅读:904      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   os   sp   for   on   art   

bubuko.com,布布扣

 

温度模拟参数选取

xk 系统状态 实际温度
A 系统矩阵 温度不变,为1
B、uk 状态的控制量 无控制量,为0
Zk 观测值 温度计读数
H 观测矩阵 直接读出,为1
wk 过程噪声 温度变化偏差,常量1e-1
vk 测量噪声 读数误差,常量1e-6

clc;
clear all;
close all;

N = 200; % 迭代次数
%w(1)=0;
%w=randn(1,N);
W = 0; %系统控制矩阵
x(1) = 0;
A = 1; %温度模拟A为1
V = rand(1,N);
q1 = std(V);
%Rvv=q1.^2;
Rvv = 0.1;
q2 = std(x);
Rxx = q2.^2;
q3 = std(W);
%Rww=q3.^2;
Rww = 0.00001; %温度模拟Q为1e-6
%c=0.6;
c=1; %温度模拟H为1
for k = 1:N
Y(k) = 25 + sqrt(0.1)*rand(1);%温度模拟平均温度为25度 方差(协方差)为0.1的温度输入 测量方程,其中V为测量系统的噪声,c为测量系统的参数
end
p(1)=10; %协方差 初始值
s(1)=1; %最优估计 初始值
for t = 2:N
s(t) = A*s(t-1) + W;
p1(t) = A.^2*p(t-1) + Rww;
%%协方差估计 求当前时刻的估计值的偏差,a为系统参数,没有控制量,所以没有参数b,Rww为噪声
b(t) = c * p1(t) /(c.^2*p1(t) +Rvv);
s(t) = A *s(t) + b(t)*(Y(t) -A*c*s(t));
p(t) = p1(t) -c*b(t)*p1(t);

end
figure
plot(Y,‘g--‘);
hold on
plot(s,‘r--‘);

 

来源于:http://blog.csdn.net/s597471018/article/details/8275454

卡尔曼滤波学习笔记1-Matlab模拟温度例子--代码比较乱,还需优化

标签:style   blog   http   ar   os   sp   for   on   art   

原文地址:http://www.cnblogs.com/Kermit-Li/p/4107006.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!