Probleme d'identification sous MatLab
Utilisateur anonyme
-
nel -
nel -
Bonjour, j'utilise la toolbox identif de MatLab et je cherche à identifier un signal sous MatLab; sans succès.
Ci-dessous un cas d'école que j'ai voulu tester: je simule un filtre du 2nd ordre et je génère sa réponse temporelle à un échelon.
C'est ensuite ce signal temporel que je cherche à identifier sans succès.
(Programme essai_identif.m)
Quelqu'un peut-il me dire ou est l'erreur dans mon programme?
Merci!
Programme essai_identif.m:
---------------------------------
clear all;close all
% je génère mon cas d'école
n0 = [0 -150 150];
d0 = [1 120 1200];
SYS_log = tf(n0,d0);
ltiview('step',SYS_log);
zpk(SYS_log)
% Zero/pole/gain:
% -150 (s-1)
% -----------------
% (s+109) (s+11.01)
Te = 0.005;
T = [0:Te:5];
u=fix(mod([0:Te:5],1)/0.5);
Y=lsim(SYS_log,u,T);
figure;
subplot(2,1,1),plot(T,u);grid on
subplot(2,1,2),plot(T,Y);grid on % on retrouve bien la reponse du 2nd ordre simulé
% construction des données à identifier
donnee = iddata(Y,u',Te);
donnee.InputName = {'T°'};
donnee.OutputName = {'Vs'};
% identification
modele = pem(donnee(1:500));
compare(donnee(502:800),modele)% la comparaison entre mes données et le modèle idnetifé semble correcte
% les 3 lignes suivantes ne marchent pas!!
[n,d] = tfdata(modele,'v')
printsys(n,d,'z')
SYS = tf(n,d)
Yest=lsim(SYS,u,T);
figure;
subplot(2,1,1),plot(T,u);grid on
subplot(2,1,2),plot(T,Yest);grid on % on ne retrouve pas la reponse voulue!!!
Ci-dessous un cas d'école que j'ai voulu tester: je simule un filtre du 2nd ordre et je génère sa réponse temporelle à un échelon.
C'est ensuite ce signal temporel que je cherche à identifier sans succès.
(Programme essai_identif.m)
Quelqu'un peut-il me dire ou est l'erreur dans mon programme?
Merci!
Programme essai_identif.m:
---------------------------------
clear all;close all
% je génère mon cas d'école
n0 = [0 -150 150];
d0 = [1 120 1200];
SYS_log = tf(n0,d0);
ltiview('step',SYS_log);
zpk(SYS_log)
% Zero/pole/gain:
% -150 (s-1)
% -----------------
% (s+109) (s+11.01)
Te = 0.005;
T = [0:Te:5];
u=fix(mod([0:Te:5],1)/0.5);
Y=lsim(SYS_log,u,T);
figure;
subplot(2,1,1),plot(T,u);grid on
subplot(2,1,2),plot(T,Y);grid on % on retrouve bien la reponse du 2nd ordre simulé
% construction des données à identifier
donnee = iddata(Y,u',Te);
donnee.InputName = {'T°'};
donnee.OutputName = {'Vs'};
% identification
modele = pem(donnee(1:500));
compare(donnee(502:800),modele)% la comparaison entre mes données et le modèle idnetifé semble correcte
% les 3 lignes suivantes ne marchent pas!!
[n,d] = tfdata(modele,'v')
printsys(n,d,'z')
SYS = tf(n,d)
Yest=lsim(SYS,u,T);
figure;
subplot(2,1,1),plot(T,u);grid on
subplot(2,1,2),plot(T,Yest);grid on % on ne retrouve pas la reponse voulue!!!
A voir également:
- Probleme d'identification sous MatLab
- Entrer les informations d'identification reseau - Guide
- Supprimer identification instagram - Guide
- Identification instagram - Guide
- Intel processor identification utility - Télécharger - Informations & Diagnostic
- Ethernet identification ✓ - Forum Réseau
2 réponses
Normal, car le modèle identifié est un modèle discret. Si tu veux identifier ton modèle directement dans le domène continu, utilise la fonction idproc
mRef = idproc('P2Z');
m = pem(donnee,mRef)
Process model with transfer function
1+Tz*s
G(s) = K * ------------------
(1+Tp1*s)(1+Tp2*s)
with K = 0.125
Tp1 = 0.090825
Tp2 = 0.0091752
Tz = -1
Estimated using PEM from data set donnee
Loss function 1.81417e-030 and FPE 1.82873e-030
mRef = idproc('P2Z');
m = pem(donnee,mRef)
Process model with transfer function
1+Tz*s
G(s) = K * ------------------
(1+Tp1*s)(1+Tp2*s)
with K = 0.125
Tp1 = 0.090825
Tp2 = 0.0091752
Tz = -1
Estimated using PEM from data set donnee
Loss function 1.81417e-030 and FPE 1.82873e-030