Identificazione numerica e Matlab
Inviato: 22 lug 2009, 13:10
Salve,
dato il processo fisico:
G(s)=5/(1+s)(1+2s)
sto cercando di tarare il modello matematico:
k/1+s(tau)
con la tecnica dell'identificazione Numerica.
Sto usando la funzione:
function out=emq(P)
global t;
global y;
global th;
k=P(1);
tau=P(2);
num=k;
den=[tau 1];
G0=tf(num,den)
ym=step(G0,t)
emq=0;
for h=1:length(th)
emq=emq+abs(interp1(t,y,th(h))-interp1(t,ym,th(h)))^2;
end
out=emq;
disp('***********');
disp('K='),k
disp('tau='),tau
disp('errore medio quadratico='),out
disp('*********');
pause(0.1);
##############
ed il listato per richiamare la funzione:
num=5;
den=conv([1 1],[2 1]);
th=1:1:10;
X = fminsearch('emq',[1 1])
P=X;
k=P(1);
tau=P(2);
num=k;
den=[tau 1];
G0=tf(num,den)
ym=step(G0,t)
plot(t,y);
hold on;
plot(t,ym,'r');
####
Ma ottengo questo andamento per la funzione:

In blu ho l'andamento del processo fisico in rosso del modello matematico, ciò che non mi convince è che i due andamenti si discostano molto.
Grazie a chi mi aiuterà
dato il processo fisico:
G(s)=5/(1+s)(1+2s)
sto cercando di tarare il modello matematico:
k/1+s(tau)
con la tecnica dell'identificazione Numerica.
Sto usando la funzione:
function out=emq(P)
global t;
global y;
global th;
k=P(1);
tau=P(2);
num=k;
den=[tau 1];
G0=tf(num,den)
ym=step(G0,t)
emq=0;
for h=1:length(th)
emq=emq+abs(interp1(t,y,th(h))-interp1(t,ym,th(h)))^2;
end
out=emq;
disp('***********');
disp('K='),k
disp('tau='),tau
disp('errore medio quadratico='),out
disp('*********');
pause(0.1);
##############
ed il listato per richiamare la funzione:
num=5;
den=conv([1 1],[2 1]);
th=1:1:10;
X = fminsearch('emq',[1 1])
P=X;
k=P(1);
tau=P(2);
num=k;
den=[tau 1];
G0=tf(num,den)
ym=step(G0,t)
plot(t,y);
hold on;
plot(t,ym,'r');
####
Ma ottengo questo andamento per la funzione:

In blu ho l'andamento del processo fisico in rosso del modello matematico, ciò che non mi convince è che i due andamenti si discostano molto.
Grazie a chi mi aiuterà
