Contenido principal

bodeplot

R2026b

Representar la respuesta en frecuencia de Bode de un sistema dinámico

    Descripción

    La función bodeplot representa la magnitud y la fase de Bode de un modelo de sistema dinámico. Para personalizar la gráfica, puede devolver un objeto BodePlot y modificarlo utilizando la notación de puntos. Para obtener más información, consulte Customize Linear Analysis Plots at Command Line.

    Para obtener datos de respuesta en frecuencia, utilice la función bode.

    bodeplot(sys) representa la magnitud y la fase de Bode del modelo de sistema dinámico sys.

    Si sys es un modelo con múltiples entradas y múltiples salidas (MIMO), la función bodeplot crea una cuadrícula de diagramas de Bode, y cada diagrama muestra la respuesta en frecuencia de un par entrada/salida.

    Si sys es un modelo con coeficientes complejos, entonces:

    • En la escala de frecuencia logarítmica, el diagrama muestra dos ramas, una para frecuencias positivas y otra para frecuencias negativas. El diagrama también muestra flechas que indican la dirección de los valores de frecuencia que aumentan para cada rama.

    • En la escala de frecuencia lineal, el diagrama muestra una única rama con un rango de frecuencia simétrico centrado en un valor de frecuencia de cero.

    ejemplo

    bodeplot(sys1,sys2,...,sysN) representa la respuesta en frecuencia de múltiples sistemas dinámicos sys1,sys2,…,sysN en el mismo diagrama.

    ejemplo

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

    ejemplo

    bodeplot(___,w) representa respuestas para las frecuencias especificadas en w. Puede especificar un rango de frecuencia o un vector de frecuencias. Puede utilizar w con cualquiera de las sintaxis anteriores.

    ejemplo

    bodeplot(___,plotoptions) representa la respuesta en frecuencia de Bode con las opciones de representación gráfica especificadas en plotoptions. La configuración que especifica en plotoptions anula las preferencias de representación gráfica de la sesión de MATLAB® en curso. Esta sintaxis es útil cuando se desea escribir un script para generar múltiples gráficas con el mismo aspecto, independientemente de las preferencias locales.

    ejemplo

    bodeplot(___,Name=Value) especifica las propiedades de respuesta usando uno o varios argumentos nombre-valor. Por ejemplo, bodeplot(sys,LineWidth=1) establece el ancho de línea de la gráfica en 1. (desde R2026a)

    • Cuando se representan respuestas para múltiples sistemas, los argumentos nombre-valor especificados se aplican a todas las respuestas.

    • Los siguientes argumentos nombre-valor sustituyen los valores especificados en otros argumentos de entrada.

      • FrequencySpec: anula los valores de frecuencia especificados usando w

      • Color: anula los colores especificados usando LineSpec

      • MarkerStyle: anula los estilos de marcador especificados usando LineSpec

      • LineStyle: anula los estilos de línea especificados usando LineSpec

    bodeplot(parent,___) representa la respuesta de Bode en el contenedor de gráficos principal especificado, como un objeto Figure o TiledChartLayout, y establece la propiedad Parent. Utilice esta sintaxis cuando desee crear una gráfica en una figura abierta especificada o cuando cree aplicaciones en App Designer.

    bp = bodeplot(___) representa la respuesta de Bode y devuelve el objeto de gráfico correspondiente. Para personalizar la apariencia y el comportamiento de la gráfica de respuesta, modifique las propiedades del objeto de gráfico utilizando la notación de puntos.

    Ejemplos

    contraer todo

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

    Genere un modelo en espacio de estados aleatorio con 5 estados y cree el diagrama de Bode con el objeto de gráfico bp.

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

    MATLAB figure

    Cambie las unidades a Hz y elimine la gráfica de fase modificando el objeto de gráfico.

    bp.FrequencyUnit = "Hz";
    bp.PhaseVisible = "off";

    MATLAB figure

    El diagrama de Bode se actualiza automáticamente cuando se modifica el objeto de gráfico.

    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);

    MATLAB figure

    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 en tiempo continuo. A continuación, active 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]);

    Cree el diagrama de Bode. Especifique las propiedades de la gráfica modificando el objeto de gráfico devuelto.

    bp = bodeplot(sys);
    bp.FrequencyScale = "linear";
    title("Bode Plot of Transfer Function");
    grid on

    MATLAB figure

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

    Para este ejemplo, considere el modelo en 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 active la cuadrícula.

    Cree el modelo en 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 y devuelva el objeto de gráfico correspondiente.

    bp = bodeplot(sys_mimo);

    Personalice la gráfica modificando las propiedades del objeto de gráfico.

    bp.FrequencyScale = "linear";
    bp.FrequencyUnit = "Hz";
    grid on

    MATLAB figure

    El diagrama de Bode se actualiza automáticamente cuando se modifican las propiedades del objeto de gráfico. 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 de un sistema de función de transferencia con el objeto de gráfico bp.

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

    MATLAB figure

    Active la coincidencia de fases y ajuste su frecuencia y valor.

    bp.PhaseMatchingEnabled = "on"; 
    bp.PhaseMatchingFrequency = 1; 
    bp.PhaseMatchingValue = 150;

    MATLAB figure

    El primer diagrama de Bode tiene una fase de -45 grados a una frecuencia de 1 rad/s. Estableciendo las opciones de coincidencia de fases, 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 en espacio de estados identificados con los estados 2 y 6 junto con las 2 regiones de confianza σ.

    Cargue los datos del modelo en 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');

    MATLAB figure

    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 de 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);
    bp = bodeplot(sys1,sys2,w);
    legend('sys1','sys2');

    Active la coincidencia de fases, especifique la desviación estándar de la región de confianza y muestre la región de confianza.

    bp.PhaseMatchingEnabled = "on";
    bp.Characteristics.ConfidenceRegion.NumberOfStandardDeviations = 2;
    bp.Characteristics.ConfidenceRegion.Visible = "on";

    MATLAB figure

    Como alternativa, puede utilizar el comando showconfidence para mostrar las regiones de confianza del diagrama de Bode.

    showConfidence(bp)
    

    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 diagrama de Bode que incluya ambos sistemas. Active la coincidencia de fases para esta gráfica.

    bp = bodeplot(sys_p,sys_np,w);
    bp.PhaseMatchingEnabled = "on";
    grid on
    legend('Parametric Model','Non-Parametric model');

    MATLAB figure

    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. Puede utilizar los siguientes tipos de sistemas dinámicos:

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

    • Modelos dispersos en 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 Robust Control Toolbox™.

      • En el caso de bloques de diseño de control ajustables, la función evalúa el modelo con su valor actual para representar la 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.

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

    • Modelos LTI identificados, como modelos idtf (System Identification Toolbox), idss (System Identification Toolbox) o idproc (System Identification Toolbox). El uso de modelos identificados requiere System Identification Toolbox™.

    Si sys es un arreglo de modelos, la gráfica muestra las respuestas de todos los modelos del arreglo en los mismos ejes.

    Estilo de línea, marcador y color, especificados como cadena o vector de caracteres con símbolos. Los símbolos pueden aparecer en cualquier orden. No es necesario que especifique las tres características. Por ejemplo, si especifica el marcador y omite el estilo de línea, 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
    "r"rojo
    "g"verde
    "b"azul
    "c"cian
    "m"magenta
    "y"amarillo
    "k"negro
    "w"blanco

    Frecuencias en las que se calcula la respuesta, especificadas como uno de los siguientes valores:

    • Arreglo de celdas en formato {wmin,wmax}: calcula la respuesta en frecuencias entre wmin y wmax. Si wmax es superior a la frecuencia de Nyquist de sys, la respuesta se calcula solo hasta la frecuencia de Nyquist.

    • Vector de frecuencias: calcula la respuesta en cada frecuencia especificada. Por ejemplo, utilice logspace para generar un vector fila con valores de frecuencia espaciados logarítmicamente. El vector w puede contener frecuencias positivas y negativas.

    • []: selecciona automáticamente las frecuencias en función de la dinámica del sistema.

    En el caso de modelos con coeficientes complejos, si especifica un rango de frecuencia de [wmin,wmax] para su diagrama, entonces en:

    • La escala de frecuencia logarítmica, los límites de frecuencia del diagrama están establecidos en [wmin,wmax] y el diagrama muestra dos ramas, una para frecuencias positivas [wmin,wmax] y una para frecuencias negativas [–wmax,–wmin].

    • En la escala de frecuencia lineal, los límites de frecuencia del diagrama están establecidos en [–wmax,wmax] y el diagrama muestra una única rama con un rango de frecuencia simétrico centrado en un valor de frecuencia de cero.

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

    Opciones del diagrama de Bode, especificadas como un objeto bodeoptions. Puede utilizar estas opciones para personalizar el aspecto del diagrama de Bode. La configuración que especifica en plotoptions anula la configuración de preferencias de la sesión de MATLAB en curso.

    Contenedor de gráficos principal, especificado como uno de estos objetos:

    • Figure

    • TiledChartLayout

    • UIFigure

    • UIGridLayout

    • UIPanel

    • UITab

    Argumentos de par nombre-valor

    contraer todo

    Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de los otros argumentos, aunque el orden de los pares no es importante.

    Ejemplo: bodeplot(sys,LegendDisplay="off") oculta la respuesta de sys de la leyenda de la gráfica.

    Frecuencias en las que se calcula la respuesta, especificadas como uno de los siguientes valores:

    • Arreglo de celdas en formato {wmin,wmax}: calcula la respuesta en frecuencias entre wmin y wmax. Si wmax es superior a la frecuencia de Nyquist de sys, la respuesta se calcula solo hasta la frecuencia de Nyquist.

    • Vector de frecuencias: calcula la respuesta en cada frecuencia especificada. Por ejemplo, utilice logspace para generar un vector fila con valores de frecuencia espaciados logarítmicamente. El vector FrequencySpec puede contener frecuencias positivas y negativas.

    • []: selecciona automáticamente las frecuencias en función de la dinámica del sistema.

    En el caso de modelos con coeficientes complejos, si especifica un rango de frecuencia de [wmin,wmax] para su diagrama, entonces en:

    • La escala de frecuencia logarítmica, los límites de frecuencia del diagrama están establecidos en [wmin,wmax] y el diagrama muestra dos ramas, una para frecuencias positivas [wmin,wmax] y una para frecuencias negativas [–wmax,–wmin].

    • En la escala de frecuencia lineal, los límites de frecuencia del diagrama están establecidos en [–wmax,wmax] y el diagrama muestra una única rama con un rango de frecuencia simétrico centrado en un valor de frecuencia de cero.

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

    Nombre de la respuesta, especificado como una cadena o un vector de caracteres y almacenado como una cadena.

    Visibilidad de la respuesta, especificada como uno de estos valores lógicos on/off:

    • "on", 1 o true: muestra la respuesta en la gráfica.

    • "off", 0 o false: no muestra la respuesta en la gráfica.

    El valor se almacena como un valor lógico on/off de tipo matlab.lang.OnOffSwitchState.

    Opción de incluir la respuesta en la leyenda, especificada como uno de estos valores lógicos on/off:

    • "on", 1 o true: incluye la respuesta en la leyenda.

    • "off", 0 o false: no incluye la respuesta en la leyenda.

    El valor se almacena como un valor lógico on/off de tipo matlab.lang.OnOffSwitchState.

    Estilo de marcador, especificado como uno de estos valores. Si se especifica un estilo de marcador usando un argumento nombre-valor, se anulan los estilos de marcador especificados usando LineSpec.

    MarcadorDescripción
    "none"Sin marcador
    "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

    Color de la gráfica, especificado como un triplete RGB o un código de color hexadecimal y almacenado como un triplete RGB. Si se especifica un color usando un argumento nombre-valor, se anulan los colores especificados usando LineSpec.

    También puede especificar algunos colores comunes por su nombre. Esta tabla enumera colores y sus correspondientes tripletes RGB y códigos de color hexadecimales.

    Nombre del colorTriplete RGBCódigo de color hexadecimal

    "red" o "r"

    [1 0 0]#FF0000

    "green" o "g"

    [0 1 0]#00FF00

    "blue" o "b"

    [0 0 1]#0000FF

    "cyan" o "c"

    [0 1 1]#00FFFF

    "magenta" o "m"

    [1 0 1]#FF00FF

    "yellow" o "y"

    [1 1 0]#FFFF00

    "black" o "k"

    [0 0 0]#000000

    "white" o "w"

    [1 1 1]#FFFFFF

    Estilo de línea, especificado como uno de estos valores. Si se especifica un estilo de línea usando un argumento nombre-valor, se anulan los estilos de línea especificados usando LineSpec.

    Estilo de líneaDescripción
    "-"Línea continua
    "--"Línea discontinua
    ":"Línea de puntos
    "-."Línea de puntos y rayas
    "none"Sin línea

    Tamaño del marcador, especificado como un escalar positivo.

    Ancho de línea, especificado como un escalar positivo.

    Índice de series, especificado como un entero positivo o "none".

    De forma predeterminada, la propiedad SeriesIndex es un número que se corresponde con el orden en el que la respuesta se ha añadido al gráfico, comenzando en 1. MATLAB utiliza el número a fin de calcular índices para asignar automáticamente el color, el estilo de línea o los marcadores para respuestas. Cualquier respuesta del gráfico que tenga el mismo número SeriesIndex tendrá también el mismo color, estilo de línea y marcadores.

    Un valor SeriesIndex de "none" indica que una respuesta no participa en el esquema de indexación.

    Argumentos de salida

    contraer todo

    Objeto de gráfico, devuelto como un objeto BodePlot. Para personalizar la apariencia y el comportamiento de la gráfica, modifique las propiedades de este objeto utilizando la notación de puntos. Para más información, consulte BodePlot Properties.

    Algoritmos

    El software calcula la respuesta en frecuencia de la siguiente forma:

    1. Calcule la representación de cero-polo-ganancia (zpk) del sistema dinámico.

    2. Evalúe la ganancia y la fase de la respuesta en frecuencia en función de los datos de ceros, polos y ganancia para cada canal de entrada-salida del sistema.

      • En el caso de sistemas en tiempo continuo, la función bodeplot evalúa la respuesta en frecuencia en el eje imaginario s = jω y tiene en cuenta solo frecuencias positivas.

      • En el caso de sistemas en tiempo discreto, la función bodeplot evalúa la respuesta en frecuencia en el círculo unitario. Para facilitar la interpretación, el comando parametriza la mitad superior del círculo unitario como:

        z=ejωTs, 0≤ω≤ωN=πTs,

        donde Ts es el tiempo de muestreo y ωN es la frecuencia de Nyquist. A continuación, el software utiliza la frecuencia en tiempo continuo equivalente ω como variable del eje x. Dado que H(ejωTs) es periódico con periodo 2 ωN, la función bodeplot representa la respuesta solo hasta la frecuencia de Nyquist ωN. Si sys es un modelo en tiempo discreto con un tiempo de muestreo no especificado, la función bodeplot utiliza Ts = 1.

    Historial de versiones

    Introducido antes de R2006a

    expandir todo