kalman滤波在温度测量中的应用
MATLAB代码如下:
function main
N=120;
CON=25; %采样点
Xexpect=CON*ones(1,N); %期望值
X=zeros(1,N); %真值
Xkf=zeros(1,N); %KALMAN滤波处理状态,估计值
Z=zeros(1,N); %测量值
P=zeros(1,N);
%赋初值
X(1)=25.1; %初始值房间温度25.1%
P(1)=0.01; %初始值协方差
Z(1)=24.9; %初始测量值
Xkf(1)=Z(1); %初始测量值作为初始估计状态
%噪声
Q=0.01;
R=0.25;
W=sqrt(Q)*randn(1,N);
V=sqrt(R)*randn(1,N);
%系统矩阵
F=1;
G=1;
H=1;
I=eye(1);
for k=2:N
%1 :随时间变化真实温度波动变化
X(k)=F*X(k-1)+G*W(k-1);
%2 :随时间推移,获取实时数据
Z(k)=H*X(k)+V(k);
%3 :卡尔曼滤波
X_pre=F*Xkf(k-1); %状态预测
P_pre=F*P(k-1)*F'+Q; %协方差预测