La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
Estimation de modèles avec des données du domaine fréquentiel
System Identification Toolbox™ vous permet d’utiliser des données dans le domaine fréquentiel pour identifier des modèles linéaires en ligne de commande et dans l’application System Identification. Vous pouvez estimer des modèles linéaires en temps continu et en temps discret avec des données du domaine fréquentiel. Cette rubrique propose une présentation de l’estimation de modèle dans la toolbox avec des données du domaine fréquentiel. Pour un exemple d’estimation de modèle avec des données du domaine fréquentiel, consultez Frequency Domain Identification: Estimating Models Using Frequency Domain Data.
Les données du domaine fréquentiel peuvent être de deux types :
Données d’entrée-sortie dans le domaine fréquentiel — Vous obtenez les données en calculant les transformées de Fourier des signaux d’entrée u(t) et de sortie y(t) dans le domaine temporel. Les données sont un ensemble de signaux d’entrée U(ω) et de sortie Y(ω) dans le domaine fréquentiel. Dans la toolbox, les données d’entrée-sortie dans le domaine fréquentiel sont représentées à l’aide d’objets
iddata
. Pour plus d’informations, consultez Représentation de données du domaine fréquentiel dans la toolbox.Données de réponse en fréquence — Également appelées fonction de fréquence ou fonction de réponse en fréquence (FRF), les données se composent de mesures de fonction de transfert G(iω) d’un système pour un ensemble discret de fréquences ω. Les données de réponse en fréquence à une fréquence ω vous indiquent comment un système linéaire répond à une entrée sinusoïdale de la même fréquence. Dans la toolbox, les données de réponse en fréquence sont représentées avec des objets
idfrd
. Pour plus d’informations, consultez Représentation de données du domaine fréquentiel dans la toolbox. Vous pouvez obtenir des données de réponse en fréquence de la manière suivante :Mesurer directement des données de réponse en fréquence, par exemple avec un analyseur de spectre.
Réaliser l'analyse spectrale des données d’entrée-sortie dans le domaine temporel ou fréquentiel (objets
iddata
) avec des commandes telles quespa
etspafdr
.Calculer de la réponse en fréquence d’un modèle linéaire identifié avec des commandes telles que
freqresp
,bode
etidfrd
.
Le workflow d’estimation de modèle avec des données dans le domaine fréquentiel est le même que pour l’estimation avec des données dans le domaine temporel. Si nécessaire, vous pouvez d’abord préparer les données pour l’identification du modèle en supprimant les valeurs aberrantes et en filtrant les données. Vous estimez ensuite un modèle paramétrique linéaire à partir des données et validez l’estimation.
Avantages de l’utilisation de données dans le domaine fréquentiel
L’utilisation de données dans le domaine fréquentiel présente les avantages suivants :
Compression de données — Vous pouvez compresser de longs enregistrements de données lorsque vous convertissez des données du domaine temporel dans le domaine fréquentiel. Par exemple, vous pouvez utiliser des fréquences espacées logarithmiquement.
Non-uniformité — Les données dans le domaine fréquentiel n’ont pas besoin d’être uniformément espacées. Vos données peuvent avoir une résolution dépendante de la fréquence afin d’utiliser davantage de points de données dans les régions de fréquence qui vous intéressent. Par exemple, les fréquences qui vous intéressent peuvent être la plage de bandes passantes d’un système ou à proximité des résonances d’un système.
Préfiltrage — Le préfiltrage de données dans le domaine fréquentiel devient simple. Il équivaut à attribuer différents poids à différentes fréquences de données.
Signal en temps continu — Vous pouvez représenter des signaux en temps continu avec des données du domaine fréquentiel et utiliser les données pour une estimation.
Représentation de données du domaine fréquentiel dans la toolbox
Avant d’effectuer une estimation de modèle, vous spécifiez les données du domaine fréquentiel en tant qu’objets dans la toolbox. Vous pouvez spécifier des données du domaine fréquentiel en temps continu et en temps discret.
Données d’entrée-sortie dans le domaine fréquentiel — Spécifiez-les en tant qu’objet
iddata
. Dans l’objet, vous enregistrez U(ω), Y(ω) et le vecteur de fréquence ω. La propriétéDomain
de l’objet est'Frequency'
pour préciser que l’objet contient des signaux dans le domaine fréquentiel. Si U(ω), Y(ω) sont des transformées de Fourier à temps discret de signaux à temps discret, échantillonnées avec un pas d’échantillonnageTs
, indiquez le pas d’échantillonnage dans l’objetiddata
. Si U(ω), Y(ω) sont des transformées de Fourier de signaux à temps continu, spécifiezTs
égal à0
dans l’objetiddata
.Pour tracer les données en ligne de commande, utilisez la commande
plot
.Par exemple, vous pouvez tracer la phase et l’amplitude des données d’entrée-sortie dans le domaine fréquentiel.
Chargez les données d’entrée-sortie du domaine temporel.
load iddata1 z1
Les entrées
u
et sortiesy
du domaine temporel sont enregistrées dansz1
, un objetiddata
dont la propriétéDomain
est définie par'Time'
.Calculez la transformée de Fourier des données pour obtenir des données d’entrée-sortie dans le domaine fréquentiel.
zf = fft(z1);
La propriété
Domain
dezf
est définie par'Frequency'
, indiquant qu’il s’agit de données dans le domaine fréquentiel.Tracez l’amplitude et la phase des données d’entrée-sortie dans le domaine fréquentiel.
plot(zf)
Données de réponse en fréquence — Spécifiez-les en tant qu’objet
idfrd
. Si vous avez accès à Control System Toolbox™, vous pouvez également spécifier les données en tant qu’objetfrd
(Control System Toolbox).Pour tracer les données en ligne de commande, utilisez la commande
bode
.Par exemple, vous pouvez tracer la réponse en fréquence d’un modèle de fonction de transfert.
Créez un modèle de fonction de transfert de votre système.
sys = tf([1 0.2],[1 2 1 1]);
Calculez la réponse en fréquence du modèle de fonction de transfert
sys
en 100 points de fréquence. Spécifiez la plage des fréquences de 0,1 rad/s à 10 rad/s.freq = logspace(-1,1,100); frdModel = idfrd(sys,freq);
Tracez la réponse en fréquence du modèle.
bode(frdModel)
Pour plus d’informations sur les types de données dans le domaine fréquentiel et comment les spécifier, consultez Frequency-Domain Data Representation.
Vous pouvez également transformer des données dans le domaine fréquentiel en données dans le domaine temporel et inversement à l’aide des commandes suivantes.
Format de données original | En données dans le domaine temporel (objet iddata ) | En données dans le domaine fréquentiel (objet iddata ) | En données de réponse en fréquence (objet idfrd ) |
---|---|---|---|
Données dans le domaine temporel (objet iddata ) | N/A | Utilisez fft | |
Données dans le domaine fréquentiel (objet iddata ) | Utilisez ifft (fonctionne uniquement pour les données du domaine fréquentiel régulièrement espacées). | N/A | |
Données de réponse en fréquence (objet idfrd ) | Non supporté | Utilisez iddata . Le software crée un objet iddata dans le domaine fréquentiel qui a le même rapport entre la sortie et l’entrée que les données de réponse en fréquence de l’objet idfrd original. |
|
Pour plus d’informations sur la transformation entre les types de données dans l’application ou en ligne de commande, consultez la page de catégorie Transform Data.
Données dans le domaine fréquentiel en temps continu et en temps discret
Contrairement aux données dans le domaine temporel, le pas d’échantillonnage Ts
des données du domaine fréquentiel peut être nul. Les données dans le domaine fréquentiel avec un Ts
nul sont appelées données en temps continu. Les données dans le domaine fréquentiel avec un Ts
supérieur à zéro sont appelées données en temps discret.
Vous pouvez obtenir des données dans le domaine fréquentiel en temps continu (Ts
= 0) de la manière suivante :
Générez des données à partir d’expressions analytiques en temps continu connues.
Par exemple, supposons que vous savez que la réponse en fréquence de votre système est , où b est une constante. Supposons également que les entrées dans le domaine temporelle de votre système sont , où a est une constante supérieure à zéro et u(t) est nulle à chaque fois que t est inférieur à zéro. Vous pouvez calculer la transformée de Fourier de u(t) pour obtenir
Avec U(ω) et G(ω), vous pouvez alors obtenir l’expression dans le domaine fréquentiel des sorties :
Vous pouvez maintenant évaluer les expressions analytiques de Y(ω) et U(ω) sur une grille de valeurs de fréquence et obtenir un vecteur de valeurs de données d’entrée-sortie dans le domaine fréquentiel . Vous pouvez packager les données d’entrée-sortie en tant qu’objet
iddata
à temps continu en spécifiant un pas d’échantillonnageTs
nul.Ts = 0; zf = iddata(Ygrid,Ugrid,Ts,'Frequency',wgrid)
Calculez la réponse en fréquence d’un système linéaire en temps continu sur une grille de fréquences.
Par exemple, dans le code suivant, vous générez des données de réponse en fréquence à temps continu
FRDc
à partir d’un modèle de fonction de transfert à temps continusys
pour une grille de fréquencesfreq
.sys = idtf(1,[1 2 2]); freq = logspace(-2,2,100); FRDc = idfrd(sys,freq);
Mesurez les amplitudes et les phases d’une expérimentation sinusoïdale où le système de mesure utilise des filtres antirepliement. Vous mesurez la réponse du système aux entrées sinusoïdales à différentes fréquences et packagez les données en tant qu’objet
idfrd
. Par exemple, les données de réponse en fréquence mesurées avec un analyseur de spectre sont en temps continu.Vous pouvez également effectuer une expérimentation en utilisant des signaux à temps continu périodiques (ondes sinusoïdales multiples) comme entrées de votre système et en mesurant la réponse de votre système. Ensuite, vous pouvez packager les données d’entrée et de sortie en tant qu’objet
iddata
.
Vous pouvez obtenir des données dans le domaine fréquentiel en temps discret (Ts
> 0) de la manière suivante :
Transformez les valeurs mesurées dans le domaine temporel avec une transformée de Fourier discrète.
Par exemple, dans le code suivant, vous calculez la transformée de Fourier discrète des données dans le domaine temporel
y
qui sont mesurées à des instants discrets avec un pas d’échantillonnage de 0,01 seconde.t = 0:0.01:10; y = iddata(sin(2*pi*10*t),[],0.01); Y = fft(y);
Calculez la réponse en fréquence d’un système linéaire à temps discret.
Par exemple, dans le code suivant, vous générez des données de réponse en fréquence à temps discret
FRDd
à partir d’un modèle de fonction de transfert à temps discretsys
. Vous spécifiez un pas d’échantillonnage non nul pour créer le modèle à temps discret.Ts = 1; sys = idtf(1,[1 0.2 2.1],Ts); FRDd = idfrd(sys,logspace(-2,2,100));
Vous pouvez utiliser des données dans le domaine fréquentiel à temps continu pour identifier uniquement des modèles à temps continu. Vous pouvez utiliser des données dans le domaine fréquentiel à temps discret pour identifier à la fois des modèles à temps discret et à temps continu. Cependant, l’identification de modèles à temps continu à partir de données à temps discret requiert de connaître le comportement des données entre les échantillons. Pour plus d’informations, consultez Estimation de modèles à temps continu et à temps discret.
Remarque
Pour les données à temps discret, le logiciel ignore les données dans le domaine fréquentiel supérieur à la fréquence de Nyquist pendant l’estimation.
Prétraitement des données dans le domaine fréquentiel pour l’estimation du modèle
Après avoir représenté vos données dans le domaine fréquentiel avec des objets iddata
ou idfrd
, vous pouvez préparer les données pour l’estimation en supprimant les données erronées et en filtrant les données.
Pour visualiser les données erronées, tracez les données dans l’application ou utilisez la commande plot
(pour les objets iddata
) ou bode
(pour les objets idfrd
). Après avoir identifié les données erronées dans le tracé, vous pouvez les supprimer. Par exemple, si vous voulez supprimer les points de données 20–30 de zf
, un objet iddata
dans le domaine fréquentiel, utilisez la syntaxe suivante :
zf(20:30) = [];
Comme les données dans le domaine fréquentiel n’ont pas besoin d’être spécifiées avec un espacement uniforme, vous n’avez pas besoin de remplacer les valeurs aberrantes.
Vous pouvez également préfiltrer le bruit haute fréquence dans vos données. Vous pouvez préfiltrer les données dans le domaine fréquentiel dans l’application ou utiliser idfilt
en ligne de commande. Le préfiltrage des données permet également de supprimer les déviations qui sont des perturbations basse fréquence. En plus de minimiser le bruit, le préfiltrage permet de focaliser votre modèle sur des bandes de fréquence spécifiques. La plage de fréquences d'intéret correspond souvent à une bande passante sur les points de rupture d'un diagramme de Bode. Par exemple, si vous modélisez un système physique pour des applications de design de système de contrôle, vous pouvez préfiltrer les données pour améliorer les fréquences autour de la bande passante en boucle fermée souhaitée.
Pour plus d’informations, consultez Filtering Data.
Estimation de modèles paramétriques linéaires
Après avoir prétraité les données dans le domaine fréquentiel, vous pouvez les utiliser pour estimer des modèles à temps continu et à temps discret.
Types de modèles supportés
Vous pouvez estimer les modèles paramétriques linéaires suivants à l’aide de données dans le domaine fréquentiel. La composante de bruit des modèles n’est pas estimée, sauf pour les modèles ARX.
Type de modèle | Informations supplémentaires | Commandes pour l'estimation | Estimation dans l’application |
---|---|---|---|
Transfer Function Models | Consultez Estimate Transfer Function Models in the System Identification App. | ||
State-Space Models | La matrice K estimée du modèle de représentation d’état est nulle. | Consultez Estimate State-Space Models in System Identification App. | |
Process Models | Le modèle de perturbation n’est pas estimé. | Consultez Estimate Process Models Using the App. | |
Input-Output Polynomial Models | Vous pouvez estimer uniquement des modèles à erreur de sortie et ARX. | Consultez Estimate Polynomial Models in the App. | |
Linear Grey-Box Models | Les paramètres du modèle qui ne sont pas liés à la matrice de bruit K ne sont pas estimés. | L’estimation du modèle boîte grise n’est pas disponible dans l’application. | |
Correlation Models (modèles de réponse impulsionnelle) | Consultez Estimate Impulse-Response Models Using System Identification App. | ||
Frequency-Response Models (estimés en tant qu’objets idfrd ) | Consultez Estimate Frequency-Response Models in the App. |
Avant d’effectuer l’estimation, vous pouvez spécifier les options d’estimation, comme la manière dont le logiciel traite les conditions initiales des données d’estimation. Pour ce faire, en ligne de commande, utilisez l’ensemble d’options d’estimation correspondant à la commande d’estimation. Par exemple, supposons que vous vouliez estimer un modèle de fonction de transfert à partir de données dans le domaine fréquentiel zf
et que vous vouliez également estimer les conditions initiales des données. Utilisez l’ensemble d’options tfestOptions
pour spécifier les options d’estimation, puis estimez le modèle.
opt = tfestOptions('InitialCondition','estimate'); sys = tfest(zf,opt);
sys
est le modèle de fonction de transfert estimé. Pour des informations sur l’extraction des valeurs des paramètres estimées à partir du modèle, consultez Extracting Numerical Model Data. Après l’estimation, vous pouvez valider le modèle estimé.
Remarque
Une condition initiale nulle pour les données du domaine temporel n’implique par une condition initiale nulle pour les données du domaine fréquentiel correspondantes. Pour des données du domaine temporel, des conditions initiales nulles signifient que l’on suppose le système au repos avant le début de la collecte de données. Dans le domaine fréquentiel, les conditions initiales peuvent être ignorées uniquement si les données collectées sont de nature périodique. Ainsi, si vous avez des données dans le domaine temporel collectées avec des conditions initiales nulles et que vous les convertissez en données dans le domaine fréquentiel, vous devez estimer aussi les conditions initiales. Vous ne pouvez pas les spécifier comme nulles (zéro).
Vous ne pouvez pas effectuer les estimations suivantes avec des données du domaine fréquentiel :
Estimation de la composante de bruit d’un modèle linéaire, sauf pour les modèles ARX.
Estimation de modèles de séries temporelles utilisant uniquement des données du spectre. Les données du spectre correspondent au spectre de puissance d’un signal, généralement enregistré dans la propriété
SpectrumData
d’un objetidfrd
.
Estimation de modèles à temps continu et à temps discret
Vous pouvez estimer tous les modèles linéaires supportés comme modèles à temps discret, sauf pour les modèles de processus. Les modèles de processus sont uniquement définis en temps continu. Pour l’estimation de modèles à temps discret, vous devez utiliser des données en temps discret.
Vous pouvez estimer tous les modèles linéaires supportés comme des modèles en temps continu, sauf pour les modèles de corrélation (consultez impulseest
). Vous pouvez estimer des modèles en temps continu à l’aide de données en temps continu et en temps discret. Pour des informations sur les données en temps continu et en temps discret, consultez Données dans le domaine fréquentiel en temps continu et en temps discret.
Si vous estimez un modèle en temps continu à l’aide de données en temps discret, vous devez spécifier le comportement entre les échantillons des données. La spécification du comportement entre les échantillons dépend du type de données du domaine fréquentiel.
Données d’entrée-sortie en temps discret dans le domaine fréquentiel (objet
iddata
) — Spécifiez le comportement entre les échantillons du signal d’entrée dans le domaine temporel u(t) dont vous avez calculé la transformée de Fourier pour obtenir le signal d’entrée dans le domaine fréquentiel U(ω).Données de réponse en fréquence en temps discret (objet
idfrd
) — Les données sont générées en calculant la réponse en fréquence d’un modèle en temps discret. Spécifiez le comportement entre les échantillons car la méthode de discrétisation suppose de calculer le modèle en temps discret à partir d’un modèle en temps continu sous-jacent. Pour un exemple, voir Spécifier le comportement entre les échantillons pour des données de réponse en fréquence à temps discret.
Vous pouvez spécifier le comportement entre les échantillons comme une fonction constante par morceaux (bloqueur d'ordre zéro), interpolée linéairement entre les échantillons (bloqueur du premier ordre) ou à bande limitée. Si vous spécifiez les données en temps discret de votre système comme étant à bande limitée (c’est-à-dire il n'y a aucune puissance au-dessus de la fréquence de Nyquist), le software traite les données comme des données en temps continu en définissant un pas d’échantillonnage nul. Le software estime ensuite un modèle à temps continu à partir des données. Pour plus d’informations, consultez Effect of Input Intersample Behavior on Continuous-Time Models.
Spécifier le comportement entre les échantillons pour des données de réponse en fréquence à temps discret
Cet exemple montre l’effet du comportement entre les échantillons sur l’estimation de modèles en temps continu à l’aide de données de réponse en fréquence à temps discret.
Générez des données de réponse en fréquence à temps discret. Pour ce faire, construisez d’abord un modèle de fonction de transfert à temps continu sys
. Ensuite, convertissez-le en modèle en temps discret sysd
à l’aide de la commande c2d
et de la méthode du bloqueur du premier ordre. Utilisez le modèle en temps discret sysd
pour générer des données de réponse en fréquence aux fréquences spécifiées freq
.
sys = idtf([1 0.2],[1 2 1 1]); sysd = c2d(sys,1,c2dOptions('Method','foh')); freq = logspace(-1,0,10); FRdata = idfrd(sysd,freq);
FRdata
sont des données en temps discret. Le software règle la propriété InterSample
de FRdata
sur 'foh'
, qui est la méthode de discrétisation qui a été utilisée pour obtenir sysd
à partir de sys
.
Estimez une fonction de transfert en temps continu du troisième ordre à partir de données en temps discret.
model1 = tfest(FRdata,3,1)
model1 = s + 0.2 ------------------- s^3 + 2 s^2 + s + 1 Continuous-time identified transfer function. Parameterization: Number of poles: 3 Number of zeros: 1 Number of free coefficients: 5 Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties. Status: Estimated using TFEST on frequency response data "FRdata". Fit to estimation data: 100% FPE: 2.223e-31, MSE: 6.619e-32
model1
est un modèle à temps continu estimé à l’aide de données de réponse en fréquence à temps discret. La dynamique en temps continu sous-jacente du modèle du troisième ordre original sys
est récupérée dans model1
car le comportement correct entre les échantillons est spécifié dans FRdata
.
Maintenant, spécifiez le comportement entre les échantillons comme un bloqueur d’ordre zéro et estimez un modèle de fonction de transfert du troisième ordre.
FRdata.InterSample = 'zoh';
model2 = tfest(FRdata,3,1)
model2 = -15.49 s - 3.294 --------------------------------- s^3 - 30.03 s^2 - 6.825 s - 17.04 Continuous-time identified transfer function. Parameterization: Number of poles: 3 Number of zeros: 1 Number of free coefficients: 5 Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties. Status: Estimated using TFEST on frequency response data "FRdata". Fit to estimation data: 94.71% FPE: 0.004856, MSE: 0.001619
model2
ne rend pas compte de la dynamique du modèle original sys
. Ainsi, des erreurs liées à l’échantillonnage sont introduites dans l’estimation du modèle lorsque le comportement entre les échantillons n’est pas spécifié correctement.
Convertir un modèle de données de réponse en fréquence en fonction de transfert
Cet exemple montre comment convertir un modèle de données de réponse en fréquence (FRD) en modèle de fonction de transfert. Traitez le modèle FRD comme des données d’estimation, puis estimez la fonction de transfert.
Obtenez un modèle FRD.
Par exemple, utilisez bode
pour obtenir les données de réponse en amplitude et en phase du système du cinquième ordre suivant :
Utilisez 100 points de fréquence entre 0,1 rad/s et 10 rad/s pour obtenir le modèle FRD. Utilisez frd
pour créer un objet de modèle de réponse en fréquence.
freq = logspace(-1,1,100); sys0 = tf([1 0.2],[1 1 0.8 0.4 0.12 0.04]); [mag,phase] = bode(sys0,freq); frdModel = frd(mag.*exp(1j*phase*pi/180),freq);
Obtenez la meilleure approximation du troisième ordre de la dynamique du système en estimant une fonction de transfert avec 3 zéros et 3 pôles.
np = 3; nz = 3; sys = tfest(frdModel,np,nz);
sys
est la fonction de transfert estimée.
Comparez la réponse du modèle FRD et le modèle de fonction de transfert estimé.
bode(frdModel,sys,freq(1:50));
Le modèle FRD est généré à partir du système du cinquième ordre sys0
. Alors que la fonction sys
, une approximation du troisième ordre, ne rend pas compte de la réponse complète de sys0
, elle rend correctement compte de la réponse jusqu’à environ 0,6 rad/s.
Valider le modèle estimé
Après avoir estimé un modèle pour votre système, vous pouvez valider s’il reproduit le comportement du système dans des limites acceptables. Il est recommandé d’utiliser des jeux de données distincts pour estimer et valider votre modèle. Vous pouvez utiliser des données dans le domaine temporel ou dans le domaine fréquentiel pour valider un modèle estimé à l’aide de données du domaine fréquentiel. Si vous utilisez des données de validation d’entrée-sortie pour valider le modèle estimé, vous pouvez comparer la réponse du modèle simulé aux données de validation mesurées en sortie. Si vos données de validation sont des données de réponse en fréquence, vous pouvez les comparer à la réponse en fréquence du modèle. Par exemple, pour comparer la sortie d’un modèle estimé sys
aux données de validation mesurées zv
, utilisez la syntaxe suivante :
compare(zv,sys);
Vous pouvez également effectuer une analyse des résidus. Pour plus d’informations, consultez Validating Models After Estimation.
Résolution des problèmes d’identification dans le domaine fréquentiel
Lorsque vous estimez un modèle à l’aide de données dans le domaine fréquentiel, l’algorithme d’estimation minimise une fonction (de coût) de perte. Par exemple, si vous estimez un modèle linéaire SISO à partir de données de réponse en fréquence f
, l’algorithme d’estimation minimise la fonction de perte des moindres carrés suivante :
Ici, W
est un poids dépendant de la fréquence que vous spécifiez, G
est le modèle linéaire qui doit être estimé, ω est la fréquence et Nf est le nombre de fréquences auxquelles les données sont disponibles. La quantité est l’erreur de réponse en fréquence. Pour les données d’entrée-sortie dans le domaine fréquentiel, l’algorithme minimise la norme pondérée de l’erreur de sortie au lieu de l’erreur de réponse en fréquence. Pour plus d’informations, consultez Loss Function and Model Quality Metrics. Pendant l’estimation, une dynamique erronée ou non prise en compte dans vos données peut affecter la fonction de perte (loss) et donner lieu à une estimation du modèle insatisfaisante.
Dynamique erronée imprévue — Généralement observée lorsque des régions de données de grande amplitude ont un rapport signal à bruit faible. L’erreur d’ajustement autour de ces ensembles de données contribue fortement à la fonction de perte. Par conséquent, l’algorithme d’estimation peut surajuster (overfit) et attribuer une dynamique imprévue au bruit dans ces régions. Pour résoudre ce problème :
Améliorez le rapport signal à bruit — Vous pouvez recueillir plusieurs jeux de données et en faire une moyenne. Si vous avez des données d’entrée-sortie dans le domaine fréquentiel, vous pouvez combiner plusieurs jeux de données à l’aide de la commande
merge
. Utilisez ces données pour l’estimation afin d’obtenir un meilleur résultat. Sinon, vous pouvez filtrer le jeu de données et l’utiliser pour l’estimation. Par exemple, utilisez un filtre de moyenne mobile sur les données pour lisser la réponse mesurée. Appliquez le filtre de lissage uniquement dans les régions de données dans lesquelles vous êtes sûr que l’irrégularité est due au bruit et non à la dynamique du système.Réduisez l’impact de certaines parties des données sur la fonction de perte — Vous pouvez spécifier un poids dépendant de la fréquence. Par exemple, si vous estimez un modèle de fonction de transfert, spécifiez le poids dans l’option
WeightingFilter
de l’ensemble des options pour l'estimationtfestOptions
. Spécifiez un poids faible dans les régions de fréquence où existe la dynamique erronée. Sinon, utilisez moins de points de données autour de cette région de fréquence.
Dynamique non prise en compte — Généralement, ce problème est observé lorsque la dynamique dont vous voulez rendre compte a une faible amplitude par rapport au reste des données. Comme un mauvais ajustement aux données d’amplitude faible contribue moins à la fonction de perte, l’algorithme pourrait ignorer cette dynamique pour réduire les erreurs à d’autres fréquences. Pour résoudre ce problème :
Spécifiez un poids dépendant de la fréquence — Spécifiez un poids important pour la région de fréquence dans laquelle vous voulez rendre compte de la dynamique.
Utilisez plus de points de données autour de cette région.
Pour un exemple de ces techniques de résolution de problèmes, consultez Troubleshoot Frequency-Domain Identification of Transfer Function Models.
Si vous n’obtenez pas un modèle satisfaisant à l’aide de ces techniques de résolution de problèmes, essayez une structure de modèle ou un algorithme d’estimation différents.
Étapes suivantes après l’identification d’un modèle
Après avoir estimé un modèle, vous pouvez effectuer des transformations de modèle et extraire des paramètres du modèle, ainsi que simuler et prédire la réponse du modèle. Les tâches que vous pouvez effectuer sont notamment :
Transforming Between Discrete-Time and Continuous-Time Representations
Transforming Between Linear Model Representations — Transformer des représentations de modèle paramétrique linéaire, comme des représentations polynomiales, d’état et avec pôles et zéros.
Extracting Numerical Model Data — Par exemple, extraire les pôles et zéros du modèle à l’aide respectivement des commandes
pole
etzero
. Calculer la réponse fréquentielle du modèle pour un ensemble donné de fréquences à l’aide defreqresp
.