La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
c2d
Conversion de modèle du temps continu au temps discret
Description
discrétise le modèle de système dynamique en temps continu Modèles de systèmes dynamiques sysd
= c2d(sysc
,Ts
)sysc
au moyen d’un bloqueur d'ordre zéro sur les entrées et d’un pas d'échantillonnage de Ts
.
Exemples
Discrétisez la fonction de transfert en temps continu suivante :
Ce système présente un retard en entrée de 0,3 s. Discrétisez le système au moyen de l'approximation triangulaire (bloqueur du premier ordre) avec un pas d'échantillonnage Ts
= 0,1 s.
H = tf([1 -1],[1 4 5],'InputDelay', 0.3); Hd = c2d(H,0.1,'foh');
Comparez les réponses indicielles des systèmes en temps continu et des systèmes discrétisés.
step(H,'-',Hd,'--')
Discrétisez la fonction de transfert retardée suivante avec un bloqueur d'ordre zéro sur l'entrée et un taux d’échantillonnage de 10 Hz.
h = tf(10,[1 3 10],'IODelay',0.25);
hd = c2d(h,0.1)
hd = 0.01187 z^2 + 0.06408 z + 0.009721 z^(-3) * ---------------------------------- z^2 - 1.655 z + 0.7408 Sample time: 0.1 seconds Discrete-time transfer function.
Dans cet exemple, le modèle discrétisé hd
présente un retard de trois périodes d'échantillonnage. L'algorithme de discrétisation absorbe le retard résiduel de la demi-période dans les coefficients de hd
.
Comparez les réponses indicielles des modèles en temps continu et des modèles discrétisés.
step(h,'--',hd,'-')
Depuis R2024a
Créez un modèle de représentation d'état en temps continu, avec deux états et un retard en entrée.
sys = ss(tf([1,2],[1,4,2])); sys.InputDelay = 2.7
sys = A = x1 x2 x1 -4 -2 x2 1 0 B = u1 x1 2 x2 0 C = x1 x2 y1 0.5 1 D = u1 y1 0 Input delays (seconds): 2.7 Continuous-time state-space model.
Discrétisez le modèle au moyen de la méthode de discrétisation de Tustin et d’un filtre de Thiran, pour modéliser les retards fractionnaires. Pas d’échantillonnage Ts
= 1 seconde.
opt = c2dOptions('Method','tustin','ThiranOrder',3); sysd1 = c2d(sys,1,opt)
sysd1 = A = x1 x2 x1 -0.4286 -0.5714 x2 0.2857 0.7143 B = u1 x1 0.5714 x2 0.2857 C = x1 x2 y1 0.2857 0.7143 D = u1 y1 0.2857 (values computed with all internal delays set to zero) Internal delays (sampling periods): 1 1 1 Sample time: 1 seconds Discrete-time state-space model.
Par défaut, la fonction modélise les retards supplémentaires comme des retards internes dans le modèle discrétisé. Pour modéliser les retards supplémentaires en tant qu'états dans le modèle discrétisé, définissez l'option DelayModeling
de c2dOptions
sur 'state'
.
opt2 = c2dOptions('Method','tustin','ThiranOrder',3,'DelayModeling','state'); sysd2 = c2d(sys,1,opt2)
sysd2 = A = x1 x2 x3 x4 x5 x1 -0.4286 -0.5714 -0.00265 0.06954 2.286 x2 0.2857 0.7143 -0.001325 0.03477 1.143 x3 0 0 -0.2432 0.1449 -0.1153 x4 0 0 0.25 0 0 x5 0 0 0 0.125 0 B = u1 x1 0.002058 x2 0.001029 x3 8 x4 0 x5 0 C = x1 x2 x3 x4 x5 y1 0.2857 0.7143 -0.001325 0.03477 1.143 D = u1 y1 0.001029 Sample time: 1 seconds Discrete-time state-space model.
Le modèle discrétisé contient à présent trois états supplémentaires x3
, x4
et x5
correspondant à un filtre de Thiran du troisième ordre. Étant donné que le retard divisé par le pas d'échantillonnage est de 2,7, le filtre de Thiran du troisième ordre ('ThiranOrder'
= 3) peut approximer l'ensemble du retard.
Cet exemple utilise :
Estimez une fonction de transfert en temps continu et discrétisez-la.
load iddata1 sys1c = tfest(z1,2); sys1d = c2d(sys1c,0.1,'zoh');
Estimez une fonction de transfert en temps discret du deuxième ordre.
sys2d = tfest(z1,2,'Ts',0.1);
Comparez la réponse du modèle de fonction de transfert en temps continu discrétisé, sys1d
, et le modèle en temps discret directement estimé, sys2d
.
compare(z1,sys1d,sys2d)
Les deux systèmes sont pour ainsi dire identiques.
Discrétisez un modèle de représentation d'état identifié pour constituer un prédicteur de sa réponse avec un pas d’avance.
Créez un modèle de représentation d'état identifié en temps continu en utilisant des données d'estimation.
load iddata2
sysc = ssest(z2,4);
Prévoyez la réponse prédite de sysc
avec un pas d’avance.
predict(sysc,z2)
Discrétisez le modèle.
sysd = c2d(sysc,0.1,'zoh');
Constituez un modèle prédictif à partir du modèle discrétisé, sysd
.
[A,B,C,D,K] = idssdata(sysd); Predictor = ss(A-K*C,[K B-K*D],C,[0 D],0.1);
Predictor
est un modèle à deux entrées qui utilise les signaux de sortie et d'entrée mesurés ([z1.y z1.u])
pour calculer la réponse prédite de sysc
avec un pas d’avance.
Simulez le modèle prédictif pour obtenir la même réponse que la commande predict
.
lsim(Predictor,[z2.y,z2.u])
La simulation du modèle prédictif permet d’obtenir la même réponse que predict(sysc,z2)
.
Arguments d'entrée
Modèle en temps continu, spécifié comme étant un modèle de système dynamique tel que tf
, ss
, ou zpk
. sysc
ne peut pas être un modèle de données de réponse en fréquence. sysc
peut être un système SISO ou MIMO, si ce n’est que la méthode de discrétisation 'matched'
ne supporte que les systèmes SISO.
Les méthodes sysc
peuvent présenter des retards en entrée/en sortie ou des retards internes. Pour autant, les méthodes 'matched'
, 'impulse'
et 'least-squares'
ne prennent pas en charge les modèles de représentation d'état avec des retards internes.
Les systèmes linéaires identifiés suivants ne peuvent pas être discrétisés directement :
Modèles
idgrey
dontFunctionType
est'c'
. Commencez par effectuer une conversion en modèleidss
.Modèles
idproc
. Commencez par effectuer une conversion en modèleidtf
ouidpoly
.
Pas d'échantillonnage spécifié comme un scalaire positif représentant la période d'échantillonnage du système en temps discret obtenu. Ts
se trouve dans TimeUnit
qui est la propriété sysc.TimeUnit
.
Méthode de discrétisation spécifiée sous la forme de l’une des valeurs suivantes :
'zoh'
: bloqueur d'ordre zéro (par défaut). Suppose que les entrées de commande sont une fonction constante par morceaux sur le pas d'échantillonnageTs
.'foh'
: approximation triangulaire (bloqueur de premier ordre modifié). Suppose que les entrées de commande sont une fonction linéaire par morceaux sur le pas d'échantillonnageTs
.'impulse'
: discrétisation invariante impulsionnelle'tustin'
: méthode bilinéaire (Tustin). Pour spécifier cette méthode avec préwarping de fréquence (anciennement méthode'prewarp'
), utilisez l'optionPrewarpFrequency
dec2dOptions
.'matched'
: méthode de mise en correspondance zéro-pôle'least-squares'
: méthode des moindres carrés'damped'
: approximation de Tustin amortie sur la base de la formuleTRBDF2
pour les modèlessparss
uniquement.
Pour plus d'informations sur les algorithmes de chaque méthode de conversion, voir Continuous-Discrete Conversion Methods.
Options de discrétisation spécifiées en tant qu’objet c2dOptions
. Par exemple, vous pouvez spécifier en tant qu'options le préwarping de fréquence, l'ordre du filtre de Thiran ou la méthode de discrétisation.
Arguments en sortie
Modèle en temps discret, renvoyé en tant que modèle de système dynamique du même type que le système d'entrée sysc
.
Lorsque sysc
est un modèle identifié (IDLTI), sysd
:
Comprend les composantes mesurées et de bruit de
sysc
. La variance des innovations λ du modèle identifié en temps continusysc
, stockée dans sa propriétéNoiseVariance
, est interprétée comme l'intensité de la densité spectrale du spectre de bruit. La variance du bruit danssysd
est donc λ/Ts.Ne comprend pas la covariance estimée des paramètres de
sysc
. Si vous souhaitez traduire la covariance tout en discrétisant le modèle, utiliseztranslatecov
.
Mise en correspondance des conditions initiales en temps continu x0 et u0 du modèle de représentation d’état sysc
vers le vecteur d'état initial en temps discret x[0], renvoyée sous forme de matrice. Mise en correspondance des conditions initiales vers le vecteur d'état initial :
Pour les modèles de représentation d’état avec des retards, c2d
remplit la matrice G
de zéros pour tenir compte des états supplémentaires ajoutés par la discrétisation de ces retards. Voir Continuous-Discrete Conversion Methods pour consulter une discussion autour de la modélisation des retards dans les systèmes discrétisés.
Historique des versions
Introduit avant R2006aLa commande c2d
n'ajoute plus d'états supplémentaires lors de la modélisation de retards supplémentaires. Par défaut, c2d
utilise désormais les retards internes et renvoie le modèle discrétisé avec le même nombre d'états. Cela se traduite par un comportement plus prévisible et cela simplifie la mise en correspondance de l'état initial du temps continu au temps discret.
Pour revenir à l'ancien comportement avant R2024a, créez un jeu d'options au moyen de c2dOptions
et définissez DelayModeling
sur "state"
.
Vous pouvez à présent discrétiser les modèles mechss
au moyen de la méthode d'approximation bilinéaire de Tustin. Pour les modèles mechss
, la méthode 'tustin'
calcule la forme du deuxième ordre de la discrétisation de Tustin. Cela revient à appliquer Tustin à l'équivalent sparss
du premier ordre du modèle mechss
.
Vous pouvez à présent utiliser c2d
pour discrétiser des modèles avec des décalages, tels que les modèles linéaires à variation de paramètres.
En outre, c2dOptions
propose deux nouvelles options
DelayModeling
: permet de spécifier si les retards supplémentaires doivent être modélisés comme des retards internes (par défaut) ou comme des états supplémentaires.Consistency
: permet d’assurer la cohérence des états et des retards dans les tableaux de représentation d'état. Cette option est utile pour la discrétisation des modèles LPV ou LTV maillés.
Voir aussi
c2dOptions
| d2c
| d2d
| thiran
| translatecov
(System Identification Toolbox) | Conversion de la fréquence du modèle
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)