Main Content

bode

Diagrama de Bode de respuesta en frecuencia o datos de magnitud y fase

Descripción

ejemplo

bode(sys) crea un diagrama de Bode de la respuesta en frecuencia de un modelo de sistema dinámico sys. El diagrama muestra la magnitud (en dB) y la fase (en grados) de la respuesta del sistema como una función de frecuencia. bode determina automáticamente las frecuencias que se van a representar en función de la dinámica del sistema.

Si sys es un modelo con varias entradas y varias salidas (MIMO), entonces bode crea un arreglo de diagramas de Bode y cada diagrama muestra la respuesta en frecuencia de un par E/S.

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. Consulte Diagrama de Bode de un modelo con coeficientes complejos.

  • 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

bode(sys1,sys2,...,sysN) representa la respuesta en frecuencia de varios sistemas dinámicos en el mismo diagrama. Todos los sistemas deben contar con el mismo número de entradas y salidas.

ejemplo

bode(sys1,LineSpec1,...,sysN,LineSpecN) especifica un color, un estilo de línea y un marcador para cada sistema del diagrama.

ejemplo

bode(___,w) representa respuestas de sistema para frecuencias especificadas por w.

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

  • Si w es un vector de frecuencias, entonces bode representa la respuesta en cada frecuencia especificada. El vector w puede contener frecuencias negativas y positivas.

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

ejemplo

[mag,phase,wout] = bode(sys) devuelve la magnitud y la fase de la respuesta en cada frecuencia del vector wout. La función determina automáticamente frecuencias de wout en función de la dinámica del sistema. Esta sintaxis no crea un diagrama.

ejemplo

[mag,phase,wout] = bode(sys,w) devuelve los datos de respuesta en las frecuencias especificadas por w.

  • Si w es un arreglo de celdas en formato {wmin,wmax}, entonces wout contiene frecuencias entre wmin y wmax.

  • Si w es un vector de frecuencias, entonces wout = w.

ejemplo

[mag,phase,wout,sdmag,sdphase] = bode(sys,w) también devuelve la desviación estándar estimada de los valores de magnitud y fase para el modelo identificado sys. Si omite w, entonces la función determina automáticamente frecuencias en wout en función de la dinámica del sistema.

Ejemplos

contraer todo

Cree un diagrama de Bode del siguiente sistema dinámico SISO de tiempo continuo.

H(s)=s2+0.1s+7.5s4+0.12s3+9s2.

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

Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents H. Axes object 2 contains an object of type line. This object represents H.

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

Cree un diagrama de Bode a lo largo de un rango de frecuencia especificado. Utilice este enfoque cuando desee centrarse en la dinámica de un rango de frecuencia en particular.

H = tf([-0.1,-2.4,-181,-1950],[1,3.3,990,2600]);
bode(H,{1,100})
grid on

Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents H. Axes object 2 contains an object of type line. This object represents H.

El arreglo de celdas {1,100} especifica el valor de frecuencia mínimo y máximo del diagrama de Bode. Cuando establece límites de frecuencia de esta manera, la función selecciona los puntos intermedios para los datos de respuesta en frecuencia.

Como alternativa, especifique un vector de puntos de frecuencia para utilizar cuando evalúe y represente la respuesta en frecuencia.

w = [1 5 10 15 20 23 31 40 44 50 85 100];
bode(H,w,'.-')
grid on

Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents H. Axes object 2 contains an object of type line. This object represents H.

bode representa la respuesta en frecuencia solo en las frecuencias especificadas.

Compare la respuesta en frecuencia de un sistema de tiempo continuo con un sistema discretizado equivalente en el mismo diagrama de Bode.

Cree sistemas dinámicos de tiempo continuo y tiempo discreto.

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
Hd = c2d(H,0.5,'zoh');

Cree un diagrama de Bode que muestre ambos sistemas.

bode(H,Hd)

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent H, Hd. Axes object 2 contains 2 objects of type line. These objects represent H, Hd.

El diagrama de Bode de un sistema de tiempo discreto incluye una línea vertical que marca la frecuencia Nyquist del sistema.

Especifique el estilo de línea, el color o el marcador en cada sistema de un diagrama de Bode utilizando el argumento de entrada LineSpec.

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
Hd = c2d(H,0.5,'zoh');
bode(H,'r',Hd,'b--')

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent H, Hd. Axes object 2 contains 2 objects of type line. These objects represent H, Hd.

La primera LineSpec, 'r', especifica una línea continua roja para la respuesta de H. La segunda LineSpec, 'b--', especifica una línea discontinua azul para la respuesta de Hd.

Calcule la magnitud y la fase de la respuesta en frecuencia de un sistema SISO.

