Main Content

impulse

Gráfica de la respuesta al impulso del sistema dinámico; datos de la respuesta al impulso

    Descripción

    Gráficas de respuesta al impulso

    ejemplo

    impulse(sys) representa la respuesta de un modelo de sistema dinámico a una entrada de impulso de amplitud unitaria. El modelo sys puede ser de tiempo continuo o discreto, así como SISO o MIMO. En caso de los sistemas MIMO, la gráfica muestra las respuestas al impulso para cada canal de E/S. impulse determina automáticamente las unidades de tiempo y la duración de la simulación en función de la dinámica del sistema.

    ejemplo

    impulse(sys,tFinal) simula la respuesta al impulso desde t = 0 hasta el tiempo final t = tFinal. La función utiliza la dinámica del sistema para determinar las unidades de tiempo que intervienen.

    ejemplo

    impulse(sys,t) representa gráficamente la respuesta al impulso en los tiempos especificados en el vector t.

    ejemplo

    impulse(sys1,sys2,...,sysN,___) representa la respuesta al impulso de varios sistemas dinámicos en la misma gráfica. Todos los sistemas deben contar con el mismo número de entradas y salidas. Puede utilizar varios sistemas dinámicos con cualquiera de las combinaciones de entrada/argumento anteriores.

    ejemplo

    impulse(sys1,LineSpec1,...,sysN,LineSpecN,___) especifica un color, un estilo de línea y un marcador para cada sistema de la gráfica. Puede utilizar LineSpec con cualquiera de las combinaciones de entrada/argumento anteriores. Cuando necesite opciones de personalización de gráficas adicionales, utilice en su lugar impulseplot.

    Datos de respuesta al impulso

    ejemplo

    y = impulse(sys,t) devuelve la respuesta al impulso de un modelo de sistema dinámico sys en los tiempos especificados en el vector t. Esta sintaxis no crea una gráfica.

    [y,tOut] = impulse(sys) también devuelve un vector de tiempos tOut que corresponde a las respuestas de y. Si no proporciona un vector de entrada t de tiempos, impulse elige la longitud y la unidad de tiempo de tOut en función de la dinámica del sistema.

    [y,tOut] = impulse(sys,tFinal) calcula la respuesta al impulso hasta el tiempo final tFinal. impulse elige la unidad de tiempo de tOut en función de la dinámica del sistema.

    ejemplo

    [y,t,x] = impulse(sys) también devuelve las trayectorias de estado x cuando sys es un modelo de espacio de estados, como un modelo ss o idss.

    ejemplo

    [y,t,x,ysd] = impulse(sys) también calcula la desviación estándar ysd de la respuesta al impulso y cuando sys es un modelo identificado, como un modelo idss, idtf o idnlarx.

    Ejemplos

    contraer todo

    Represente la respuesta al impulso de un sistema de tiempo continuo representado por la siguiente función de transferencia.

    sys(s)=4s2+2s+10

    Para este ejemplo, cree un modelo tf que represente la función de transferencia. De forma similar, puede representar la respuesta al impulso de otros tipos de modelos de sistema dinámico, como modelos de cero-polo-ganancia (zpk) o de espacio de estados (ss).

    sys = tf(4,[1 2 10]);

    Represente la respuesta al impulso.

    impulse(sys)

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    La gráfica impulse incluye automáticamente una línea de puntos horizontal que indica la respuesta de estado estacionario. En una ventana de figuras de MATLAB®, puede hacer clic con el botón secundario en la gráfica para ver otras características de respuesta al impulso, como respuesta de pico y tiempo transitorio.

    Represente la respuesta al impulso de un sistema de tiempo discreto. El sistema cuenta con un tiempo de muestreo de 0,2 s y está representado por las siguientes matrices de espacio de estados.

    A = [1.6 -0.7;
          1  0];
    B = [0.5; 0];
    C = [0.1 0.1];
    D = 0;

    Cree el modelo de espacio de estados y represente su respuesta al impulso.

    sys = ss(A,B,C,D,0.2);
    impulse(sys)

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    La respuesta al impulso refleja la discretización del modelo, ya que muestra la respuesta calculada cada 0,2 segundos.

    Examine la respuesta al impulso del siguiente modelo cero-polo-ganancia.

    sys = zpk(-1,[-0.2+3j,-0.2-3j],1) * tf([1 1],[1 0.05]) 
    sys =
     
                (s+1)^2
      ----------------------------
      (s+0.05) (s^2 + 0.4s + 9.04)
     
    Continuous-time zero/pole/gain model.
    
    impulse(sys)

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    De forma predeterminada, impulse elige un tiempo final que muestra el estado estacionario al que tiende la respuesta. Para examinar la respuesta al transitorio más detalladamente, limite la gráfica de impulso a t = 20 s.

    impulse(sys,20)

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    Como alternativa, puede especificar los tiempos exactos en los que desea examinar la respuesta al impulso, siempre y cuando estén separados por un intervalo constante. Por ejemplo, examine la respuesta desde el final del transitorio hasta que el sistema alcance el estado estacionario.

    t = 20:0.2:120;
    impulse(sys,t)

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    Aunque esta gráfica comienza en t = 20, impulse siempre aplica la entrada de impulso en t = 0.

    Considere el siguiente modelo de espacio de estados de segundo orden:

    [x˙1x˙2]=[-0.5572-0.78140.78140][x1x2]+[1-102][u1u2]y=[1.96916.4493][x1x2]

    A = [-0.5572,-0.7814;0.7814,0];
    B = [1,-1;0,2];
    C = [1.9691,6.4493];
    sys = ss(A,B,C,0);

    Este modelo tiene dos entradas y una salida, de modo que cuenta con dos canales: desde la primera entrada hasta la salida y desde la segunda entrada hasta la salida. Cada canal cuenta con su propia respuesta al impulso.

    Cuando utiliza impulse, esta función calcula las respuestas de todos los canales.

    impulse(sys)

    Figure contains 2 axes objects. Axes object 1 with title From: In(1) contains an object of type line. This object represents sys. Axes object 2 with title From: In(2) contains an object of type line. This object represents sys.

    La gráfica de la izquierda muestra la respuesta al impulso del primer canal de entrada, y la de la derecha, la del segundo. Cuando utiliza impulse para representar las respuestas de un modelo MIMO, esta función genera un arreglo de gráficas que representa todos los canales de E/S del modelo. Por ejemplo, cree un modelo de espacio de estados aleatorio con cinco estados, tres entradas y dos salidas, y represente su respuesta al impulso.

    sys = rss(5,2,3);
    impulse(sys)

    Figure contains 6 axes objects. Axes object 1 with title From: In(1) contains an object of type line. This object represents sys. Axes object 2 contains an object of type line. This object represents sys. Axes object 3 with title From: In(2) contains an object of type line. This object represents sys. Axes object 4 contains an object of type line. This object represents sys. Axes object 5 with title From: In(3) contains an object of type line. This object represents sys. Axes object 6 contains an object of type line. This object represents sys.

    En una ventana de figuras de MATLAB, puede restringir la gráfica a un subconjunto de canales haciendo clic con el botón secundario en la gráfica y seleccionando I/O Selector (Selector de entrada/salida).

    impulse permite representar las respuestas de varios sistemas dinámicos en el mismo eje. Por ejemplo, compare la respuesta en lazo cerrado de un sistema con un controlador PI y un controlador PID. Cree una función de transferencia del sistema y ajuste los controladores.

    H = tf(4,[1 2 10]);
    C1 = pidtune(H,'PI');
    C2 = pidtune(H,'PID');

    Forme los sistemas de lazo cerrado y represente sus respuestas al impulso.

    sys1 = feedback(H*C1,1);
    sys2 = feedback(H*C2,1);
    impulse(sys1,sys2)
    legend('PI','PID','Location','SouthEast')

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent PI, PID.

    De forma predeterminada, impulse elige colores diferentes para cada sistema que se representa. Puede especificar los colores y los estilos de línea utilizando el argumento de entrada LineSpec.

     impulse(sys1,'r--',sys2,'b')
     legend('PI','PID','Location','SouthEast')

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent PI, PID.

    La primera instancia de LineSpec 'r--' especifica una línea discontinua roja para la respuesta con el controlador PI. La segunda LineSpec 'b' especifica una línea continua azul para la respuesta con el controlador PID. La leyenda muestra los colores y los estilos de línea especificados. Para ver más opciones de personalización de gráficas, utilice impulseplot.

    El ejemplo Comparar respuestas al impulso de varios sistemas muestra cómo representar respuestas de varios sistemas individuales en un único eje. Cuando tiene varios sistemas dinámicos en un arreglo de modelos, impulse representa todas sus respuestas a la vez.

    Cree un arreglo de modelos. Para este ejemplo, utilice un arreglo unidimensional de funciones de transferencia de segundo orden con diferentes frecuencias naturales. Primero, asigne previamente memoria para el arreglo de modelos. El siguiente comando crea una fila de 1 por 5 de funciones de transferencia SISO de ganancia cero. Las primeras dos dimensiones representan las salidas y entradas del modelo. Las dimensiones restantes son las dimensiones del arreglo.

     sys = tf(zeros(1,1,1,5));

    Rellene el arreglo.

    w0 = 1.5:1:5.5;    % natural frequencies
    zeta = 0.5;        % damping constant
    for i = 1:length(w0)
       sys(:,:,1,i) = tf(w0(i)^2,[1 2*zeta*w0(i) w0(i)^2]);
    end

    (Para obtener más información sobre los arreglos de modelos y cómo crearlos, consulte Model Arrays). Represente las respuestas al impulso de todos los modelos del arreglo.

    impulse(sys)

    Figure contains an axes object. The axes object contains 5 objects of type line. This object represents sys.

    impulse utiliza el mismo estilo de línea para las respuestas de todas las entradas del arreglo. Una manera de distinguir entre las entradas es utilizar la propiedad SamplingGrid de los modelos de sistemas dinámicos para asociar cada entrada del arreglo con el valor w0 correspondiente.

    sys.SamplingGrid = struct('frequency',w0);

    Cuando represente las respuestas en una ventana de figuras de MATLAB, puede hacer clic en una traza para ver a qué valor de frecuencia corresponde.

    Cuando indica un argumento de salida, impulse devuelve un arreglo de datos de respuesta. En un sistema SISO, los datos de respuesta se devuelven como un vector columna de longitud igual al número de puntos de tiempo en los que se muestrea la respuesta. Puede proporcionar el vector t de puntos de tiempo o permitir que impulse seleccione los puntos de tiempo en función de la dinámica del sistema. Por ejemplo, extraiga la respuesta al impulso de un sistema SISO en 101 puntos de tiempo entre t = 0 y t = 5 s.

    sys = tf(4,[1 2 10]);
    t = 0:0.05:5;
    y = impulse(sys,t);
    size(y)
    ans = 1×2
    
       101     1
    
    

    En un sistema MIMO, los datos de respuesta se devuelven en un arreglo de dimensiones N por Ny por Nu, donde Ny y Nu son el número de salidas y entradas del sistema dinámico. Por ejemplo, considere el siguiente modelo de espacio de estados, que representa un sistema de dos entradas y una salida.

    A = [-0.5572,-0.7814;0.7814,0];
    B = [1,-1;0,2];
    C = [1.9691,6.4493];
    sys = ss(A,B,C,0);

    Extraiga la respuesta al impulso de este sistema en 200 puntos de tiempo entre t = 0 y t = 20 s.

    t = linspace(0,20,200);
    y = impulse(sys,t);
    size(y)
    ans = 1×3
    
       200     1     2
    
    

    y(:,i,j) es un vector columna que contiene la respuesta al impulso desde la j-ésima entrada hasta la i-ésima salida en los tiempos t. Por ejemplo, extraiga la respuesta al impulso desde la segunda entrada hasta la salida.

    y12 = y(:,1,2);
    plot(t,y12)

    Figure contains an axes object. The axes object contains an object of type line.

    Compare la respuesta al impulso de un modelo paramétrico identificado con la de un modelo (empírico) no paramétrico. Vea también sus 3 regiones de confianza σ.

    Cargue los datos.

    load iddata1 z1

    Realice la estimación de un modelo paramétrico.

    sys1 = ssest(z1,4);

    Realice la estimación de un modelo no paramétrico.

    sys2 = impulseest(z1);

    Represente las respuestas al impulso para compararlas.

    t = (0:0.1:10)';
    [y1, ~, ~, ysd1] = impulse(sys1,t);
    [y2, ~, ~, ysd2] = impulse(sys2,t);
    plot(t, y1, 'b', t, y1+3*ysd1, 'b:', t, y1-3*ysd1, 'b:')
    hold on
    plot(t, y2, 'g', t, y2+3*ysd2, 'g:', t, y2-3*ysd2, 'g:')

    Figure contains an axes object. The axes object contains 6 objects of type line.

    Calcule la respuesta al impulso de un modelo de series temporales identificado.

    Un modelo de series temporales, también denominado modelo de señales, es un modelo sin señales de entrada medidas. La gráfica de impulso de este modelo utiliza su canal de ruido (no medido) como canal de entrada al que se aplica la señal de impulso.

    Cargue los datos.

    load iddata9;

    Realice la estimación de un modelo de series temporales.

    sys = ar(z9, 4);

    sys es un modelo con el formato A y(t) = e(t), donde e(t) representa el canal de ruido. Para calcular la respuesta al impulso, e(t) se trata como un canal de entrada y se denomina e@y1.

    Represente la respuesta al impulso.

    impulse(sys)

    Figure contains an axes object. The axes object with title From: e@y1 To: y1 contains 2 objects of type line. This object represents sys.

    Argumentos de entrada

    contraer todo

    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 o ss.

    • Modelos LTI generalizados o con incertidumbre, como modelos genss o uss. El uso de modelos con incertidumbre requiere el software Robust Control Toolbox™.

      • En el caso de los bloques de diseño de control ajustables, la función evalúa el modelo con su valor actual tanto para representar como para devolver los datos de respuesta.

      • En el caso de los bloques de diseño de control con incertidumbre, la función representa el valor nominal y muestras aleatorias del modelo. Cuando utiliza argumentos de salida, la función devuelve únicamente datos de respuesta para el modelo nominal.

    • Modelos dispersos de espacio de estados, como modelos sparss y mechss. Debe especificar el tiempo final tFinal para los modelos dispersos de espacio de estados.

    • Modelos LTI identificados, como modelos idtf, idss o idproc. En el caso de estos modelos, la función también puede representar intervalos de confianza y devolver desviaciones estándar de la respuesta en frecuencia. El uso de modelos identificados requiere el software System Identification Toolbox™.

    impulse no admite modelos de datos de respuesta en frecuencia, como modelos frd, genfrd o idfrd.

    Si sys es un arreglo de modelos, la función representa las respuestas de todos los modelos del arreglo en los mismos ejes.

    Tiempo final para la respuesta al impulso, especificado como un valor escalar positivo. impulse simula la respuesta al impulso desde t = 0 hasta t = tFinal.

    • En el caso de los sistemas de tiempo continuo, la función determina automáticamente el tamaño en escalón y el número de puntos a partir de la dinámica del sistema. Exprese tFinal en las unidades de tiempo del sistema, especificadas en la propiedad TimeUnit de sys.

    • En el caso de los sistemas de tiempo discreto, la función utiliza el tiempo de muestreo de sys como tamaño en escalón. Exprese tFinal en las unidades de tiempo del sistema, especificadas en la propiedad TimeUnit de sys.

    • Para sistemas de tiempo discreto con tiempo de muestreo no especificado (Ts = -1), impulse interpreta tFinal como el número de períodos de muestreo que simular.

    Vector de tiempo en el que se desea calcular la respuesta al impulso, especificado como un vector de valores escalares positivos. Exprese t en las unidades de tiempo del sistema, especificadas en la propiedad TimeUnit de sys.

    • En el caso de modelos de tiempo continuo, especifique t en formato Ti:dt:Tf. Para obtener la respuesta en cada unidad de tiempo, la función utiliza dt como tiempo de muestreo de una aproximación discreta al sistema continuo.

    • En el caso de modelos de tiempo discreto, especifique t con el formato Ti:Ts:Tf, donde Ts es el tiempo de muestreo de sys. impulse calcula la respuesta a un pulso de área unitaria de longitud Ts y altura 1/Ts, donde Ts es el tiempo de muestreo. Este pulso se aproxima al impulso de Dirac de tiempo continuo δ(t) a medida que Ts se acerca a cero.

    impulse aplica siempre la entrada de impulso en t = 0, independientemente de Ti.

    Estilo de línea, marcador y color, especificados como una cadena o vector de uno, dos o tres caracteres. Los caracteres pueden aparecer en cualquier orden. No es necesario que especifique las tres características (estilo de línea, marcador y color). Por ejemplo, si omite el estilo de línea y especifica el marcador, la gráfica mostrará únicamente el marcador y ninguna línea. Para obtener más información sobre cómo configurar este argumento, consulte el argumento de entrada LineSpec de la función plot.

    Ejemplo: 'r--' especifica una línea discontinua roja

    Ejemplo: '*b' especifica marcadores de asterisco azul

    Ejemplo: 'y' especifica una línea amarilla

    Argumentos de salida

    contraer todo

    Datos de respuesta al impulso, devueltos como un arreglo.

    • En los sistemas SISO, y es un vector columna de la misma longitud que t (si se indica) o tOut (si no se indica t).

    • En los sistemas de una entrada y varias salidas, y es una matriz con tantas filas como muestras de tiempo y tantas columnas como salidas. Así, la j-ésima columna de y, o y(:,j), contiene la respuesta al impulso desde la entrada hasta la j-ésima salida.

    • En los sistemas MIMO, las respuestas al impulso de cada canal de entrada se apilan a lo largo de la tercera dimensión de y. Entonces, las dimensiones de y son N por Ny por Nu, donde:

      • N es el número de muestras de tiempo.

      • Ny es el número de salidas del sistema.

      • Nu es el número de entradas del sistema.

      Así, y(:,i,j) es un vector columna que contiene la respuesta al impulso desde la j-ésima entrada hasta la i-ésima salida en los tiempos especificados en t o tOut.

    Tiempos en los que se calcula la respuesta al impulso, devueltos como un vector. Cuando no proporciona un vector específico t de tiempos, impulse elige este vector de tiempo en función de la dinámica del sistema. Los tiempos se expresan en las unidades de tiempo de sys.

    Trayectorias de estado, devueltas como un arreglo. Cuando sys es un modelo de espacio de estados, x contiene la evolución de los estados de sys en cada tiempo de t o tOut. Las dimensiones de x son N por Nx por Nu, donde:

    • N es el número de muestras de tiempo.

    • Nx es el número de estados.

    • Nu es el número de entradas del sistema.

    Así, la evolución de los estados en respuesta a un impulso inyectado en la k-ésima entrada está dada por medio del arreglo x(:,:,k). El vector fila x(i,:,k) contiene los valores de estado en la i-ésima unidad de tiempo.

    Desviación estándar de la respuesta al impulso de un modelo identificado, devuelta como un arreglo de las mismas dimensiones que y. Si sys no contiene información de covarianza de los parámetros, ysd está vacío.

    Limitaciones

    • La respuesta al impulso de un sistema continuo con matriz D distinta de cero es infinita en t = 0. impulse ignora esta discontinuidad y devuelve el valor de continuidad inferior Cb en t = 0.

    • El comando impulse no funciona con modelos de tiempo continuo con retardos internos. Para esos modelos, utilice pade para aproximar el retardo de tiempo antes de calcular la respuesta al impulso.

    Sugerencias

    • Cuando necesite opciones de personalización de gráficas adicionales, utilice en su lugar impulseplot.

    • Para simular respuestas del sistema a señales de entrada arbitrarias, utilice lsim.

    Algoritmos

    Los modelos de tiempo continuo se convierten primero al formato de espacio de estados. La respuesta al impulso de un modelo de espacio de estados de una entrada

    x˙=Ax+buy=Cx

    es equivalente a la siguiente respuesta no forzada con estado inicial b.

    x˙=Ax,x(0)=by=Cx

    Para simular esta respuesta, el sistema se discretiza utilizando una retención de orden cero en las entradas. El tiempo de muestreo se elige automáticamente en función de la dinámica del sistema, excepto cuando se proporciona un vector temporal t = 0:dt:Tf. Por tanto, dt se utiliza como tiempo de muestreo.

    Historial de versiones

    Introducido antes de R2006a