Problema con estimación de parámetros en Matlab

#1
Saludos,

No tengo mucha experiencia en Matlab y en la uni me pidieron un trabajo previo para realizar identificación de sistemas. Recibo un archivo con datos tomados de un tanque, que es el proceso a controlar. Los datos están en 4 columnas, la primera corresponde al tiempo, la segunda a la entrada sin offset, la tercera la entrada actual con offset y la cuarta la salida actual con offset. Con esos datos debo calcular la señal de salida quitándole el offset, y luego realizar una estimación de los parámetros del sistema usando mínimos cuadrados con los datos de entrada y salida sin offset. Hasta acá he podido seguir y creo que está todo correcto, sin embargo como último paso debo simular el sistema usando el comando filter de Matlab, sin embargo al hacerlo no obtengo datos de salida que se correspondan con los de entrada, sino algo así cono un pulso infinito, y no he logrado dar con el problema. Creo que me estoy dejando algo al usar el filter, y por eso no puedo simular los datos. Dejo mi programa, los datos de entrada y la salida mala que estoy obteniendo para ver si por favor pueden guiarme con lo que podría estar haciendo mal en Matlab. Cordiales saludos.

Programa:
Código:
clc
clear
load Student_data.mat %carga los datos en la matriz Log
%%
vtime=Log(:,1);% toa los datos del tiempo de la matriz Log
per=(vtime(2)-vtime(1))/1000 % calcula el período de muestreo
time=[0:per:per*length(vtime)-per]; % crea un nuevo vector de tiempo, empezando desde cero
not_off_input=Log(:,2); % datos de entrada sin offset
off_input=Log(:,3);% datos de entrada con offset
off_output=Log(:,4);%datos de salida con offet
plot(time,off_input); hold on% 
plot(time, off_output);hold on% entrada actual vs salida actual
%%
avv=mean(off_output(1:168))%promedio de los datos de salida con offset hasta el elemento 168
not_off_output=off_output-avv;% resta del promedio para obtener los datos de salida sin offset
figure
plot(time,not_off_input);hold on
plot(time, not_off_output);hold on%entrada sin offset vs salida sin offset
%%
col1=not_off_output(5:(length(not_off_output)/2)-1); % primera columna de la matriz de identificacion, desde el 5to elemento hasta ele elemento de la mitad 
col2=not_off_output(4:(length(not_off_output)/2)-2);
col3=not_off_input(5:(length(not_off_output)/2)-1);
col4=not_off_input(4:(length(not_off_output)/2)-2);
psi=[col1 col2 col3 col4]; %forma la matriz de identificación
y=not_off_output(6:length(not_off_output)/2);% crea la matriz de salidas
theta=y\psi;% calcula la matriz de errores, de donde salen los parámetros
a1=-theta(1);
a2=-theta(2);
b1=theta(3);
b2=theta(4);
%%
figure
out_fil=filter([0 b1 b2],[1 a1 a2],not_off_input);% uso del comando [I]filter[/I] para simular los datos 
plot(time,out_fil);hold on 
clc
clear
Entrada:



Salida, dañada:

 
#5
No lo puedo leer, me sale esto:

Código:
??? Error using ==> load
Unable to read MAT file Student_data.mat

File may be corrupt.
Cambialo a ascii.
 
#7
Donde escribiste:

Código:
theta=y\psi;% calcula la matriz de errores, de donde salen los parбmetros
es al revés:

Código:
theta=psi\y;% calcula la matriz de errores, de donde salen los parбmetros

Saludos.
 
Arriba