Si no se especifican frecuencias, bode elige frecuencias en función de la dinámica del sistema y las devuelve en el tercer argumento de salida.

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
[mag,phase,wout] = bode(H);

Dado que H es un modelo SISO, las primeras dos dimensiones de mag y phase son 1. La tercera dimensión es el número de frecuencias de wout.

size(mag)
ans = 1×3

     1     1    41

length(wout)
ans = 41

De este modo, cada entrada a lo largo de la tercera dimensión de mag proporciona la magnitud de la respuesta en la correspondiente frecuencia de wout.

Para este ejemplo, cree un sistema de dos salidas y tres entradas.

rng(0,'twister'); % For reproducibility
H = rss(4,2,3);

En este sistema, bode representa las respuestas en frecuencia de cada canal de E/S en un diagrama diferente y en una única figura.

bode(H)

Figure contains 12 axes objects. Axes object 1 with title From: In(1) contains an object of type line. This object represents H. Axes object 2 contains an object of type line. This object represents H. Axes object 3 contains an object of type line. This object represents H. Axes object 4 contains an object of type line. This object represents H. Axes object 5 with title From: In(2) contains an object of type line. This object represents H. Axes object 6 contains an object of type line. This object represents H. Axes object 7 contains an object of type line. This object represents H. Axes object 8 contains an object of type line. This object represents H. Axes object 9 with title From: In(3) contains an object of type line. This object represents H. Axes object 10 contains an object of type line. This object represents H. Axes object 11 contains an object of type line. This object represents H. Axes object 12 contains an object of type line. This object represents H.

Calcule la magnitud y la fase de estas respuestas en 20 frecuencias entre 1 y 10 radianes.

w = logspace(0,1,20);
[mag,phase] = bode(H,w);

mag y phase son arreglos tridimensionales en los que las primeras dos dimensiones corresponden a las dimensiones de salida y entrada de H y la tercera dimensión es el número de frecuencias. A modo de ejemplo, examine las dimensiones de mag.

size(mag)
ans = 1×3

     2     3    20

De este modo, por ejemplo, mag(1,3,10) es la magnitud de la respuesta desde la tercera entrada hasta la primera salida, calculada en la 10.ª frecuencia de w. Del mismo modo, phase(1,3,10) contiene la fase de la misma respuesta.

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.

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

Para utilizar los comandos spa y tfest se requiere el software System Identification Toolbox™.

sys_np es un modelo no paramétrico identificado. sys_p es un modelo paramétrico identificado.

Cree un diagrama de Bode que incluya ambos sistemas.

bode(sys_np,sys_p,w);
legend('sys-np','sys-p')

Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1 contains 2 objects of type line. These objects represent sys-np, sys-p. Axes object 2 contains 2 objects of type line. These objects represent sys-np, sys-p.

Puede mostrar la región de confianza del diagrama de Bode haciendo clic con el botón secundario en el diagrama y seleccionando Characteristics > Confidence Region (Características > Región de confianza).

Calcule la desviación estándar de la magnitud y la fase de un modelo identificado. Utilice estos datos para crear una gráfica de 3σ de la incertidumbre de la respuesta.

Identifique un modelo de función de transferencia en función de los datos. Obtenga los datos de desviación estándar de la magnitud y la fase de la respuesta en frecuencia.

load iddata2 z2;
sys_p = tfest(z2,2);
w = linspace(0,10*pi,128);
[mag,ph,w,sdmag,sdphase] = bode(sys_p,w);

Para utilizar el comando tfest se requiere el software System Identification Toolbox™.

sys_p es un modelo de función de transferencia identificado. sdmag y sdphase contienen los datos de desviación estándar para la magnitud y la fase de la respuesta en frecuencia, respectivamente.

Utilice los datos de desviación estándar para crear una gráfica de 3σ que corresponda a la región de confianza.

mag = squeeze(mag);
sdmag = squeeze(sdmag);
semilogx(w,mag,'b',w,mag+3*sdmag,'k:',w,mag-3*sdmag,'k:');

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

Cree un diagrama de Bode de un modelo con coeficientes complejos y un modelo con coeficientes reales en el mismo diagrama.

rng(0)
A = [-3.50,-1.25-0.25i;2,0];
B = [1;0];
C = [-0.75-0.5i,0.625-0.125i];
D = 0.5;
Gc = ss(A,B,C,D);
Gr = rss(5);
bode(Gc,Gr)
legend('Complex-coefficient model','Real-coefficient model','Location','southwest')

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent Complex-coefficient model, Real-coefficient model. Axes object 2 contains 2 objects of type line. These objects represent Complex-coefficient model, Real-coefficient model.

