Contenido principal

Discretización y remuestreo de modelos

Este ejemplo muestra cómo utilizar los comandos para conversiones de tiempo continuo-discreto, discreto-continuo y discreto-discreto.

Comandos relacionados

Control System Toolbox™ ofrece una amplia compatibilidad para la discretización y el remuestreo de sistemas lineales, e incluye:

  • c2d discretiza modelos de tiempo continuo

  • d2c calcula extensiones de tiempo continuo de modelos de tiempo discreto

  • d2d remuestrea modelos de tiempo discreto.

Hay varios algoritmos disponibles para realizar estas operaciones, que incluyen:

  • Retención de orden cero

  • Retención de primer orden

  • Invariante al impulso

  • Tustin

  • Polos/ceros coincidentes.

Conversión de tiempo continuo-discreto

Por ejemplo, considere el sistema de segundo orden con retardo:

$$ G(s) = e^{-s} {s - 2 \over s^2 + 3 s + 20} $$

Para calcular su discretización de retención de orden cero (ZOH) con una tasa de muestreo de 10 Hz, escriba

G = tf([1 -2],[1 3 20],'inputdelay',1);
Ts = 0.1;   % sampling interval
Gd = c2d(G,Ts)
Gd =
 
             0.07462 z - 0.09162
  z^(-10) * ----------------------
            z^2 - 1.571 z + 0.7408
 
Sample time: 0.1 seconds
Discrete-time transfer function.

Compare las respuestas al escalón de tiempo continuo y discreto:

step(G,'b',Gd,'r')
legend('Continuous','Discretized')

Conversión de tiempo discreto-continuo

Por el contrario, puede utilizar d2c para calcular un "interpolante" de tiempo continuo para un sistema de tiempo discreto determinado. Comenzando con la discretización Gd calculada anteriormente, conviértala de nuevo a continua y compárela con el modelo original G:

Gc = d2c(Gd);
step(G,'b',Gd,'r',Gc,'g--')
legend('Original','Discretized','D2C Interpolant')

Las dos respuestas de tiempo continuo coinciden perfectamente. Es posible que no siempre obtenga una coincidencia perfecta, especialmente cuando el intervalo de muestreo Ts es demasiado grande y se produce aliasing durante la discretización:

Ts = 1;  % 10 times larger than previously
Hd = c2d(G,Ts);
Hc = d2c(Hd);
step(G,'b',Hd,'r',Hc,'g--',10)
legend('Original','Discretized','D2C Interpolant')

Remuestreo de sistemas de tiempo discreto

El remuestreo consiste en cambiar el intervalo de muestreo de un sistema de tiempo discreto. Esta operación se lleva a cabo con d2d. Por ejemplo, considere la discretización de 10 Hz Gd del modelo de tiempo continuo original G. Puede remuestrearlo a 40 Hz usando:

Gr = d2d(Gd,0.025)
Gr =
 
             0.02343 z - 0.02463
  z^(-40) * ----------------------
            z^2 - 1.916 z + 0.9277
 
Sample time: 0.025 seconds
Discrete-time transfer function.

Compare esto con una discretización directa a 40 Hz:

step(G,'b',Gr,'r',c2d(G,0.025),'g--',4)
legend('Continuous','Resampled from 0.1 to 0.025','Discretized with Ts=0.025')

Observe que ambos enfoques conducen a la misma respuesta.

¿Qué algoritmo y tasa de muestreo elegir?

Consulte el ejemplo Discretizing a Notch Filter para obtener más detalles sobre cómo la elección del algoritmo y la tasa de muestreo afectan a la precisión de la discretización.