Contenuto principale

c2d

Convertire il modello da tempo continuo a tempo discreto

Descrizione

sysd = c2d(sysc,Ts) discretizza il modello di sistema dinamico a tempo continuo sysc utilizzando il blocco di ordine zero sugli input e un tempo di campionamento di Ts.

esempio

sysd = c2d(sysc,Ts,method) specifica il metodo di discretizzazione.

esempio

sysd = c2d(sysc,Ts,opts) specifica ulteriori opzioni per la discretizzazione.

esempio

[sysd,G] = c2d(___), dove sysc è un modello stato-spazio, restituisce una matrice G che mappa le condizioni iniziali a tempo continuo x0 e u0 del modello stato-spazio al vettore di stato iniziale a tempo discreto x[0].

Esempi

comprimi tutto

Discretizzare la seguente funzione di trasferimento a tempo continuo:

H(s)=e-0.3ss-1s2+4s+5.

Questo sistema presenta un ritardo di input di 0,3 s. Discretizzare il sistema utilizzando l'approssimazione a triangolo (blocco del primo ordine) con tempo di campionamento Ts = 0,1 s.

H = tf([1 -1],[1 4 5],'InputDelay', 0.3); 
Hd = c2d(H,0.1,'foh');

Paragonare le risposte al gradino dei sistemi a tempo continuo e discretizzati.

step(H,'-',Hd,'--')

MATLAB figure

Discretizzare la seguente funzione di trasferimento ritardata utilizzando un blocco di ordine zero in input e una velocità di campionamento di 10 Hz.

H(s)=e-0.25s10s2+3s+10.

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.
Model Properties

In questo esempio, il modello discretizzato hd presenta un ritardo di tre periodi di campionamento. L'algoritmo di discretizzazione assorbe il ritardo residuo del semiperiodo nei coefficienti di hd.

Paragonare le risposte al gradino dei modelli a tempo continuo e discretizzati.

step(h,'--',hd,'-')

MATLAB figure

Da R2024a

Creare un modello stato-spazio a tempo continuo con due stati e un ritardo di input.

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.
Model Properties

Discretizzare il modello utilizzando il metodo di discretizzazione di Tustin e un filtro di Thiran per modellare i ritardi frazionari. Tempo di campionamento Ts = 1 secondo.

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.
Model Properties

Per impostazione predefinita, la funzione modella i ritardi supplementari come ritardi interni nel modello discretizzato. Per modellare i ritardi supplementari come stati nel modello discretizzato, impostare l'opzione DelayModeling di c2dOptions su '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.
Model Properties

Il modello discretizzato contiene adesso tre stati supplementari x3, x4 e x5 corrispondenti a un filtro di Thiran del terzo ordine. Poiché il ritardo temporale diviso per il tempo di campionamento è 2,7, il filtro di Thiran del terzo ordine ('ThiranOrder' = 3) può approssimare l'intero ritardo temporale.

Stimare una funzione di trasferimento a tempo continuo e discretizzarla.

load iddata1
sys1c = tfest(z1,2);
sys1d = c2d(sys1c,0.1,'zoh');

Stimare una funzione di trasferimento a tempo discreto del secondo ordine.

sys2d = tfest(z1,2,'Ts',0.1);

Paragonare la risposta del modello discretizzato della funzione di trasferimento a tempo continuo sys1d e del modello a tempo discreto stimato direttamente sys2d.

compare(z1,sys1d,sys2d)

Figure contains an axes object. The axes object with ylabel y1 contains 3 objects of type line. These objects represent Validation data (y1), sys1d: 70.77%, sys2d: 69.3%.

I due sistemi sono pressoché identici.

Discretizzare un modello stato-spazio identificato per costruire un predittore un gradino avanti della risposta.

Creare un modello stato-spazio identificato a tempo continuo utilizzando i dati di stima.

load iddata2
sysc = ssest(z2,4);

Prevedere la risposta prevista a 1 gradino avanti di sysc.

predict(sysc,z2)

Figure contains an axes object. The axes object with ylabel y1 contains an object of type line. These objects represent Validation data (y1), sysc.

Discretizzare il modello.

sysd = c2d(sysc,0.1,'zoh');

