Main Content

frd

Modelo de datos de respuesta en frecuencia

Descripción

Use frd para crear modelos de datos de respuesta en frecuencia de valores reales o de valores complejos, o bien para convertir modelos de sistemas dinámicos al formato de modelo de datos de respuesta en frecuencia.

Los modelos de datos de respuesta en frecuencia almacenan datos complejos de respuesta en frecuencia con los puntos de frecuencia correspondientes. Por ejemplo, un modelo de datos de respuesta en frecuencia H(jwi) almacena la respuesta en frecuencia en cada frecuencia de entrada wi, donde i = 1,…,n. El objeto de modelo frd puede representar modelos de datos de respuesta en frecuencia SISO o MIMO en tiempo continuo o tiempo discreto. Para más información, consulte Frequency Response Data (FRD) Models.

También puede usar frd para crear modelos generalizados de datos de respuesta en frecuencia (genfrd).

Creación

Puede obtener modelos frd de una de las siguientes maneras.

Descripción

ejemplo

sys = frd(response,frequency) crea un modelo de datos de respuesta en frecuencia de tiempo continuo (frd), estableciendo las propiedades ResponseData y Frequency. frequency puede contener frecuencias negativas y positivas.

ejemplo

sys = frd(response,frequency,ts) crea un modelo frd de tiempo discreto con el tiempo de muestreo ts. Si no desea especificar el tiempo de muestreo, establezca ts en –1.

ejemplo

sys = frd(response,frequency,ltiSys) crea un modelo de datos de respuesta en frecuencia con propiedades heredadas del modelo de sistema dinámico ltiSys, incluido el tiempo de muestreo.

ejemplo

sys = frd(___,Name,Value) define las propiedades del modelo de datos de respuesta en frecuencia usando uno o más argumentos nombre-valor para cualquiera de las combinaciones de entrada-argumento anteriores.

ejemplo

sys = frd(ltiSys,frequency) convierte el modelo de sistema dinámico ltiSys en un modelo de datos de respuesta en frecuencia. frd calcula la respuesta en frecuencia en las frecuencias especificadas por frequency. sys hereda sus unidades de frecuencia rad/TimeUnit de ltiSys.TimeUnit.

sys = frd(ltiSys,frequency,FrequencyUnits) interpreta las frecuencias en las unidades especificadas por FrequencyUnit.

Argumentos de entrada

expandir todo

Datos de respuesta en frecuencia, especificados como vector o arreglo multidimensional de números complejos.

  • Para los sistemas SISO, especifique un vector de valores de respuesta en frecuencia en los puntos de frecuencia especificados en frequency.

  • Para los sistemas MIMO con Nu entradas y Ny salidas, especifique un arreglo de Ny por Nu por Nf, donde Nf es el número de puntos de frecuencia.

  • Para un arreglo de modelos de S1 ... por Sn con Nu entradas y Ny salidas, especifique un arreglo multidimensional de tamaño [Ny Nu Nf S1Sn].

    Por ejemplo, una response de tamaño [Ny,Nu,Nf,3,4] representa los datos de respuesta para un arreglo de modelos de 3 por 4. Cada modelo tiene Ny salidas, Nu entradas y Nf puntos de frecuencia.

Esta entrada establece la propiedad ResponseData.

Puntos de frecuencia correspondientes a response, especificados como vector que contiene Nf puntos. El vector frequency puede contener frecuencias positivas y negativas.

Esta entrada establece la propiedad Frequency.

Tiempo de muestreo, especificado como un escalar.

La entrada establece 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 Robust Control Toolbox™.

    El modelo resultante frd asume:

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

    • Los valores nominales del modelo para 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). El uso de modelos identificados requiere System Identification Toolbox™.

Propiedades

expandir todo

Datos de respuesta en frecuencia, especificados como arreglo multidimensional de números complejos.

  • Para los sistemas SISO, ResponseData es un arreglo de valores de respuesta en frecuencia de 1 por 1 por Nf en los puntos de frecuencia Nf especificados en la propiedad Frequency.

  • Para los sistemas MIMO con Nu entradas y Ny salidas, ResponseData es un arreglo de Ny por Nu por Nf, donde Nf es el número de puntos de frecuencia.

    Por ejemplo, ResponseData(ky,ku,kf) representa la respuesta en frecuencia desde la entrada ku hasta la salida ky en la frecuencia Frequency(kf).

  • Para un arreglo de modelos de S1 ... por Sn con Nu entradas y Ny salidas, ResponseData es un arreglo multidimensional de tamaño [Ny Nu Nf S1Sn].

    Por ejemplo, unos ResponseData de tamaño [Ny,Nu,Nf,3,4] representan los datos de respuesta para un arreglo de modelos de 3 por 4. Cada modelo tiene Ny salidas, Nu entradas y Nf puntos de frecuencia.

