Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

c2d

Conversión de modelos de tiempo continuo a discreto

Descripción

ejemplo

sysd = c2d(sysc,Ts) discretiza el modelo de sistema dinámico de tiempo continuo sysc utilizando una retención de orden cero en las entradas y un tiempo de muestreo de Ts.

ejemplo

sysd = c2d(sysc,Ts,method) especifica el método de discretización.

ejemplo

sysd = c2d(sysc,Ts,opts) especifica opciones adicionales para la discretización.

[sysd,G] = c2d(___), donde sysc es un modelo de espacio de estados, devuelve una matriz G que aplica las condiciones iniciales continuas x0 y u0 del modelo de espacio de estados al vector de estado inicial de tiempo discreto x[0].

Ejemplos

contraer todo

Discretice la siguiente función de transferencia de tiempo continuo:

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

Este sistema tiene un retardo de entrada de 0,3 s. Discretice el sistema utilizando la aproximación triangular (retención de primer orden) con tiempo de muestreo Ts = 0,1 s.

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

Compare las respuestas al escalón de los sistemas de tiempo continuo y discretizado.

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

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent H, Hd.

Discretice la siguiente función de transferencia con retardo utilizando una retención de orden cero en la entrada y una tasa de muestreo de 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.

En este ejemplo, el modelo discretizado hd presenta un retardo de tres periodos de muestreo. El algoritmo de discretización absorbe el retardo de medio periodo residual en los coeficientes de hd.

Compare las respuestas al escalón de los modelos de tiempo continuo y discretizado.

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

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent h, hd.

Cree un modelo de espacio de estados de tiempo continuo con dos estados y un retardo de entrada.

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.

Discretice el modelo utilizando el método de discretización de Tustin y un filtro de Thiran para crear el modelo de los retardos fraccionarios. Tiempo de muestreo Ts = 1 segundo.

opt = c2dOptions('Method','tustin','FractDelayApproxOrder',3);
sysd1 = c2d(sys,1,opt)
sysd1 =
 
  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.

El modelo discretizado contiene ahora tres estados adicionales x3, x4 y x5, correspondientes a un filtro de Thiran de tercer orden. Dado que el retardo de tiempo dividido por el tiempo de muestreo es 2,7, el filtro de Thiran de tercer orden ('FractDelayApproxOrder' = 3) puede aproximar la totalidad del retardo de tiempo.

Realice la estimación de una función de transferencia de tiempo continuo y proceda a su discretización.

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

Realice la estimación de una función de transferencia de tiempo discreto de segundo orden.

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

Compare la respuesta del modelo discretizado de función de transferencia de tiempo continuo, sys1d, y del modelo de tiempo discreto estimado directamente, 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%.

Los dos sistemas son casi idénticos.

Discretice un modelo de espacio de estados identificado para construir un predictor de un paso adelante de su respuesta.

Cree un modelo de espacio de estados de tiempo continuo identificado utilizando datos de estimación.

load iddata2
sysc = ssest(z2,4);

Anticipe la respuesta prevista de un paso adelante de 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.

Discretice el modelo.

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

Construya un modelo de predicción a partir del modelo discretizado, sysd.

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

Predictor es un modelo de dos entradas que utiliza las señales de salida y entrada ([z1.y z1.u]) medidas para calcular la respuesta prevista de un paso de sysc.

Simule el modelo de predicción para obtener la misma respuesta que el comando predict.

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

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Driving inputs, Predictor.

La simulación del modelo de predicción genera la misma respuesta que predict(sysc,z2).

Argumentos de entrada

contraer todo

Modelo de tiempo continuo, especificado como un modelo de sistema dinámico tal como tf, ss o zpk. sysc, no puede ser un modelo de datos de respuesta en frecuencia. sysc puede ser un sistema SISO o MIMO, salvo que el método de discretización 'matched' admite únicamente sistemas SISO.

sysc puede presentar retardos de tiempo de entrada/salida o internos; sin embargo, los métodos 'matched', 'impulse' y 'least-squares' no admiten modelos de espacio de estados con retardos internos.

Los siguientes sistemas lineales identificados no se pueden discretizar directamente:

  • Modelos idgrey cuyo FunctionType es 'c'. Conviértalos primero al modelo idss.

  • Modelos idproc. Conviértalos primero a un modelo idtf o idpoly.

El tiempo de muestreo, especificado como un escalar positivo que representa el periodo de muestreo del sistema de tiempo discreto resultante. El Ts se expresa en TimeUnit, que es la propiedad de sysc.TimeUnit.

Método de discretización, especificado como una de las siguientes opciones:

  • 'zoh': retención de orden cero (valor predeterminado). Supone que las entradas de control son constantes por partes a lo largo del tiempo de muestreo Ts.

  • 'foh': aproximación triangular (retención de primer orden modificada). Supone que las entradas de control son lineales por partes a lo largo del tiempo de muestreo Ts.

  • 'impulse': discretización de impulso invariante

  • 'tustin': método bilineal (Tustin). Para especificar este método con predistorsión de frecuencia (o lo que antes se conocía como método 'prewarp'), utilice la opción PrewarpFrequency de c2dOptions.

  • 'matched': método de correspondencia de polos y ceros

  • 'least-squares': método de mínimos cuadrados

  • 'damped': aproximación de Tustin con amortiguamiento basada en la fórmula TRBDF2 solo para modelos dispersos.

Para obtener más información sobre los algoritmos de cada método de conversión, consulte Continuous-Discrete Conversion Methods.

Opciones de discretización, especificadas como un objeto c2dOptions. Por ejemplo, especifique la frecuencia de predistorsión, el orden del filtro de Thiran o el método de discretización como opción.

Argumentos de salida

contraer todo

Modelo de tiempo discreto, devuelto como un modelo de sistema dinámico del mismo tipo que el sistema de entrada sysc.

Cuando sysc es un modelo identificado (IDLTI), sysd:

  • Incluye los componentes medidos y de ruido de sysc. La varianza de las innovaciones λ del modelo identificado de tiempo continuo sysc, almacenada en su propiedad NoiseVariance, se interpreta como la intensidad de la densidad espectral del espectro de ruido. Por lo tanto, la varianza de ruido en sysd es λ/Ts.

  • No incluye la covarianza del parámetro estimado de sysc. Si desea convertir la covarianza mientras discretiza el modelo, utilice translatecov.

Aplicación de las condiciones iniciales de tiempo continuo x0 y u0 del modelo de espacio de estados sysc al vector de estado inicial de tiempo discreto x[0], devuelto como una matriz. La aplicación de las condiciones iniciales al vector de estado inicial es la siguiente:

x[0]=G[x0u0]

Para los modelos de espacio de estados con retardos de tiempo, c2d rellena la matriz G con ceros para tener en cuenta los estados adicionales introducidos por la discretización de esos retardos. Consulte Continuous-Discrete Conversion Methods para una exposición sobre el modelado de los retardos de tiempo en los sistemas discretizados.

Historial de versiones

Introducido antes de R2006a