温度模拟参数选取
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
|
请发表评论