Puntos de frecuencia correspondientes a ResponseData, especificados como vector que contiene Nf puntos en las unidades especificadas por FrequencyUnit.

Unidades del vector de frecuencia en la propiedad Frequency, especificadas como uno de los siguientes valores:

  • 'rad/TimeUnit'

  • 'cycles/TimeUnit'

  • 'rad/s'

  • 'Hz'

  • 'kHz'

  • 'MHz'

  • 'GHz'

  • 'rpm'

Las unidades 'rad/TimeUnit' y 'cycles/TimeUnit' están relacionadas con las unidades de tiempo especificadas en la propiedad TimeUnit.

Cuando se cambia esta propiedad no se remuestrean ni se convierten los datos. Cuando se modifica la propiedad cambia solo la interpretación de los datos existentes. Utilice chgFreqUnit para convertir los datos a distintas unidades de frecuencia.

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.

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 más información, consulte Retardos de tiempo en sistemas lineales.

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 más información, consulte Retardos de tiempo en sistemas lineales.

Tiempo de muestreo, especificado como:

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

  • Un escalar positivo que representa el periodo 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.

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 identificados lineales de tiempo invariante (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 de tiempo variante en la unidad 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 frd. En general, muchas funciones que se pueden aplicar a Modelos de sistemas dinámicos también se pueden aplicar a un objeto frd. Los modelos frd no funcionan con ninguna función de análisis en el dominio del tiempo.

expandir todo

bodeDiagrama de Bode de respuesta en frecuencia o datos de magnitud y fase
sigmaGráfica de valores singulares de un sistema dinámico
nyquistDiagrama de Nyquist de la respuesta en frecuencia
nicholsNichols chart of frequency response
bandwidthAncho de banda de respuestas en frecuencia
freqrespEvaluate system response over a grid of frequencies
marginMargen de ganancia, margen de fase y frecuencias de cruce
chgFreqUnitChange frequency units of frequency-response data model
chgTimeUnitChange time units of dynamic system
frdfunApply a function to the frequency response value at each frequency of an frd model object
fselectSelect frequency points or range in FRD model
interpInterpolar el modelo FRD
fcatConcatenate FRD models along frequency dimension
fnormPointwise peak gain of FRD 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
pidtuneAlgoritmo de ajuste de PID para un modelo de planta lineal

Ejemplos

contraer todo

Cree un objeto frd a partir de datos de respuesta en frecuencia.

Para este ejemplo, cargue los datos de respuesta en frecuencia recopilados para un modelo de depósito de agua.

load wtankData.mat

Estos datos contienen los datos de respuesta en frecuencia recopilados para el rango de frecuencia de 10-3 rad/s a 102 rad/s.

Cree el modelo.

sys = frd(response,frequency)
sys =
 
    Frequency(rad/s)          Response     
    ----------------          --------     
          0.0010        1.562e+01 - 1.9904i
          0.0018        1.560e+01 - 2.0947i
          0.0034        1.513e+01 - 3.3670i
          0.0062        1.373e+01 - 5.4306i
          0.0113        1.047e+01 - 7.5227i
          0.0207        5.829e+00 - 7.6529i
          0.0379        2.340e+00 - 5.6271i
          0.0695        7.765e-01 - 3.4188i
          0.1274        2.394e-01 - 1.9295i
          0.2336        7.216e-02 - 1.0648i
          0.4281        2.157e-02 - 0.5834i
          0.7848        6.433e-03 - 0.3188i
          1.4384        1.916e-03 - 0.1740i
          2.6367        5.705e-04 - 0.0950i
          4.8329        1.698e-04 - 0.0518i
          8.8587        5.055e-05 - 0.0283i
         16.2378        1.505e-05 - 0.0154i
         29.7635        4.478e-06 - 0.0084i
         54.5559        1.333e-06 - 0.0046i
        100.0000        3.967e-07 - 0.0025i
 
Continuous-time frequency response.

Represente sys.

bode(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.

Para este ejemplo, considere datos de respuesta y frecuencias generados aleatoriamente.

Genere un arreglo complejo de 3 por 2 por 7 y un vector de frecuencia con siete puntos entre 0.01 y 100 rad/s. Establezca el tiempo de muestreo Ts en 5 segundos.

rng(0)
r = randn(3,2,7)+1i*randn(3,2,7);
w = logspace(-2,2,7);
Ts = 5;

Cree el modelo.

sys = frd(r,w,Ts)
sys =

  From input 1 to:

    Frequency(rad/s)         output 1           output 2           output 3    
    ----------------         --------           --------           --------    
          0.0100         0.5377 + 0.3192i   1.8339 + 0.3129i  -2.2588 - 0.8649i
          0.0464        -0.4336 + 1.0933i   0.3426 + 1.1093i   3.5784 - 0.8637i
          0.2154         0.7254 - 0.0068i  -0.0631 + 1.5326i   0.7147 - 0.7697i
          1.0000         1.4090 - 1.0891i   1.4172 + 0.0326i   0.6715 + 0.5525i
          4.6416         0.4889 - 1.4916i   1.0347 - 0.7423i   0.7269 - 1.0616i
         21.5443         0.8884 - 0.1924i  -1.1471 + 0.8886i  -1.0689 - 0.7648i
        100.0000         0.3252 - 0.1774i  -0.7549 - 0.1961i   1.3703 + 1.4193i

  From input 2 to:

    Frequency(rad/s)         output 1           output 2           output 3    
    ----------------         --------           --------           --------    
          0.0100         0.8622 - 0.0301i   0.3188 - 0.1649i  -1.3077 + 0.6277i
          0.0464         2.7694 + 0.0774i  -1.3499 - 1.2141i   3.0349 - 1.1135i
          0.2154        -0.2050 + 0.3714i  -0.1241 - 0.2256i   1.4897 + 1.1174i
          1.0000        -1.2075 + 1.1006i   0.7172 + 1.5442i   1.6302 + 0.0859i
          4.6416        -0.3034 + 2.3505i   0.2939 - 0.6156i  -0.7873 + 0.7481i
         21.5443        -0.8095 - 1.4023i  -2.9443 - 1.4224i   1.4384 + 0.4882i
        100.0000        -1.7115 + 0.2916i  -0.1022 + 0.1978i  -0.2414 + 1.5877i
 
Sample time: 5 seconds
Discrete-time frequency response.

Los datos especificados resultan en un modelo frd de dos entradas y tres salidas.

Para este ejemplo, cree un modelo de datos de respuesta en frecuencia con propiedades heredadas de un modelo de función de transferencia.

Cree una función de transferencia sys1 con la propiedad TimeUnit establecida en 'minutes' y la propiedad InputDelay establecida en 3.

numerator1 = [2,0];
denominator1 = [1,8,0];
sys1 = tf(numerator1,denominator1,'TimeUnit','minutes','InputDelay',3)
sys1 =
 
                 2 s
  exp(-3*s) * ---------
              s^2 + 8 s
 
Continuous-time transfer function.
propValues1 = {sys1.TimeUnit,sys1.InputDelay}
propValues1=1×2 cell array
    {'minutes'}    {[3]}

Cree un modelo frd con propiedades heredadas de sys1.

rng(0)
response = randn(1,1,7)+1i*randn(1,1,7);
w = logspace(-2,2,7);
sys2 = frd(response,w,sys1)
sys2 =
 
    Frequency(rad/minute)         Response    
    ---------------------         --------    
             0.0100           0.5377 + 0.3426i
             0.0464           1.8339 + 3.5784i
             0.2154          -2.2588 + 2.7694i
             1.0000           0.8622 - 1.3499i
             4.6416           0.3188 + 3.0349i
            21.5443          -1.3077 + 0.7254i
           100.0000          -0.4336 - 0.0631i
 
  Input delays (minutes): 3 
 
Continuous-time frequency response.
propValues2 = {sys2.TimeUnit,sys2.InputDelay}
propValues2=1×2 cell array
    {'minutes'}    {[3]}

Observe que el modelo frd sys2 tiene las mismas propiedades que sys1.

Para este ejemplo, cargue los datos de respuesta en frecuencia recopilados para un modelo de depósito de agua.

load wtankData.mat

El modelo tiene una entrada, Voltage (voltaje), y una salida, Water height (altura del agua).

Cree un modelo frd especificando los nombres de las entradas y de las salidas.

sys = frd(response,frequency,'InputName','Voltage','OutputName','Height');

Represente la respuesta en frecuencia.

bode(sys)

Figure contains 2 axes objects. Axes object 1 with title From: Voltage To: Height, 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.

Los nombres de las entradas y de las salidas aparecen en el diagrama de Bode. Poner nombre a las entradas y salidas puede resultar útil cuando se trate de gráficas de respuesta para sistemas MIMO.

Para este ejemplo, calcule el modelo frd del siguiente modelo de espacio de estados:

A=[-2-11-2],B=[112-1],C=[10],D=[01]

Cree un modelo de espacio de estados usando las matrices de espacio de estados.

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 frd para frecuencias entre 0.01 y 100 rad/s.

w = logspace(-2,2,50);
sys = frd(ltiSys,w);

Compare las respuestas en frecuencia.

bode(ltiSys,'b',sys,'r--')

Figure contains 4 axes objects. Axes object 1 with title From: In(1), ylabel To: Out(1) contains 2 objects of type line. These objects represent ltiSys, sys. Axes object 2 with ylabel To: Out(1) contains 2 objects of type line. These objects represent ltiSys, sys. Axes object 3 with title From: In(2) contains 2 objects of type line. These objects represent ltiSys, sys. Axes object 4 contains 2 objects of type line. These objects represent ltiSys, sys.

Las respuestas son idénticas.

Para crear arreglos de modelos frd, puede especificar un arreglo multidimensional de datos de respuesta en frecuencia.

Por ejemplo, cuando especifica los datos de respuesta como arreglo numérico de tamaño [NY NU NF S1 ... Sn], la función devuelve un arreglo de S1 por ... por Sn de modelos frd. Cada uno de estos modelos tiene NY salidas, NU entradas y NF puntos de frecuencia.

Genere un arreglo de 2 por 3 de datos de respuesta aleatorios con modelos de una salida y dos entradas en 10 puntos de frecuencia entre 0.1 y 10 rad/s.

w = logspace(-1,1,10);
r = randn(1,2,10,2,3)+1i*randn(1,2,10,2,3);
sys = frd(r,w);

Extraiga el modelo en el índice (2,1) del arreglo de modelos.

sys21 = sys(:,:,2,1)
sys21 =

  From input 1 to:

    Frequency(rad/s)         output 1    
    ----------------         --------    
          0.1000         0.6715 + 0.0229i
          0.1668         0.7172 - 1.7502i
          0.2783         0.4889 - 0.8314i
          0.4642         0.7269 - 1.1564i
          0.7743         0.2939 - 2.0026i
          1.2915         0.8884 + 0.5201i
          2.1544        -1.0689 - 0.0348i
          3.5938        -2.9443 + 1.0187i
          5.9948         0.3252 - 0.7145i
         10.0000         1.3703 - 0.2248i

  From input 2 to:

    Frequency(rad/s)         output 1    
    ----------------         --------    
          0.1000        -1.2075 - 0.2620i
          0.1668         1.6302 - 0.2857i
          0.2783         1.0347 - 0.9792i
          0.4642        -0.3034 - 0.5336i
          0.7743        -0.7873 + 0.9642i
          1.2915        -1.1471 - 0.0200i
          2.1544        -0.8095 - 0.7982i
          3.5938         1.4384 - 0.1332i
          5.9948        -0.7549 + 1.3514i
         10.0000        -1.7115 - 0.5890i
 
Continuous-time frequency response.

Puede especificar valores de frecuencia negativos en un objeto frd. Esta funcionalidad resulta útil cuando desea capturar los datos de respuesta en frecuencia de modelos con coeficientes complejos.

Cree un vector de frecuencia con valores positivos y negativos.

w0 = sort([-logspace(-2,2,50) 0 logspace(-2,2,50)]);

Cree un modelo de espacio de estados con coeficientes complejos.

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

Convierta el modelo en un modelo frd en las frecuencias especificadas.

sys = frd(Gc,w0);

Represente la respuesta en frecuencia de los modelos.

bode(Gc,'b',sys,'r--')

Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains 2 objects of type line. These objects represent Gc, sys. Axes object 2 with ylabel Phase (deg) contains 2 objects of type line. These objects represent Gc, sys.

Las respuestas de la gráfica coinciden con bastante precisión. La gráfica muestra dos ramas para modelos con 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.

Historial de versiones

Introducido antes de R2006a