Identificación de un MCC con modelo ARX y Estimación de
Mínimos Cuadrados
Código Matlab
% Motor de Corriente Continua con Excitacion independiente constante
% G(s)=num(s)/den(s)
%
num=87.9912;
den=[1 1.3370 580.821];
%
% Computo de G(z)=ZOH{G(s)}
%
Ts=1e-4;
[numd,dend]=c2dm(num,den,Ts,'zoh');
%
% Generacion de datos de entrada/salida a partir del sistema
% en tiempo continuo
%
t=[0:1e-4:10]';
u=sin(1*pi*t)+0.5*sin(3*pi*t);
y=lsim(num,den,u,t)+0.001*randn(size(u));
%
% Computo del regresor
%
%
yy=-y;
ry=[yy(2) yy(1)];
cy=yy(2:length(yy)-1,:);
phiy=toeplitz(cy,ry);
ru=[u(2) u(1)];
cu=u(2:length(u)-1,:);
phiu=toeplitz(cu,ru);
phit=[phiy phiu];
%
% Computo de la estima por minimos cuadrados
%
thetahat=phit\y(3:length(y),:);
%
% Computo de la salida estimada
%
[yhat,x]=dlsim([thetahat(3) thetahat(4)],[1 thetahat(1) thetahat(2)],u);
%
% Ploteo de la salida y la salida estimada
%
subplot(211)
plot(t(3:length(t),:),y(3:length(y),:),'g--',t(3:length(t),:),yhat(3:length(y)),'r')
title('Salida (trazos) y Salida Estimada (llena) - Indistinguibles');
axis([0 10 -0.25 0.25])
subplot(212)
plot(t(3:length(t),:),y(3:length(y),:)-yhat(3:length(y)))
xlabel('Tiempo [s]'),title('Error de Estima')
Volver a ISIS