Costruire un modello predittivo dal modello discretizzato sysd.

[A,B,C,D,K] = idssdata(sysd);
Predictor = ss(A-K*C,[K B-K*D],C,[0 D],0.1);

Predictor è un modello a due input che utilizza i segnali di output e di input misurati ([z1.y z1.u]) per calcolare la risposta prevista a 1 gradino di sysc.

Simulare il modello predittivo per ottenere la stessa risposta del comando predict.

lsim(Predictor,[z2.y,z2.u])

MATLAB figure

La simulazione del modello predittivo fornisce la stessa risposta di predict(sysc,z2).

Argomenti di input

comprimi tutto

Modello a tempo continuo, specificato come modello di sistema dinamico, come tf, ss o zpk. sysc non può essere un modello di dati di risposta in frequenza. sysc può essere un sistema SISO o MIMO, ma il metodo di discretizzazione 'matched' supporta solo i sistemi SISO.

sysc può presentare ritardi di input/di output o interni; tuttavia, i metodi 'matched', 'impulse' e 'least-squares' non supportano i modelli stato-spazio con ritardi interni.

I seguenti sistemi lineari identificati non possono essere discretizzati direttamente:

  • Modelli idgrey il cui FunctionType è 'c'. Convertire prima in modello idss.

  • Modelli idproc. Convertire prima in modello idtf o modello idpoly.

Tempo di campionamento, specificato come scalare positivo che rappresenta il periodo di campionamento del sistema a tempo discreto risultante. Ts è espresso in TimeUnit, che è la proprietà sysc.TimeUnit.

Metodo di discretizzazione, specificato come uno dei seguenti valori:

  • 'zoh': blocco di ordine zero (predefinito). Assume che gli input di controllo siano costanti a tratti nel tempo di campionamento Ts.

  • 'foh': approssimazione a triangolo (blocco del primo ordine modificato). Assume che gli input di controllo siano lineari a tratti nel tempo di campionamento Ts.

  • 'impulse': discretizzazione invariante all'impulso

  • 'tustin': metodo bilineare (Tustin). Per specificare questo metodo con il prewarping di frequenza (precedentemente noto come metodo 'prewarp'), utilizzare l'opzione PrewarpFrequency di c2dOptions.

  • 'matched': metodo di corrispondenza a polo zero

  • 'least-squares': metodo dei minimi quadrati

  • 'damped': approssimazione smorzata di Tustin basata sulla formula TRBDF2, solo per i modelli sparss.

Per informazioni sugli algoritmi di ciascun metodo di conversione, vedere Continuous-Discrete Conversion Methods.

Opzioni di discretizzazione, specificate come un oggetto c2dOptions. Ad esempio, specificare la frequenza di prewarp, l'ordine del filtro di Thiran o il metodo di discretizzazione come opzione.

Argomenti di output

comprimi tutto

Modello a tempo discreto, restituito come modello di sistema dinamico dello stesso tipo del sistema di input sysc.

Quando sysc è un modello (IDLTI) identificato, sysd:

  • Include sia i componenti misurati che i componenti di rumore di sysc. La varianza delle innovazioni λ del modello a tempo continuo identificato sysc, memorizzata nella relativa proprietà NoiseVariance, è interpretata come l'intensità della densità spettrale dello spettro del rumore. La varianza del rumore in sysd è quindi data da λ/Ts.

  • Non include la covarianza dei parametri stimati di sysc. Se si desidera traslare la covarianza durante la discretizzazione del modello, utilizzare translatecov.

Mappatura delle condizioni iniziali a tempo continuo x0 e u0 del modello stato-spazio sysc al vettore di stato iniziale a tempo discreto x[0], restituita come matrice. La mappatura delle condizioni iniziali al vettore di stato iniziale è la seguente:

x[0]=G[x0u0]

Per i modelli stato-spazio con ritardi temporali, c2d riempie la matrice G con zeri per tenere conto degli stati supplementari introdotti dalla discretizzazione di quei ritardi. Per una discussione sulla modellazione dei ritardi temporali nei sistemi discretizzati, vedere Continuous-Discrete Conversion Methods.

Cronologia versioni

Introduzione prima di R2006a

espandi tutto