Main Content

zpk

Modelo de cero-polo-ganancia

    Descripción

    Use zpk para crear modelos de cero-polo-ganancia o para convertir modelos de sistemas dinámicos al formato de modelo de cero-polo-ganancia.

    Los modelos de cero-polo-ganancia son una representación de funciones de transferencia de forma factorizada. Por ejemplo, considere la siguiente función de transferencia SISO de tiempo continuo:

    G(s)=s23s4s2+5s+6

    G(s) puede factorizarse en formato de cero-polo-ganancia como:

    G(s)=(s+1)(s4)(s+2)(s+3).

    Una representación más general del modelo SISO de cero-polo-ganancia es la siguiente:

    h(s)=k(sz(1))(sz(2))(sz(m))(sp(1))(sp(2))(sp(n))

    En este caso, z y p son los vectores de ceros y polos de valores reales o complejos, y K es la ganancia escalar de valores reales o complejos

    Para crear un objeto de modelo de cero-polo-ganancia, puede especificar los polos, los ceros y la ganancia directamente o convertir un modelo de otro tipo (por ejemplo, un modelo de espacio de estados ss) al formato de cero-polo-ganancia.

    También puede usar zpk para crear modelos generalizados de espacio de estados (genss) o modelos de espacio de estados con incertidumbre (uss (Robust Control Toolbox)).

    Creación

    Descripción

    ejemplo

    sys = zpk(zeros,poles,gain) crea un modelo de cero-polo-ganancia de tiempo continuo con zeros y poles especificados como vectores y el valor escalar de gain. La salida sys es un objeto de modelo zpk que almacena los datos del modelo. Establezca zeros o poles en [] para sistemas sin ceros ni polos. No es necesario que estas dos entradas tengan la misma longitud ni que el modelo sea adecuado (es decir, que tenga un exceso de polos).

    ejemplo

    sys = zpk(zeros,poles,gain,ts) crea un modelo de cero-polo-ganancia de tiempo discreto con tiempo de muestreo ts. Establezca ts en -1 o [] si no desea especificar el tiempo de muestreo.

    ejemplo

    sys = zpk(zeros,poles,gain,ltiSys) crea un modelo de cero-polo-ganancia con propiedades herdadas del modelo de sistema dinámico ltiSys, incluido el tiempo de muestreo.

    ejemplo

    sys = zpk(m) crea un modelo de cero-polo-ganancia que representa la ganancia estática m.

    ejemplo

    sys = zpk(___,Name,Value) establece Propiedades del modelo de cero-polo-ganancia usando uno o más argumentos de par nombre-valor para cualquiera de las combinaciones de entrada/argumento anteriores.

    ejemplo

    sys = zpk(ltiSys) convierte el modelo de sistema dinámico ltiSys en un modelo de cero-polo-ganancia.

    ejemplo

    sys = zpk(ltiSys,component) convierte el componente component especificado de ltiSys al formato de cero-polo-ganancia. Use esta sintaxis solo si ltiSys es un modelo lineal invariante en el tiempo (LTI), como un modelo idss o idtf.

    ejemplo

    s = zpk('s') crea una variable especial s que puede usar en una expresión racional para crear un modelo de cero-polo-ganancia de tiempo continuo. A veces, usar una expresión racional es más fácil e intuitivo que especificar los coeficientes de los polinomios.

    ejemplo

    z = zpk('z',ts) crea una variable especial z que puede usar en una expresión racional para crear un modelo de cero-polo-ganancia de tiempo discreto. Si no desea especificar el tiempo de muestreo, el argumento de entrada ts se debe establecer en -1.

    Argumentos de entrada

    expandir todo

    Ceros del modelo de cero-polo-ganancia, especificados como:

    Por ejemplo, si a es un parámetro ajustable realp con valor nominal 3, puede utilizar zeros = [1 2 a] para crear un modelo genss con ceros en s = 1 y s = 2, y un cero ajustable en s = 3.

    También es una propiedad del objeto zpk. Este argumento de entrada establece el valor inicial de la propiedad Z.

    Polos del modelo de cero-polo-ganancia, especificados como:

    También es una propiedad del objeto zpk. Este argumento de entrada establece el valor inicial de la propiedad P.

    Ganancia del modelo de cero-polo-ganancia, especificada como:

    También es una propiedad del objeto zpk. Este argumento de entrada establece el valor inicial de la propiedad K.

    Tiempo de muestreo, especificado como un escalar. También es una propiedad del objeto zpk. Este argumento de entrada establece el valor inicial de la propiedad Ts.

    Sistema dinámico, especificado como un modelo de sistema dinámico SISO o MIMO, o bien un arreglo de modelos de sistemas dinámicos. Se admiten los siguientes tipos de sistemas dinámicos:

    • Modelos LTI numéricos de tiempo continuo o de tiempo discreto, como modelos tf, zpk, ss o pid.

    • Modelos LTI generalizados o con incertidumbre, como modelos genss o uss (Robust Control Toolbox). (El uso de modelos con incertidumbre requiere una licencia de Robust Control Toolbox™).

      El modelo de cero-polo-ganancia resultante asume que

      • los valores actuales de los componentes ajustables para los bloques de diseño de control ajustables.

      • los valores nominales del modelo para los bloques de diseño de control con incertidumbre.

    • Modelos LTI identificados, como modelos idtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox), idpoly (System Identification Toolbox) y idgrey (System Identification Toolbox). Para seleccionar el componente del modelo identificado que desea convertir, especifique component. Si no especifica component, el comportamiento predeterminado de tf es convertir el componente medido del modelo identificado. El uso de modelos identificados requiere el software System Identification Toolbox™.

      Un modelo no lineal identificado no puede convertirse en un objeto de modelo zpk. Puede utilizar primero funciones de aproximación lineal, como linearize y linapp (esta funcionalidad requiere el software System Identification Toolbox).

    Ganancia estática, especificada como un escalar o una matriz. La ganancia estática o ganancia de estado estacionario de un sistema representa la relación entre la salida y la entrada en régimen estacionario.

    Componente del modelo identificado que se desea convertir, especificado con una de las siguientes opciones:

    • 'measured': convierte el componente medido de sys.

    • 'noise': convierte el componente de ruido de sys

    • 'augmented': convierte tanto el componente medido como el componente de ruido de sys.

    component solo es válido cuando sys es un modelo LTI identificado.

    Para obtener más información acerca de los modelos LTI identificados y sus componentes medidos y de ruido, consulte Identified LTI Models.

    Argumentos de salida

    expandir todo

    Modelo de sistema de salida, en uno de los siguientes formatos:

    • Un objeto de modelo de cero-polo-ganancia (zpk), cuando los argumentos de entrada zeros, poles y gain contienen valores numéricos.

    • Un objeto de modelo de espacio de estados generalizado (genss), cuando los argumentos de entrada zeros, poles y gain incluyen parámetros ajustables, como parámetros realp o matrices generalizadas (genmat).

    • Un objeto de modelo de espacio de estados con incertidumbre (uss), cuando los argumentos de entrada zeros, poles y gain incluyen parámetros con incertidumbre. El uso de modelos con incertidumbre requiere una licencia de Robust Control Toolbox.

    Propiedades

    expandir todo

    Ceros del sistema, especificados como:

    • Un arreglo de celdas de ceros de función de transferencia o las raíces del numerador para modelos SISO.

    • Un arreglo de celdas de vectores fila de Ny por Nu de los ceros para cada par E/S en un modelo MIMO, donde Ny es el número de salidas y Nu es el número de entradas.

    Los valores de Z pueden ser reales o complejos.

    Polos del sistema, especificados como:

    • Un arreglo de celdas de polos de función de transferencia o las raíces del denominador para modelos SISO.

    • Un arreglo de celdas de vectores fila de Ny por Nu de los polos para cada par E/S en un modelo MIMO, donde Ny es el número de salidas y Nu es el número de entradas.

    Los valores de P pueden ser reales o complejos.

    Ganancia del sistema, especificada como:

    • Un valor escalar para modelos SISO.

    • Una matriz de Ny por Nu que almacena los valores para cada par E/S del modelo MIMO, donde Ny es el número de salidas y Nu es el número de entradas.

    Los valores de K pueden ser reales o complejos.

    Especifica cómo los polinomios del numerador y denominador se factorizan para su visualización, especificados como una de las siguientes opciones:

    • 'roots': muestra los factores en cuanto a la ubicación de las raíces de los polinomios. 'roots' es el valor predeterminado de DisplayFormat

    • 'frequency': muestra los factores en cuanto a frecuencias naturales de la raíz ω0 y coeficientes de amortiguamiento ζ.

      El formato de visualización 'frequency' no está disponible para modelos de tiempo discreto con valor Variable 'z^-1' o 'q^-1'.

    • 'time constant': muestra los factores en cuanto a tiempo de la raíz τ y coeficientes de amortiguamiento ζ.

      El formato de visualización 'time constant' no está disponible para modelos de tiempo discreto con valor Variable 'z^-1' o 'q^-1'.

    Para modelos de tiempo continuo, la siguiente tabla muestra cómo los factores de polinomios se organizan en cada formato de visualización.

    Valor DisplayNameFactor de primer orden (raíz real R)Factor de segundo orden (par de raíces complejas R=a±jb)
    'roots'(sR)(s2αs+β), donde α=2a, β=a2+b2
    'frequency'(1sω0), donde ω0=R12ζ(sω0)+(sω0)2, donde ω02=a2+b2, ζ=aω0
    'time constant'(1τs), donde τ=1R12ζ(τs)+(τs)2, donde τ=1ω0, ζ=aτ

    Para modelos de tiempo discreto, los factores de polinomios se organizan de forma similar a como ocurre en los modelos de tiempo continuo, con las siguientes sustituciones de variables:

    sw=z1Ts;RR1Ts,

    donde Ts es el tiempo de muestreo. En tiempo discreto, τ y ω0 se ajustan con precisión a la constante de tiempo y la frecuencia natural de la raíz de tiempo continuo equivalente, siempre que se cumplan las siguientes condiciones: |z1|<<Ts(ω0<<πTs=Nyquist frequency).

    Variable de visualización del modelo de cero-polo-ganancia, especificada como una de las siguientes opciones:

    • 's': la opción predeterminada para modelos de tiempo continuo

    • 'z': la opción predeterminada para modelos de tiempo discreto

    • 'p': equivalente a 's'

    • 'q': equivalente a 'z'

    • 'z^-1': la inversa de 'z'

    • 'q^-1': equivalente a 'z^-1'

    Retardo de transporte, especificado como una de las siguientes opciones:

    • Escalar: especifica el retardo de transporte de un sistema SISO, o bien un retardo de transporte común a todos los pares entrada/salida de un sistema MIMO.

    • Arreglo de Ny por Nu: especifica retardos de transporte independientes para cada par entrada/salida de un sistema MIMO. Aquí, Ny es el número de salidas y Nu es el número de entradas.

    Si se trata de un sistema de tiempo continuo, los retardos de transporte se deben especificar en las unidades dadas por la propiedad TimeUnit. Si se trata de un sistema de tiempo discreto, los retardos de transporte se deben especificar como múltiplos enteros del tiempo de muestreo, Ts. Para obtener más información sobre el retardo de tiempo, consulte Time Delays in Linear Systems.

    Retardo de entrada para cada canal de entrada, especificado como una de las siguientes opciones:

    • Escalar: especifica el retardo de entrada de un sistema SISO, o bien un retardo común a todas las entradas de un sistema con varias entradas.

    • Vector de Nu por 1: especifica retardos de entrada independientes para cada entrada de un sistema con varias entradas, donde Nu es el número de entradas.

    Si se trata de un sistema de tiempo continuo, los retardos de entrada se deben especificar en las unidades dadas por la propiedad TimeUnit. Si se trata de un sistema de tiempo discreto, los retardos de entrada se deben especificar como múltiplos enteros del tiempo de muestreo, Ts.

    Para obtener más información, consulte Time Delays in Linear Systems.

    Retardo de salida para cada canal de salida, especificado como una de las siguientes opciones:

    • Escalar: especifica el retardo de salida de un sistema SISO, o bien un retardo común a todas las salidas de un sistema con varias salidas.

    • Vector de Ny por 1: especifica retardos de salida independientes para cada salida de un sistema con varias salidas, donde Ny es el número de salidas.

    Si se trata de un sistema de tiempo continuo, los retardos de salida se deben especificar en las unidades de tiempo dadas por la propiedad TimeUnit. Si se trata de un sistema de tiempo discreto, los retardos de salida se deben especificar como múltiplos enteros del tiempo de muestreo, Ts.

    Para obtener más información, consulte Time Delays in Linear Systems.

    Tiempo de muestreo, especificado como:

    • 0 si se trata de un sistema de tiempo continuo.

    • Un escalar positivo que representa el período de muestreo de un sistema de tiempo discreto. Ts se debe especificar en las unidades de tiempo dadas por la propiedad TimeUnit.

    • -1 si se trata de un sistema de tiempo discreto con un tiempo de muestreo indefinido.

    Nota

    Cambiar Ts no discretiza ni remuestrea el modelo. Para la conversión entre representaciones de tiempo continuo y de tiempo discreto, use c2d y d2c. Para cambiar el tiempo de muestreo de un sistema de tiempo discreto use d2d.

    Unidades de la variable tiempo, especificadas como una de las siguientes opciones:

    • 'nanoseconds'

    • 'microseconds'

    • 'milliseconds'

    • 'seconds'

    • 'minutes'

    • 'hours'

    • 'days'

    • 'weeks'

    • 'months'

    • 'years'

    Cambiar TimeUnit no afecta a otras propiedades, pero sí cambia el comportamiento general del sistema. Use chgTimeUnit para la conversión entre distintas unidades de tiempo sin modificar el comportamiento del sistema.

    Nombres de los canales de entrada, especificados como una de las siguientes opciones:

    • Un vector de caracteres, para un modelo con una sola entrada.

    • Un arreglo de celdas de vectores de caracteres, para un modelo con varias entradas.

    • '', para no especificar un nombre, para cualquier canal de entrada.

    Como alternativa, se pueden asignar nombres a las entradas de un modelo de varias entradas mediante la expansión automática de vectores. Por ejemplo, si sys es un modelo de dos entradas, se puede introducir lo siguiente:

    sys.InputName = 'controls';

    En este caso, el valor se expandirá automáticamente y los nombres de las entradas serán {'controls(1)';'controls(2)'}.

    Se puede usar la notación abreviada u para hacer referencia a la propiedad InputName. Por ejemplo, sys.u es equivalente a sys.InputName.

    Utilice InputName para:

    • Identificar los canales en la visualización y las gráficas del modelo.

    • Extraer los subsistemas de un sistema MIMO.

    • Especificar puntos de conexión a la hora de interconectar modelos.

    Unidades de los canales de entrada, especificadas como una de las siguientes opciones:

    • Un vector de caracteres, para un modelo con una sola entrada.

    • Un arreglo de celdas de vectores de caracteres, para un modelo con varias entradas.

    • '' para no especificar una unidad, para cualquier canal de entrada.

    Use InputUnit para especificar las unidades de las señales de entrada. InputUnit no afecta al comportamiento del sistema.

    Grupos de canales de entrada, especificados como una estructura. Use InputGroup para asignar los canales de entrada de un sistema MIMO a grupos y poder referirse a cada uno de los grupos con un nombre. Los nombres de los campos de InputGroup son los nombres de los grupos y los valores de los campos son los canales de entrada de cada grupo. Por ejemplo, puede introducir lo siguiente para crear grupos de entradas llamados controls y noise que incluyan los canales de entrada 1 y 2, y los canales de entrada 3 y 5, respectivamente.

    sys.InputGroup.controls = [1 2];
    sys.InputGroup.noise = [3 5];

    Luego, puede usar el siguiente comando para extraer el subsistema de las entradas del grupo controls a todas las salidas.

    sys(:,'controls')

    De forma predeterminada, InputGroup es una estructura sin campos.

    Nombres de los canales de salida, especificados como una de las siguientes opciones:

    • Un vector de caracteres, para un modelo con una sola salida.

    • Un arreglo de celdas de vectores de caracteres, para un modelo con varias salidas.

    • '', para no especificar un nombre, para cualquier canal de salida.

    Como alternativa, se pueden asignar nombres a las salidas de un modelo de varias salidas mediante la expansión automática de vectores. Por ejemplo, si sys es un modelo de dos salidas, se puede introducir lo siguiente:

    sys.OutputName = 'measurements';

    En este caso, el valor se expandirá automáticamente y los nombres de las salidas serán {'measurements(1)';'measurements(2)'}.

    También se puede usar la notación abreviada y para hacer referencia a la propiedad OutputName. Por ejemplo, sys.y es equivalente a sys.OutputName.

    Utilice OutputName para:

    • Identificar los canales en la visualización y las gráficas del modelo.

    • Extraer los subsistemas de un sistema MIMO.

    • Especificar puntos de conexión a la hora de interconectar modelos.

    Unidades los canales de salida, especificadas como una de las siguientes opciones:

    • Un vector de caracteres, para un modelo con una sola salida.

    • Un arreglo de celdas de vectores de caracteres, para un modelo con varias salidas.

    • '' para no especificar una unidad, para cualquier canal de salida.

    Use OutputUnit para especificar las unidades de las señales de salida. OutputUnit no afecta al comportamiento del sistema.

    Grupos de canales de salida, especificados como una estructura. Use OutputGroup para asignar los canales de salida de un sistema MIMO a grupos y poder referirse a cada uno de los grupos con un nombre. Los nombres de los campos de OutputGroup son los nombres de los grupos y los valores de los campos son los canales de salida de cada grupo. Por ejemplo, puede crear grupos de salidas llamados temperature y measurement que incluyan el canal de salida 1, 3 y los canales de salida 5, respectivamente.

    sys.OutputGroup.temperature = [1];
    sys.OutputGroup.measurement = [3 5];

    Luego, puede usar el siguiente comando para extraer el subsistema de todas las entradas a las salidas del grupo measurement.

    sys('measurement',:)

    De forma predeterminada, OutputGroup es una estructura sin campos.

    Nombre del sistema, especificado como un vector de caracteres. Por ejemplo, 'system_1'.

    Texto especificado por el usuario que desee asociar con el sistema, especificado como un vector de caracteres, o bien un arreglo de celdas de vectores de caracteres. Por ejemplo, 'System is MIMO'.

    Datos especificados por el usuario que desee asociar con el sistema, especificado como cualquier tipo de dato de MATLAB.

    Cuadrícula de muestreo para arreglos de modelos, especificada como un arreglo de estructuras.

    Use SamplingGrid para hacer un seguimiento de los valores de las variables asociados con cada uno de los modelos de un arreglo de modelos, incluyendo arreglos de modelos lineales invariantes en el tiempo identificados (IDLTI).

    Establezca los nombres de los campos de la estructura como nombres de las variables de muestreo. Establezca los valores de los campos como valores de las variables muestreadas asociadas con cada modelo del arreglo. Todas las variables de muestreo deben ser escalares numéricos y todos los arreglos de valores muestreados deben coincidir con las dimensiones del arreglo de modelos.

    Por ejemplo, puede crear un arreglo de modelos lineales de 11 por 1, sysarr, tomando instantáneas de un sistema lineal variante en el tiempo en los instantes de tiempo t = 0:10. El siguiente código almacena las muestras de tiempo junto con los modelos lineales.

     sysarr.SamplingGrid = struct('time',0:10)

    Del mismo modo, puede crear un arreglo de modelos de 6 por 9, M, muestreando de forma independiente dos variables, zeta y w. El siguiente código aplica los valores de (zeta,w) a M.

    [zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
    M.SamplingGrid = struct('zeta',zeta,'w',w)

    Cuando se visualiza M, cada elemento del arreglo incluye los correspondientes valores zeta y w.

    M
    M(:,:,1,1) [zeta=0.3, w=5] =
     
            25
      --------------
      s^2 + 3 s + 25
     
    
    M(:,:,2,1) [zeta=0.35, w=5] =
     
             25
      ----------------
      s^2 + 3.5 s + 25
     
    ...

    En el caso de los arreglos de modelos obtenidos por linealización de un modelo de Simulink® para distintos valores de los parámetros o distintos puntos de funcionamiento, el software rellena SamplingGrid automáticamente con los valores de las variables correspondientes a cada elemento del arreglo. Por ejemplo, los comandos de Simulink Control Design™ linearize (Simulink Control Design) y slLinearizer (Simulink Control Design) rellenan SamplingGrid automáticamente.

    De forma predeterminada, SamplingGrid es una estructura sin campos.

    Funciones del objeto

    Las siguientes listas contienen una muestra representativa de las funciones que se pueden usar con los modelos del tipo zpk. En general, cualquier función que se pueda aplicar a modelos de sistemas dinámicos se puede aplicar a un objeto del tipo zpk.

    expandir todo

    stepGráfica de respuesta al escalón del sistema dinámico; datos de respuesta al escalón
    impulseGráfica de la respuesta al impulso del sistema dinámico; datos de la respuesta al impulso
    lsimRepresentar una respuesta en el tiempo simulada de un sistema dinámico para entradas arbitrarias; datos de respuesta simulada
    bodeDiagrama de Bode de respuesta en frecuencia o datos de magnitud y fase
    nyquistDiagrama de Nyquist de la respuesta en frecuencia
    nicholsNichols chart of frequency response
    bandwidthAncho de banda de respuestas en frecuencia
    polePolos del sistema dinámico
    zeroCeros y ganancia del sistema dinámico SISO
    pzplotGráfica de polos y ceros de un modelo de sistema dinámico con opciones de personalización de gráficas adicionales
    marginMargen de ganancia, margen de fase y frecuencias de cruce
    tfModelo de función de transferencia
    ssModelo de espacio de estados
    c2dConversión de modelos de tiempo continuo a discreto
    d2cConvertir modelos de tiempo discreto a tiempo continuo
    d2dResample discrete-time model
    feedbackConexión de feedback de múltiples modelos
    connectBlock diagram interconnections of dynamic systems
    seriesConexión en serie de dos modelos
    parallelConexión paralela de dos modelos
    pidtunePID tuning algorithm for linear plant model
    rlocusGráfica del lugar de las raíces del sistema dinámico
    lqrLinear-Quadratic Regulator (LQR) design
    lqgLinear-Quadratic-Gaussian (LQG) design
    lqiControl lineal cuadrático integral
    kalmanDesign Kalman filter for state estimation

    Ejemplos

    contraer todo

    Para este ejemplo, considere el siguiente modelo de cero-polo-ganancia SISO de tiempo continuo:

    sys(s)=-2s(s-1-i)(s-1+i)(s-2)Continuous-time zero-pole-gain model

    Especifique los ceros, los polos y la ganancia, y cree el modelo de cero-polo-ganancia SISO.

    zeros = 0;
    poles = [1-1i 1+1i 2];
    gain = -2;
    sys = zpk(zeros,poles,gain)
    sys =
     
              -2 s
      --------------------
      (s-2) (s^2 - 2s + 2)
     
    Continuous-time zero/pole/gain model.
    

    Para este ejemplo, considere el siguiente modelo de cero-polo-ganancia SISO de tiempo discreto con tiempo de muestreo de 0,1 s:

    sys(s)=7(z-1)(z-2)(z-3)(z-6)(z-5)(z-4)Discrete-time SISO zero-pole-gain model

    Especifique los ceros, los polos, la ganancia y el tiempo de muestreo, y cree el modelo de cero-polo-ganancia SISO de tiempo discreto.

    zeros = [1 2 3];
    poles = [6 5 4];
    gain = 7;
    ts = 0.1;
    sys = zpk(zeros,poles,gain,ts)
    sys =
     
      7 (z-1) (z-2) (z-3)
      -------------------
       (z-6) (z-5) (z-4)
     
    Sample time: 0.1 seconds
    Discrete-time zero/pole/gain model.
    

    Para este ejemplo, cree un modelo de cero-polo-ganancia MIMO concatenando modelos de cero-polo-ganancia SISO. Considere el siguiente modelo de cero-polo-ganancia de tiempo continuo de una entrada y dos salidas:

    sys(s)=[(s-1)(s+1)(s+2)(s+2+i)(s+2-i)].

    Especifique el modelo de cero-polo-ganancia MIMO concatenando las entradas SISO.

    zeros1 = 1;
    poles1 = -1;
    gain = 1;
    sys1 = zpk(zeros1,poles1,gain)
    sys1 =
     
      (s-1)
      -----
      (s+1)
     
    Continuous-time zero/pole/gain model.
    
    zeros2 = -2;
    poles2 = [-2+1i -2-1i];
    sys2 = zpk(zeros2,poles2,gain)
    sys2 =
     
          (s+2)
      --------------
      (s^2 + 4s + 5)
     
    Continuous-time zero/pole/gain model.
    
    sys = [sys1;sys2]
    sys =
     
      From input to output...
           (s-1)
       1:  -----
           (s+1)
     
               (s+2)
       2:  --------------
           (s^2 + 4s + 5)
     
    Continuous-time zero/pole/gain model.
    

    Cree un modelo de cero-polo-ganancia para el modelo de tiempo discreto con varias entradas y varias salidas:

    sys(z)=[1(z+0.3)z(z+0.3)-(z-2)(z+0.3)3(z+0.3)]Discrete-time MIMO zero-pole-gain model

    con tiempo de muestreo de ts = 0.2 segundos.

    Especifique los ceros y los polos como arreglos de celdas y la ganancia como un arreglo.

    zeros = {[] 0;2 []};
    poles = {-0.3 -0.3;-0.3 -0.3};
    gain = [1 1;-1 3];
    ts = 0.2;

    Cree el modelo de cero-polo-ganancia MIMO de tiempo discreto.

    sys = zpk(zeros,poles,gain,ts)
    sys =
     
      From input 1 to output...
              1
       1:  -------
           (z+0.3)
     
           - (z-2)
       2:  -------
           (z+0.3)
     
      From input 2 to output...
              z
       1:  -------
           (z+0.3)
     
              3
       2:  -------
           (z+0.3)
     
    Sample time: 0.2 seconds
    Discrete-time zero/pole/gain model.
    

    Especifique los ceros, los polos y la ganancia junto con el tiempo de muestreo y cree el modelo de cero-polo-ganancia especificando los nombres de estados y entradas mediante pares nombre-valor.

    zeros = 4;
    poles = [-1+2i -1-2i];
    gain = 3;
    ts = 0.05;
    sys = zpk(zeros,poles,gain,ts,'InputName','Force')
    sys =
     
      From input "Force" to output:
         3 (z-4)
      --------------
      (z^2 + 2z + 5)
     
    Sample time: 0.05 seconds
    Discrete-time zero/pole/gain model.
    

    El número de nombres de entradas debe ser congruente con el número de ceros.

    Poner nombre a las entradas y salidas puede resultar útil cuando se trate de gráficas de respuesta para sistemas MIMO.

    step(sys)

    Figure contains an axes object. The axes object with title From: Force To: Out(1) contains an object of type line. This object represents sys.

    Observe el nombre de entrada Force en el título de la gráfica de respuesta al escalón.

    Para este ejemplo, cree un modelo de cero-polo-ganancia de tiempo continuo usando expresiones racionales. A veces, usar una expresión racional es más fácil e intuitivo que especificar los polos y ceros.

    Considere el siguiente sistema:

    sys(s)=ss2+2s+10.

    Para crear el modelo de función de transferencia, primero especifique s como un objeto zpk.

    s = zpk('s')
    s =
     
      s
     
    Continuous-time zero/pole/gain model.
    

    Cree el modelo de cero-polo-ganancia usando s en la expresión racional.

    sys = s/(s^2 + 2*s + 10)
    sys =
     
             s
      ---------------
      (s^2 + 2s + 10)
     
    Continuous-time zero/pole/gain model.
    

    Para este ejemplo, cree un modelo de cero-polo-ganancia de tiempo discreto usando una expresión racional. A veces, usar una expresión racional es más fácil e intuitivo que especificar los polos y ceros.

    Considere el siguiente sistema:

    sys(z)=z-1z2-1.85z+0.9.Discrete-time zero-pole-gain model

    Para crear el modelo de cero-polo-ganancia, primero especifique z como un objeto zpk y el tiempo de muestreo ts.

    ts = 0.1;
    z = zpk('z',ts)
    z =
     
      z
     
    Sample time: 0.1 seconds
    Discrete-time zero/pole/gain model.
    

    Cree el modelo de cero-polo-ganancia usando z en la expresión racional.

    sys = (z - 1) / (z^2 - 1.85*z + 0.9)
    sys =
     
             (z-1)
      -------------------
      (z^2 - 1.85z + 0.9)
     
    Sample time: 0.1 seconds
    Discrete-time zero/pole/gain model.
    

    Para este ejemplo, cree un modelo de cero-polo-ganancia con propiedades heredadas de otro modelo de cero-polo-ganancia. Considere los siguientes dos modelos de cero-polo-ganancia:

    sys1(s)=2ss(s+8)andsys2(s)=0.8(s-1)(s+3)(s-5).Two zero-pole-gain models with inherited properties

    Para este ejemplo, cree un modelo sys1 con las propiedades TimeUnit y InputDelay definidas en 'minutes'.

    zero1 = 0;
    pole1 = [0;-8];
    gain1 = 2;
    sys1 = zpk(zero1,pole1,gain1,'TimeUnit','minutes','InputUnit','minutes')
    sys1 =
     
        2 s
      -------
      s (s+8)
     
    Continuous-time zero/pole/gain model.
    
    propValues1 = [sys1.TimeUnit,sys1.InputUnit]
    propValues1 = 1x2 cell
        {'minutes'}    {'minutes'}
    
    

    Cree el segundo modelo de cero-polo-ganancia con propiedades heredadas de sys1.

    zero = 1;
    pole = [-3,5];
    gain2 = 0.8;
    sys2 = zpk(zero,pole,gain2,sys1)
    sys2 =
     
       0.8 (s-1)
      -----------
      (s+3) (s-5)
     
    Continuous-time zero/pole/gain model.
    
    propValues2 = [sys2.TimeUnit,sys2.InputUnit]
    propValues2 = 1x2 cell
        {'minutes'}    {'minutes'}
    
    

    Observe que el modelo de cero-polo-ganancia sys2 tiene las mismas propiedades que sys1.

    Considere la siguiente matriz de ganancia estática de dos entradas y dos salidas, m:

    m=[2435]MIMO static gain matrix

    Especifique la matriz de ganancia y cree el modelo de cero-polo-ganancia de ganancia estática.

    m = [2,4;...
        3,5];
    sys1 = zpk(m)
    sys1 =
     
      From input 1 to output...
       1:  2
     
       2:  3
     
      From input 2 to output...
       1:  4
     
       2:  5
     
    Static gain.
    

    Puede usar el modelo de cero-polo-ganancia de ganancia estática sys1 obtenido arriba y organizarlo en cascada con otro modelo de cero-polo-ganancia.

    sys2 = zpk(0,[-1 7],1)
    sys2 =
     
           s
      -----------
      (s+1) (s-7)
     
    Continuous-time zero/pole/gain model.
    
    sys = series(sys1,sys2)
    sys =
     
      From input 1 to output...
               2 s
       1:  -----------
           (s+1) (s-7)
     
               3 s
       2:  -----------
           (s+1) (s-7)
     
      From input 2 to output...
               4 s
       1:  -----------
           (s+1) (s-7)
     
               5 s
       2:  -----------
           (s+1) (s-7)
     
    Continuous-time zero/pole/gain model.
    

    Para este ejemplo, calcule el modelo de cero-polo-ganancia del siguiente modelo de espacio de estados:

    A=[-2-11-2],B=[112-1],C=[10],D=[01].State-space matrices

    Cree el modelo de espacio de estados usando las matrices de espacio de estado.

    A = [-2 -1;1 -2];
    B = [1 1;2 -1];
    C = [1 0];
    D = [0 1];
    ltiSys = ss(A,B,C,D);

    Convierta el modelo de espacio de estados ltiSys en un modelo de cero-polo-ganancia.

    sys = zpk(ltiSys)
    sys =
     
      From input 1 to output:
            s
      --------------
      (s^2 + 4s + 5)
     
      From input 2 to output:
      (s^2 + 5s + 8)
      --------------
      (s^2 + 4s + 5)
     
    Continuous-time zero/pole/gain model.
    

    Puede usar un bucle for para especificar un arreglo de modelos de cero-polo-ganancia.

    En primer lugar, predefina el arreglo de modelos de cero-polo-ganancia con ceros.

    sys = zpk(zeros(1,1,3));

    Los primeros dos índices representan el número de salidas y entradas de los modelos, en tanto que el tercer índice representa el número de modelos en el arreglo.

    Cree el arreglo de modelos de cero-polo-ganancia usando una expresión racional en el bucle for.

    s = zpk('s');                                                  
    for k = 1:3                                                             
        sys(:,:,k) = k/(s^2+s+k);                                          
    end
    sys
    sys(:,:,1,1) =
     
            1
      -------------
      (s^2 + s + 1)
     
    
    sys(:,:,2,1) =
     
            2
      -------------
      (s^2 + s + 2)
     
    
    sys(:,:,3,1) =
     
            3
      -------------
      (s^2 + s + 3)
     
    3x1 array of continuous-time zero/pole/gain models.
    

    Para este ejemplo, extraiga los componentes medidos y de ruido de un modelo polinomial identificado en dos modelos de cero-polo-ganancia independientes.

    Cargue el modelo polinomial Box-Jenkins ltiSys en identifiedModel.mat.

    load('identifiedModel.mat','ltiSys');

    ltiSys es un modelo identificado de tiempo discreto con el formato: y(t)=BFu(t)+CDe(t), donde BF representa el componente medido y CD, el componente de ruido.

    Extraiga los componentes medidos y de ruido como modelos de cero-polo-ganancia.

    sysMeas = zpk(ltiSys,'measured') 
    sysMeas =
     
      From input "u1" to output "y1":
                -0.14256 z^-1 (1-1.374z^-1)
      z^(-2) * -----------------------------
               (1-0.8789z^-1) (1-0.6958z^-1)
     
    Sample time: 0.04 seconds
    Discrete-time zero/pole/gain model.
    
    sysNoise = zpk(ltiSys,'noise')
    sysNoise =
     
      From input "v@y1" to output "y1":
                0.045563 (1+0.7245z^-1)
      --------------------------------------------
      (1-0.9658z^-1) (1 - 0.0602z^-1 + 0.2018z^-2)
     
    Input groups:        
        Name     Channels
        Noise       1    
                         
    Sample time: 0.04 seconds
    Discrete-time zero/pole/gain model.
    

    El componente medido puede servir como modelo de planta, mientras que el componente de ruido puede usarse como modelo de perturbaciones para el diseño de un sistema de control.

    Para este ejemplo, cree un modelo de cero-polo-ganancia SISO con un retardo de entrada de 0.5 segundos y un retardo de salida de 2.5 segundos.

    zeros = 5;
    poles = [7+1i 7-1i -3];
    gains = 1;
    sys = zpk(zeros,poles,gains,'InputDelay',0.5,'OutputDelay',2.5)
    sys =
     
                          (s-5)
      exp(-3*s) * ----------------------
                  (s+3) (s^2 - 14s + 50)
     
    Continuous-time zero/pole/gain model.
    

    También puede utilizar el comando get para mostrar todas las propiedades de un objeto de MATLAB.

    get(sys)
                    Z: {[5]}
                    P: {[3x1 double]}
                    K: 1
        DisplayFormat: 'roots'
             Variable: 's'
              IODelay: 0
           InputDelay: 0.5000
          OutputDelay: 2.5000
            InputName: {''}
            InputUnit: {''}
           InputGroup: [1x1 struct]
           OutputName: {''}
           OutputUnit: {''}
          OutputGroup: [1x1 struct]
                Notes: [0x1 string]
             UserData: []
                 Name: ''
                   Ts: 0
             TimeUnit: 'seconds'
         SamplingGrid: [1x1 struct]
    

    Para obtener más información sobre cómo especificar el retardo de tiempo para un modelo LTI, consulte Specifying Time Delays.

    Para este ejemplo, diseñe un controlador PID de 2-DOF con un ancho de banda de destino de 0.75 rad/s para un sistema representado por el siguiente modelo de cero-polo-ganancia:

    sys(s)=1s2+0.5s+0.1Zero-pole-gain model

    Cree un objeto de modelo de cero-polo-ganancia sys utilizando el comando zpk.

    zeros = [];
    poles = [-0.25+0.2i;-0.25-0.2i];
    gain = 1;
    sys = zpk(zeros,poles,gain)
    sys =
     
                1
      ---------------------
      (s^2 + 0.5s + 0.1025)
     
    Continuous-time zero/pole/gain model.
    

    Utilizando el ancho de banda de destino, use pidtune para generar un controlador de 2-DOF.

    wc = 0.75;
    C2 = pidtune(sys,'PID2',wc)
    C2 =
     
                           1              
      u = Kp (b*r-y) + Ki --- (r-y) + Kd*s (c*r-y)
                           s              
    
      with Kp = 0.512, Ki = 0.0975, Kd = 0.574, b = 0.38, c = 0
     
    Continuous-time 2-DOF PID controller in parallel form.
    

    Utilizar el tipo 'PID2', pidtune genera un controlador de 2-DOF, representado como un objeto pid2. La ventana confirma este resultado. La ventana también muestra que pidtune ajusta todos los coeficientes del controlador, incluyendo las ponderaciones de puntos de referencia b y c, para equilibrar el rendimiento y la robustez.

    Para un ajuste interactivo del PID en Live Editor, consulte la tarea Tune PID Controller de Live Editor. Esta tarea permite diseñar un controlador PID de forma interactiva y genera automáticamente código de MATLAB para un script en vivo.

    Para un ajuste interactivo del PID en una app independiente, utilice PID Tuner. Consulte PID Controller Design for Fast Reference Tracking para ver un ejemplo de cómo diseñar un controlador con la app.

    Algoritmos

    zpk utiliza la función roots de MATLAB para convertir funciones de transferencia, y las funciones zero y pole para convertir modelos de espacio de estados.

    Historial de versiones

    Introducido antes de R2006a