En la escala de frecuencia logarítmica, el diagrama muestra dos ramas para modelos de coeficientes complejos, una para las frecuencias positivas, con una flecha que apunta hacia la derecha, y otra para las frecuencias negativas, con una flecha que apunta hacia la izquierda. En ambas ramas, las flechas indican la dirección de las frecuencias que aumentan. Los diagramas para modelos de coeficientes reales siempre contienen una única rama sin flechas.

Puede modificar la escala de frecuencia del diagrama de Bode haciendo clic con el botón secundario en el diagrama y seleccionando Properties. En el diálogo del editor de propiedades, en la pestaña Units, establezca la escala de frecuencia en linear scale. Como alternativa, puede utilizar la función bodeplot con un objeto bodeoptions para crear un diagrama personalizado.

opt = bodeoptions;
opt.FreqScale = 'Linear';

Cree el diagrama con opciones personalizadas.

bodeplot(Gc,Gr,opt)
legend('Complex-coefficient model','Real-coefficient model','Location','southwest')

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent Complex-coefficient model, Real-coefficient model. Axes object 2 contains 2 objects of type line. These objects represent Complex-coefficient model, Real-coefficient model.

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. El diagrama también muestra la respuesta en frecuencia negativa de un modelo de coeficientes reales cuando representa la respuesta junto con un modelo de coeficientes complejos.

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 (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 tanto para representar como para devolver 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. Cuando utiliza argumentos de salida, la función devuelve únicamente datos de respuesta en frecuencia para el modelo nominal.

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

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. El vector w puede contener frecuencias positivas y negativas.

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

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

Argumentos de salida

contraer todo

Magnitud de la respuesta del sistema en unidades absolutas, devuelta como un arreglo 3D. Las dimensiones de este arreglo son (número de salidas del sistema) × (número de entradas del sistema) × (número de puntos de frecuencia).

  • En los sistemas SISO, mag(1,1,k) proporciona la magnitud de la respuesta en la k-ésima frecuencia de w o wout. Para ver un ejemplo, consulte Obtener datos de magnitud y fase.

  • En los sistemas MIMO, mag(i,j,k) proporciona la magnitud de la respuesta en la k-ésima frecuencia desde la j-ésima entrada hasta la i-ésima salida. Para ver un ejemplo, consulte Magnitud y fase de un sistema MIMO.

Para convertir la magnitud de unidades absolutas a decibelios, utilice:

magdb = 20*log10(mag)

Fase de la respuesta del sistema en grados, devuelta como un arreglo 3D. Las dimensiones de este arreglo son (número de salidas) × (número de entradas) × (número de puntos de frecuencia).

  • En los sistemas SISO, phase(1,1,k) proporciona la fase de la respuesta en la k-ésima frecuencia de w o wout. Para ver un ejemplo, consulte Obtener datos de magnitud y fase.

  • En los sistemas MIMO, phase(i,j,k) proporciona la fase de la respuesta en la k-ésima frecuencia desde la j-ésima entrada hasta la i-ésima salida. Para ver un ejemplo, consulte Magnitud y fase de un sistema MIMO.

Frecuencias en las que la función devuelve la respuesta del sistema, devueltas como un vector columna. La función elige los valores de frecuencia en función de la dinámica del modelo, a menos que especifique frecuencias con el argumento de entrada w.

wout también contiene valores de frecuencia negativos para modelos con coeficientes complejos.

Los valores de frecuencia se expresan en radianes/TimeUnit, donde TimeUnit es el valor de la propiedad TimeUnit de sys.

Desviación estándar estimada de la magnitud de la respuesta en cada punto de frecuencia, devuelta como un arreglo 3D. sdmag tiene las mismas dimensiones que mag.

Si sys no es un modelo LTI identificado, sdmag es [].

Desviación estándar estimada de la fase de la respuesta en cada punto de frecuencia, devuelta como un arreglo 3D. sdphase tiene las mismas dimensiones que phase.

Si sys no es un modelo LTI identificado, sdphase es [].

Sugerencias

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

Algoritmos

bode 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 los sistemas de tiempo continuo, bode evalúa la respuesta en frecuencia en el eje imaginario s = y tiene en cuenta solo frecuencias positivas.

    • En los sistemas de tiempo discreto, bode 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 Nyquist. La frecuencia de tiempo continuo ω equivalente se utiliza entonces como variable del eje x. Dado que H(ejωTs) es periódico con periodo 2ωN, bode representa la respuesta solo hasta la frecuencia Nyquist ωN. Si sys es un modelo de tiempo discreto con tiempo de muestreo no especificado, bode utiliza Ts = 1.

Historial de versiones

Introducido antes de R2006a