Main Content

bodeplot

Represente la respuesta en frecuencia de Bode con opciones de personalización de diagramas adicionales

    Descripción

    bodeplot permite representar la magnitud y la fase de Bode de un modelo de sistema dinámico con una gama más amplia de opciones de personalización de diagramas que bode. Puede utilizar bodeplot para obtener el identificador de gráfica y usarlo para personalizar el diagrama, como por ejemplo, modificar las etiquetas de los ejes, los límites y las unidades. También puede utilizar bodeplot para representar un diagrama de respuesta de Bode de un conjunto existente de ejes representado por un identificador de ejes. Para personalizar un diagrama de Bode existente con el identificador de gráfica:

    1. Obtenga el identificador de gráfica.

    2. Utilice getoptions para obtener el conjunto de opciones.

    3. Actualice la gráfica mediante setoptions para modificar las opciones necesarias.

    Para obtener más información, consulte Customizing Response Plots from the Command Line. Para crear diagramas de Bode con opciones predeterminadas o para extraer datos de la respuesta en frecuencia, utilice bode.

    ejemplo

    h = bodeplot(sys) representa la magnitud y la fase de Bode del modelo de sistema dinámico sys y devuelve el identificador de gráfica h al diagrama. Puede usar este identificador h para personalizar el diagrama con los comandos getoptions y setoptions. Si sys es un modelo con varias entradas y varias salidas (MIMO), entonces bodeplot genera una cuadrícula de diagramas de Bode y cada diagrama muestra la respuesta en frecuencia de un par E/S.

    ejemplo

    h = bodeplot(sys1,sys2,...,sysN) representa la respuesta en frecuencia de varios sistemas dinámicos sys1,sys2,…,sysN en el mismo diagrama. Todos los sistemas deben contar con el mismo número de entradas y salidas para utilizar esta sintaxis.

    ejemplo

    h = bodeplot(sys1,LineSpec1,...,sysN,LineSpecN) establece el estilo de línea, el tipo de marcador y el color para la respuesta de Bode de cada sistema. Todos los sistemas deben contar con el mismo número de entradas y salidas para utilizar esta sintaxis.

    h = bodeplot(AX,___) representa la respuesta de Bode en el objeto Axes o UIAxes en la figura actual con el identificador AX. Utilice esta sintaxis cuando cree apps con bodeplot en App Designer.

    ejemplo

    h = bodeplot(___,plotoptions) representa la respuesta en frecuencia de Bode con el conjunto de opciones indicado en plotoptions. Puede utilizar estas opciones para personalizar el aspecto del diagrama de Bode mediante la línea de comandos. La configuración que especifica en plotoptions anula la configuración de preferencias en la sesión de MATLAB® en la que ejecuta bodeplot. Por lo tanto, esta sintaxis es útil cuando se desea escribir un script para generar varios diagramas con el mismo aspecto, independientemente de las preferencias locales.

    ejemplo

    h = bodeplot(___,w) representa respuestas de sistema para frecuencias especificadas por las frecuencias en w.

    • Si w es un arreglo de celdas en formato {wmin,wmax}, entonces bodeplot representa la respuesta en frecuencias entre wmin y wmax.

    • Si w es un vector de frecuencias, entonces bodeplot representa la respuesta en cada frecuencia especificada.

    Puede utilizar w con cualquiera de las combinaciones de entrada/argumento de sintaxis anteriores.

    Consulte logspace para generar logarítmicamente vectores de frecuencia espaciados.

    Ejemplos

    contraer todo

    Para este ejemplo, utilice el identificador de gráfica para cambiar las unidades de frecuencia a Hz y desconecte la gráfica de fase.

    Genere un modelo de espacio de estados aleatorio con 5 estados y cree el diagrama de Bode con el identificador de gráfica h.

    rng("default")
    sys = rss(5);
    h = bodeplot(sys);

    Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains an object of type line. This object represents sys. Axes object 2 with ylabel Phase (deg) contains an object of type line. This object represents sys.

    Cambie las unidades a Hz y elimine la gráfica de fase. Para ello, edite las propiedades del identificador de gráfica h mediante setoptions.

    setoptions(h,'FreqUnits','Hz','PhaseVisible','off');

    Figure contains an axes object. The axes object with ylabel Magnitude (dB) contains an object of type line. This object represents sys.

    El diagrama de Bode se actualiza automáticamente cuando se llama a setoptions.

    Como alternativa, también puede utilizar el comando bodeoptions para especificar las opciones de gráfica necesarias. En primer lugar, cree un conjunto de opciones en función de las preferencias de la toolbox.

    p = bodeoptions('cstprefs');

    Cambie las propiedades del conjunto de opciones y establezca las unidades de frecuencia en Hz y oculte la gráfica de fase.

    p.FreqUnits = 'Hz';
    p.PhaseVisible = 'off';
    bodeplot(sys,p);

    Figure contains an axes object. The axes object with ylabel Magnitude (dB) contains an object of type line. This object represents sys.

    Puede utilizar el mismo conjunto de opciones para crear varios diagramas de Bode con la misma personalización. En función de las preferencias de la toolbox, el diagrama que obtenga puede tener un aspecto diferente a este diagrama. Solo las propiedades que se establecen explícitamente, en este ejemplo PhaseVisible y FreqUnits, anulan las preferencias de la toolbox.

    Para este ejemplo, cree un diagrama de Bode que utilice texto rojo de 15 puntos para el título y establezca un título personalizado. Cuando se especifican propiedades de gráfica explícitamente con bodeoptions, las propiedades especificadas anulan las preferencias de la sesión de MATLAB. Así, la gráfica tiene el mismo aspecto, independientemente de las preferencias de la sesión de MATLAB en la que se ha generado.

    En primer lugar, cree un conjunto de opciones predeterminadas con bodeoptions.

    opts = bodeoptions;

    A continuación, cambie las propiedades necesarias del conjunto de opciones opts. Dado que opt.Title es una estructura, especifique las propiedades del título de la gráfica, especificando los campos y valores de esta estructura.

    opts.Title.FontSize = 15;
    opts.Title.Color = [1 0 0];
    opts.Title.String = 'System Frequency Response';
    opts.FreqUnits = 'Hz';

    Luego, cree un diagrama de Bode con el conjunto de opciones opts.

    bodeplot(tf(1,[1,1]),opts);

    Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains an object of type line. This object represents untitled1. Axes object 2 with ylabel Phase (deg) contains an object of type line. This object represents untitled1.

    Dado que opts comienza con un conjunto de opciones fijo, el resultado del diagrama es independiente de las preferencias de la toolbox de la sesión de MATLAB.

    Para este ejemplo, cree un diagrama de Bode del siguiente sistema dinámico SISO de tiempo continuo. A continuación, conecte la cuadrícula, modifique el nombre del diagrama y cambie la escala de frecuencia.

    sys(s)=s2+0.1s+7.5s4+0.12s3+9s2.Continuous-time SISO dynamic system

    Cree la función de transferencia sys.

    sys = tf([1 0.1 7.5],[1 0.12 9 0 0]);

    A continuación, cree el conjunto de opciones con bodeoptions y cambie las propiedades del diagrama necesarias.

    plotoptions = bodeoptions;
    plotoptions.Grid = 'on';
    plotoptions.FreqScale = 'linear';
    plotoptions.Title.String = 'Bode Plot of Transfer Function';

    Luego, cree el diagrama de Bode con el conjunto de opciones personalizado plotoptions.

    bodeplot(sys,plotoptions)

    Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains an object of type line. This object represents sys. Axes object 2 with ylabel Phase (deg) contains an object of type line. This object represents sys.

    bodeplot selecciona automáticamente el rango del diagrama en función de la dinámica del sistema.

    Para este ejemplo, considere el modelo de espacio de estados MIMO con 3 entradas, 3 salidas y 3 estados. Cree un diagrama de Bode con una escala de frecuencia lineal, especifique las unidades de frecuencia en Hz y conecte la cuadrícula.

    Cree el modelo de espacio de estados MIMO sys_mimo.

    J = [8 -3 -3; -3 8 -3; -3 -3 8];
    F = 0.2*eye(3);
    A = -J\F;
    B = inv(J);
    C = eye(3);
    D = 0;
    sys_mimo = ss(A,B,C,D);
    size(sys_mimo)
    State-space model with 3 outputs, 3 inputs, and 3 states.
    

    Cree un diagrama de Bode con el identificador de gráfica h y utilice getoptions para una lista de las opciones disponibles.

    h = bodeplot(sys_mimo);
    p = getoptions(h)
    p =
    
                       FreqUnits: 'rad/s'
                       FreqScale: 'log'
                        MagUnits: 'dB'
                        MagScale: 'linear'
                      MagVisible: 'on'
                 MagLowerLimMode: 'auto'
                      PhaseUnits: 'deg'
                    PhaseVisible: 'on'
                   PhaseWrapping: 'off'
                   PhaseMatching: 'off'
               PhaseMatchingFreq: 0
        ConfidenceRegionNumberSD: 1
                     MagLowerLim: 0
              PhaseMatchingValue: 0
             PhaseWrappingBranch: -180
                      IOGrouping: 'none'
                     InputLabels: [1x1 struct]
                    OutputLabels: [1x1 struct]
                    InputVisible: {3x1 cell}
                   OutputVisible: {3x1 cell}
                           Title: [1x1 struct]
                          XLabel: [1x1 struct]
                          YLabel: [1x1 struct]
                       TickLabel: [1x1 struct]
                            Grid: 'off'
                       GridColor: [0.1500 0.1500 0.1500]
                            XLim: {3x1 cell}
                            YLim: {6x1 cell}
                        XLimMode: {3x1 cell}
                        YLimMode: {6x1 cell}
    

    Utilice setoptions para actualizar el diagrama con la personalización necesaria.

    setoptions(h,'FreqScale','linear','FreqUnits','Hz','Grid','on');

    Figure contains 18 axes objects. Axes object 1 with title From: In(1), ylabel To: Out(1) contains an object of type line. This object represents sys\_mimo. Axes object 2 with ylabel To: Out(1) contains an object of type line. This object represents sys\_mimo. Axes object 3 with ylabel To: Out(2) contains an object of type line. This object represents sys\_mimo. Axes object 4 with ylabel To: Out(2) contains an object of type line. This object represents sys\_mimo. Axes object 5 with ylabel To: Out(3) contains an object of type line. This object represents sys\_mimo. Axes object 6 with ylabel To: Out(3) contains an object of type line. This object represents sys\_mimo. Axes object 7 with title From: In(2) contains an object of type line. This object represents sys\_mimo. Axes object 8 contains an object of type line. This object represents sys\_mimo. Axes object 9 contains an object of type line. This object represents sys\_mimo. Axes object 10 contains an object of type line. This object represents sys\_mimo. Axes object 11 contains an object of type line. This object represents sys\_mimo. Axes object 12 contains an object of type line. This object represents sys\_mimo. Axes object 13 with title From: In(3) contains an object of type line. This object represents sys\_mimo. Axes object 14 contains an object of type line. This object represents sys\_mimo. Axes object 15 contains an object of type line. This object represents sys\_mimo. Axes object 16 contains an object of type line. This object represents sys\_mimo. Axes object 17 contains an object of type line. This object represents sys\_mimo. Axes object 18 contains an object of type line. This object represents sys\_mimo.

    El diagrama de Bode se actualiza automáticamente cuando se llama a setoptions. Para los modelos MIMO, bodeplot genera un arreglo de diagramas de Bode y cada diagrama muestra la respuesta en frecuencia de un par E/S.

    Para este ejemplo, haga coincidir la fase de la respuesta de su sistema, de manera que la fase a 1 rad/s sea de 150 grados.

    En primer lugar, cree un diagrama de Bode del sistema de función de transferencia con el identificador de gráfica h.

    sys = tf(1,[1 1]); 
    h = bodeplot(sys);

    Utilice getoptions para obtener las propiedades del diagrama. Cambie las propiedades PhaseMatchingFreq y PhaseMatchingValue para hacerlas coincidir con una fase a una frecuencia específica.

    p = getoptions(h); 
    p.PhaseMatching = 'on'; 
    p.PhaseMatchingFreq = 1; 
    p.PhaseMatchingValue = 150;

    Actualice el diagrama con setoptions.

    setoptions(h,p);

    Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains an object of type line. This object represents sys. Axes object 2 with ylabel Phase (deg) contains an object of type line. This object represents sys.

    El primer diagrama de Bode tiene una fase de -45 grados a una frecuencia de 1 rad/s. Estableciendo las opciones coincidentes de la fase, de manera que a 1 rad/s la fase esté cerca de 150 grados, se ofrece el segundo diagrama de Bode. Sin embargo, tenga en cuenta que la fase solo puede ser -45 + N*360, donde N es un número entero. De modo que el diagrama se ha establecido en la fase más cercana admisible, concretamente a 315 grados (o 1*360-45=315oEquation of how the allowable phase is calculated).

    Para este ejemplo, compare las respuestas en frecuencia de dos modelos de espacio de estados identificados con los estados 2 y 6 junto con las 2 regiones de confianza σ.

    Cargue los datos del modelo de espacio de estados identificado y calcule los dos modelos con n4sid. El uso de n4sid requiere una licencia de System Identification Toolbox™.

    load iddata1
    sys1 = n4sid(z1,2); 
    sys2 = n4sid(z1,6);

    Cree un diagrama de Bode de los dos sistemas.

    bodeplot(sys1,'r',sys2,'b');
    legend('sys1','sys2');

    Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1, ylabel Magnitude (dB) contains 2 objects of type line. These objects represent sys1, sys2. Axes object 2 with ylabel Phase (deg) contains 2 objects of type line. These objects represent sys1, sys2.

    A partir del diagrama, observe que ambos modelos generan alrededor del 70% del ajuste para los datos. No obstante, sys2 muestra una mayor incertidumbre en su respuesta en frecuencia, especialmente cerca de la frecuencia Nyquist. Ahora, utilice linspace para crear un vector de frecuencias y represente la respuesta de Bode con el vector de frecuencia w.

    w = linspace(8,10*pi,256);
    h = bodeplot(sys1,sys2,w);
    legend('sys1','sys2');

    Utilice setoptions para activar la correspondencia de fases y especificar la desviación estándar de la región de confianza.

    setoptions(h,'PhaseMatching','on','ConfidenceRegionNumberSD',2);

    Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1, ylabel Magnitude (dB) contains 2 objects of type line. These objects represent sys1, sys2. Axes object 2 with ylabel Phase (deg) contains 2 objects of type line. These objects represent sys1, sys2.

    Puede utilizar el comando showconfidence para mostrar las regiones de confianza del diagrama de Bode.

    showConfidence(h)
    

    Para este ejemplo, compare la respuesta en frecuencia de un modelo paramétrico identificado a partir de datos de entrada/salida con un modelo no paramétrico identificado utilizando los mismos datos. Identifique modelos paramétricos y no paramétricos en función de los datos.

    Cargue los datos y cree los modelos paramétricos y no paramétricos con tfest y spa respectivamente.

    load iddata2 z2;
    w = linspace(0,10*pi,128);
    sys_np = spa(z2,[],w);
    sys_p = tfest(z2,2);

    spa y tfest requieren el software System Identification Toolbox™. El modelo sys_np es un modelo no paramétrico identificado, mientras que sys_p es un modelo paramétrico identificado.

    Cree un conjunto de opciones para activar la correspondencia de fases y la cuadrícula. A continuación, cree un diagrama de Bode que incluya ambos sistemas con este conjunto de opciones.

    plotoptions = bodeoptions;  
    plotoptions.PhaseMatching = 'on';
    plotoptions.Grid = 'on';
    bodeplot(sys_p,sys_np,w,plotoptions);
    legend('Parametric Model','Non-Parametric model');

    Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1, ylabel Magnitude (dB) contains 2 objects of type line. These objects represent Parametric Model, Non-Parametric model. Axes object 2 with ylabel Phase (deg) contains 2 objects of type line. These objects represent Parametric Model, Non-Parametric model.

    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 dispersos de espacio de estados, como modelos sparss o mechss. La cuadrícula de frecuencia w debe estar especificada para modelos dispersos.

    • Modelos LTI generalizados o con incertidumbre, como modelos genss o uss (Robust Control Toolbox). 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 para representar los datos de respuesta en frecuencia.

      • 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.

    • Modelos de datos de respuesta en frecuencia, como modelos frd. En el caso de estos modelos, la función representa la respuesta en frecuencias definidas en el modelo.

    • Modelos LTI identificados, como modelos idtf (System Identification Toolbox), idss (System Identification Toolbox) o idproc (System Identification Toolbox). 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. Consulte Diagrama de Bode de un modelo identificado. El uso de modelos identificados requiere el software System Identification Toolbox™.

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

    Estilo de línea, marcador y color, especificados como un vector de caracteres o una cadena con símbolos. Los símbolos 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.

    Ejemplo: '--or' es una línea discontinua roja con marcadores circulares

    Estilo de líneaDescripción
    -Línea continua
    --Línea discontinua
    :Línea de puntos
    -.Línea de puntos y rayas
    MarcadorDescripción
    'o'Círculo
    '+'Signo más
    '*'Asterisco
    '.'Punto
    'x'Cruz
    '_'Línea horizontal
    '|'Línea vertical
    's'Cuadrado
    'd'Rombo
    '^'Triángulo hacia arriba
    'v'Triángulo hacia abajo
    '>'Triángulo hacia la derecha
    '<'Triángulo hacia la izquierda
    'p'Pentagrama
    'h'Hexagrama
    ColorDescripción

    y

    amarillo

    m

    magenta

    c

    cian

    r

    rojo

    g

    verde

    b

    azul

    w

    blanco

    k

    negro

    Ejes objetivo, especificados como un objeto Axes o UIAxes. Si no especifica los ejes y los ejes actuales son ejes cartesianos, bodeplot representará en los ejes actuales. Cuando cree apps en App Designer, utilice AX para representar en ejes específicos.

    Conjunto de opciones del diagrama de Bode, especificado como un objeto BodePlotOptions. Puede utilizar este conjunto de opciones para personalizar el aspecto del diagrama de Bode. Utilice bodeoptions para crear el conjunto de opciones. La configuración que especifica en plotoptions anula la configuración de preferencias en la sesión de MATLAB en la que ejecuta bodeplot. Por lo tanto, plotoptions es útil cuando se desea escribir un script para generar varios diagramas con el mismo aspecto, independientemente de las preferencias locales.

    Para obtener la lista de opciones disponibles, consulte bodeoptions.

    Frecuencias en las que calcular y representar la respuesta en frecuencia, especificadas como el arreglo de celdas {wmin,wmax} o como un vector de valores de frecuencia.

    • Si w es un arreglo de celdas en formato {wmin,wmax}, entonces la función calcula la respuesta en frecuencias entre wmin y wmax.

    • Si w es un vector de frecuencias, entonces la función calcula la respuesta en cada frecuencia especificada. Por ejemplo, utilice logspace para generar un vector fila con valores de frecuencia espaciados logarítmicamente.

    Especifique frecuencias en unidades de rad/TimeUnit, donde TimeUnit es la propiedad TimeUnit del modelo.

    Argumentos de salida

    contraer todo

    Identificador de gráfica, devuelto como un objeto handle. Utilice el identificador h para obtener y establecer las propiedades del diagrama de Bode utilizando getoptions y setoptions. Para obtener la lista de opciones disponibles, consulte la sección Properties and Values Reference en Customizing Response Plots from the Command Line.

    Historial de versiones

    Introducido antes de R2006a