% Tests estimator
clear all
xhat0=2.5;
n=20;
NL=200;
Ng=1;
ell=1;
time=1:NL; % Time steps during a lifetime
y=zeros(NL,Ng); % Initialize/allocate memory for sensed variable from environment
z=zeros(NL,Ng); % Initialize
sigmaz2=0.5*ones(NL,Ng); % Initialize the variance in the variable we want to estimate (could
% change during a lifetime or over generation)
xbar=2; % For case where have an unknown constant in the environment that want to estimate
x=xbar*ones(NL,Ng); % Set variable want to estimate as a constant
xhat=zeros(NL,Ng);
% Set weighting parameters for cost function
w1=0.01;
w2=1;
w3=.1;
clear Y % Dimension changes on the regressor vector so clear it each time it changes
Y=xhat0*ones(n,1); % Set initial condition
% Run estimator for lifetime of animal
for k=1:NL % Generate sensed signals, including initial values that are instincts
z(k,ell)=sigmaz2(k,ell)*randn; % Generate noise
y(k,ell)=x(k,ell)+z(k,ell); % Generate signal that is sensed
Y=[y(k,ell); Y(1:(n-1),1)]; % Shift regression vector, load in new value
xhat(k,ell)=mean(Y);
end
J=w1*n+w2*(1/NL)*(x(:,ell)-xhat(:,ell))'*(x(:,ell)-xhat(:,ell))...
-w3*(x(1,ell)-xhat0)^2
% Plot results
figure(1)
clf
plot(time,x,'r.',time,y,'g--',time,xhat,'b-')
xlabel('Iteration')
title('x (dotted), y (dashed), xhat (solid)')