Laboratory 3 - Estimation, filtering and system identification - Prof. M. Taragna

Exercise 2: Parametric estimation of an auto-regressive model from output data

Contents

Introduction

The program code may be splitted in sections using the characters "%%". Each section can run separately with the command "Run Section" (in the Editor toolbar, just to the right of the "Run" button). You can do the same thing by highlighting the code you want to run and by using the button function 9 (F9). This way, you can run only the desired section of your code, saving your time. This script can be considered as a reference example.

clear all, close all, clc

Procedure

  1. Load the file AR_data.mat containing the output data
  2. Plot the experimental data
  3. Estimate the model parameters using the Least Squares algorithm
  4. Plot the estimated approximation versus the experimental data

Problem setup

% Step 1: load of data

load AR_data.mat
% y = output samples

L = length(y); % L = number of data

% Step 2: plot of data

figure, plot(1:L,y,'-b'),
axis([0,L,0,100]), grid, title('Measured data and approximation'),
xlabel('Time{\it t}'), ylabel('Output{\it y}'),
legend('Measured data',1)

Estimation of the model parameters using the Least Squares algorithm

% Step 3: computation of the parameter estimate

Y=y(3:L);
Phi=[-y(2:L-1), -y(1:L-2), ones(L-2,1)];
theta_LS=Phi\Y % Form #1: using the "\" operator (more realiable)

A=pinv(Phi);   % more realiable than inv(Phi'*Phi)*Phi'
theta_LS_=A*Y  % Form #2: using the pseudoinverse matrix
a1=theta_LS(1)
a2=theta_LS(2)
b=theta_LS(3)

sigma_e=sqrt(40);
Sigma_theta=sigma_e^2*inv(Phi'*Phi) % Variance matrix of the estimates
sigma_theta=sqrt(diag(Sigma_theta)) % Standard deviations of the estimates

% Step 4: graphical comparison of the results

y_LS = Phi*theta_LS;
figure, plot(1:L,y,'-b', 3:L,y_LS,'-r'),
axis([0,L,0,100]), grid, title('Measured data and approximation'),
xlabel('Time{\it t}'), ylabel('Output{\it y}'),
legend('Measured data','Least Squares estimate',1)
theta_LS =
   -1.4301
    0.7488
   15.1412
theta_LS_ =
   -1.4301
    0.7488
   15.1412
a1 =
   -1.4301
a2 =
    0.7488
b =
   15.1412
Sigma_theta =
    0.0009   -0.0007    0.0078
   -0.0007    0.0009    0.0073
    0.0078    0.0073    0.7979
sigma_theta =
    0.0297
    0.0296
    0.8932