Contenido principal

gensig

Crear señales periódicas para simular la respuesta del sistema con lsim

    Descripción

    [u,t] = gensig(type,tau) genera una señal periódica de amplitud unitaria con el tipo y el periodo especificados. Utilice la señal u y el vector de tiempo t correspondiente para simular la respuesta en el tiempo de un sistema dinámico de una entrada con lsim o lsimplot, o para obtener características de respuesta con lsiminfo. Para crear señales para sistemas de varias entradas, use llamadas repetidas a gensig y apile los vectores u resultantes en una matriz. Cuando utiliza u y t para simular un modelo de sistema dinámico, el software interpreta que t tiene las unidades de la propiedad TimeUnit del modelo.

    ejemplo

    [u,t] = gensig(type,tau,Tf) genera una señal con una duración de Tf. t se ejecuta desde 0 hasta Tf en incrementos de tau/64.

    ejemplo

    [u,t] = gensig(type,tau,Tf,Ts) genera una señal con un tiempo de muestreo de Ts. t se ejecuta desde 0 hasta Tf en incrementos de Ts. Para generar una señal a fin de simular un modelo de tiempo discreto, utilice esta sintaxis y establezca Ts en el tiempo de muestreo del modelo.

    ejemplo

    Ejemplos

    contraer todo

    Genere una onda cuadrada con un periodo de 2 s que podrá usar para simular una respuesta del sistema dinámico con lsim.

    tau = 2;
    [u,t] = gensig("square",tau);

    gensig devuelve la señal como vector u y el vector de tiempo t correspondiente. Cuando no se especifica la duración de la señal, gensig genera una señal que se ejecuta durante cinco periodos (Tf = 5*tau). Cuando no se especifica una unidad de tiempo, la función se establece de forma predeterminada en 64 muestras por periodo (Ts = tau/64). Por lo tanto, esta señal se ejecuta durante 10 s con una unidad de tiempo de 0.03125 s. Represente la señal.

    plot(t,u)

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

    gensig devuelve una onda cuadrada de amplitud unitaria que comienza en cero. Puede modificar u para obtener una onda cuadrada con una amplitud y unos puntos finales diferentes. Cree una onda cuadrada de periodo 5 s que se ejecuta durante 15 s y que cambia entre los valores –1 y 1.

    tau = 5;
    Tf = 15;
    [u0,t] = gensig("square",tau,Tf);
    u = 2*u0-1;
    plot(t,u)

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

    Use t y u para simular la respuesta de un sistema dinámico con lsim. El comando lsim asume que los valores de t están en las unidades del modelo de sistema dinámico que simula (sys.TimeUnit).

    sys = tf(30,[1 5 30]);
    lsim(sys,u,t)

    MATLAB figure

    Si no especifica una unidad de tiempo (tiempo de muestreo), gensig se establece de forma predeterminada en 64 muestras por periodo o Ts = tau/64. Cuando desee simular un modelo de tiempo discreto con lsim, la unidad de tiempo debe ser igual al tiempo de muestreo del modelo. Proporcione gensig con este tiempo de muestreo para generar una señal adecuada. Por ejemplo, genere una onda sinusoidal para simular un modelo de sistema dinámico de tiempo discreto con un tiempo de muestreo de 0.1 s.

    tau = 3;
    Tf = 6;
    Ts = 0.1;
    [u,t] = gensig("sine",tau,Tf,Ts);

    Simule la respuesta del modelo a la señal generada.

    sys = zpk([],[-0.1,-0.5],1,Ts);
    lsim(sys,u,t,Ts)

    MATLAB figure

    Para simular un sistema de varias entradas con lsim, debe proporcionar las señales de entrada como matriz cuyas columnas representan la señal aplicada a cada entrada. Dicho de otra forma, u(:,j) es la señal aplicada a la j-ésima entrada en cada unidad de tiempo. Para usar gensig a fin de generar esta matriz de entrada, cree las señales para cada entrada de forma conjunta y apílelas juntas en una matriz.

    Por ejemplo, cree una señal para simular un sistema de dos entradas que inyecta una onda cuadrada con un periodo de 2 s en la primera entrada y un pulso cada 1.5 s en la segunda entrada. Especifique una duración y un tiempo de muestreo de forma que los dos vectores tengan la misma longitud, necesario para combinarlos en una matriz.

    Tf = 8;
    Ts = 0.02;
    [uSq,t] = gensig("square",2,Tf,Ts);
    [uPu,~]  = gensig("pulse",1.5,Tf,Ts);
    u = [uSq uPu];
    size(u)
    ans = 1×2
    
       401     2
    
    

    Cada fila u(i,:) de u es la señal (u1,u2) aplicada a las entradas en la unidad de tiempo t(i) correspondiente.

    Puede combinar señales que no se han creado con gensig siempre que tengan la misma longitud. Por ejemplo, supongamos que desea simular un sistema de tres entradas aplicando uSq a la primera entrada y uPu a la segunda entrada. También desea aplicar una rampa a la tercera entrada que comienza en 0 y aumenta a 1 en la unidad de tiempo final Tf = 8. Asegúrese de que la señal sea un vector columna de la misma longitud que uSq y uPu. Luego, combínela con las otras señales para crear la matriz de entrada.

    uRa = linspace(0,1,401)'; 
    u = [uSq uPu uRa];
    size(u)
    ans = 1×2
    
       401     3
    
    
    plot(t,u)

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

    Ahora puede usar u y t para simular el modelo de tres entradas. Genere un modelo de espacio de estados de tres entradas y dos salidas, y simule la respuesta en sus dos salidas a u aplicado en las entradas.

    rng('default')
    sys = rss(3,2,3);
    lsim(sys,u,t)

    MATLAB figure

    Argumentos de entrada

    contraer todo

    Tipo de señal periódica que se desea generar, especificado como una de las siguientes opciones:

    • "sine": onda sinusoidal.

    • "square": onda cuadrada.

    • "pulse": pulso periódico

    Todas las señales tienen amplitud unitaria y el valor inicial 0 en la unidad de tiempo t = 0. Puede especificar el tipo con un vector de caracteres en lugar de una cadena (por ejemplo, 'sine').

    Periodo de la señal generada, especificado como valor escalar positivo. Especifique tau en las unidades del modelo de sistema dinámico que desee simular con lsim. Por ejemplo, si sys.TimeUnit es 'seconds', para generar una señal a fin de simular sys con un periodo de 30 s, establezca tau en 30. Si sys.TimeUnit es 'minutes', para generar esta señal, establezca tau en 0,5.

    Duración de la señal para la simulación, especificada como valor escalar positivo. El vector de salida t tiene la forma 0:Ts:Tf, donde la unidad de tiempo está establecida por Ts. Cuando utiliza t con lsim para simular un modelo de sistema dinámico, lsim interpreta que t tiene las unidades especificadas en la propiedad TimeUnit del modelo.

    Unidad de tiempo, especificada como valor escalar positivo. El vector de salida t tiene la forma 0:Ts:Tf. Las unidades de Ts son las unidades especificadas por el modelo de sistema dinámico de la propiedad TimeUnit que desee simular con lsim. Cuando simule un modelo de tiempo discreto, establezca Ts con un valor igual al tiempo de muestreo Ts del modelo.

    Argumentos de salida

    contraer todo

    Señal generada, devuelta como vector columna de la misma longitud que t. El formato de la señal está determinado por type. La señal tiene amplitud unitaria con una referencia de 0.

    Vector de tiempo, devuelto como vector columna con la forma 0:Ts:Tf. Si no especifica una duración Tf, gensig usa Tf = 5*tau. Si no especifica una unidad de tiempo Ts, gensig usa tau/64.

    Historial de versiones

    Introducido antes de R2006a

    Consulte también

    | |