Está en la página 1de 13

ANALISIS DE SEALES Y SISTEMAS

LABORATORIO 01
El objeto bsico usado en MATLAB es una matriz numrica con la posibilidad de almacenar nmeros complejos. Los datos encontrados en el estudio de seales y sistemas son siempre, muy bien representados en forma de matrices. En esta seccin se usar MATLAB para la generacin de seales elementales como lo son las seales exponenciales, senoidales, etc.

El ToolBox de procesamiento de seales de MATLAB posee una larga variedad de funciones para la generacin de seales, estas seales requieren de una representacin vectorial de la variable tiempo, de manera continua o discreta. Para realizar una simulacin de un intervalo continuo, se usa un vector de valores discretos con un intervalo de muestreo muy pequeo.

El siguiente comando genera un vector llamado t de valores que representan la variable tiempo, con un intervalo de muestreo de 1ms entre 0 y 1seg.

t = 0:0.001:1;

Para generar un vector llamado n de valores que representan la variable tiempo para una seal discreta en el intervalo de 0 a 1000, se puede usar el siguiente comando.

n = 0:1000; Despus de creado el vector que representa la variable tiempo, es posible iniciar el desarrollo de alguna seal de inters.

En MATLAB una seal discreta en el tiempo se representa exactamente, porque los valores de la seal son representados como los elementos de un vector. Sin embargo las seales de tiempo continuo en MATLAB son tan solo

aproximaciones. La aproximacin consiste de un vector cuyos elementos son muestras de la verdadera seal de tiempo continuo. Cuando se usa esta tcnica para la representacin de seales continuas es importante escoger el intervalo de muestreo lo suficientemente pequeo para asegurar que las muestras capturan todos los detalles de la seal.

SEALES PERIODICAS

La generacin de seales peridicas tales como ondas cuadradas y triangulares es una actividad muy fcil de realizar en MATLAB. Consideremos primero la generacin de una onda cuadrada de amplitud A, frecuencia fundamental w (medida en radianes por segundo) y ciclo til rho. Recordemos que el ciclo til es la fraccin de cada periodo en donde la seal es positiva.

Para generar dicha seal se puede usar el siguiente conjunto de comandos: >> A = 1; >> w = 10 * pi; >> rho = 0.5; >> t = 0:0.001:1; >> sq = A*square(w*t+rho); >> plot(t,sq);

El resultado se puede observar en la siguiente grfica:

En la segunda lnea, pi es una funcin interna de matlab que calcula el nmero ms cercano a la constante PI en formato de coma flotante. El ltimo comando es usado para ver la seal generada. El comando plot dibuja lneas conectando los valores sucesivos de la seal y as da la apariencia de una seal en tiempo continuo.

Consideremos ahora la generacin de una onda triangular de amplitud A, frecuencia fundamental w y ancho Wdt . El periodo de la onda triangular ser T con el mximo valor de la seal ocurriendo en t = WT . El comando bsico para generar esta seal es:

A * sawtooth(w * t + Wdt) El listado complete de comandos sera: >> A = 1; >> w = 10 * pi; >> Wdt = 0.5; >> t = 0:0.001:1; >> tri = A*sawtooth(w * t + Wdt); >> plot(t,tri);

El resultado se puede visualizar en la siguiente grfica. Como se menciono anteriormente, una seal generada en MATLAB es inherentemente de naturaleza discreta. Para visualizar una seal en tiempo discreto se puede hacer uso del comando stem. Especficamente stem( n , x ), bosqueja los datos contenidos en el vector x como una seal de tiempo discreto con los valores de tiempo definidos por el vector n. Los vectores n y x deben tener dimensiones compatibles, es decir deben tener el mismo nmero de elementos. El siguiente ejemplo genera una seal cuadrada en tiempo discreto de amplitud igual a la unidad, ciclo til igual a 50% y una frecuencia angular igual a :

>> A = 1; >> omega = pi / 4; >> rho = 0.5; >> n = -10:10; >> x = A*square(omega*n +rho); >> stem(n,x); El resultado se puede ver en la siguiente grfica:

SEALES EXPONENCIALES

Las seales exponenciales se pueden clasificar segn su comportamiento en decrecientes y crecientes. El comando en MATLAB para generar una seal exponencial decreciente es: B * exp(-a*t); Para generar una seal exponencial creciente se usa el comando: B * exp( a * t); En ambos casos el parmetro a es positivo. El siguiente ejemplo muestra la generacin de una seal exponencial decreciente: >> B = 5; >> a = 6; >> t = 0:0.001:1; >> x = B * exp( -a * t ); % seal exponencial decreciente. >> plot( t, x ); Siendo el resultado como sigue:

Para la generacin de una seal exponencial creciente se puede usar el siguiente ejemplo:

>> B = 1; >> a = 5; >> t = 0:0.001:1; >> x = B * exp( a * t ); >> plot( t, x ) ;

Existen casos particulares en los que la base de la operacin de exponenciacin no es el nmero irracional e, puede ser cualquier otro nmero. Para estos casos se usa una notacin diferente la cual esta basada en la utilizacin del smbolo ^. Observando el ejemplo que sigue se nota que r es un nmero mientras que n es un vector, por lo tanto se usa una combinacin del smbolo exponenciacin con el carcter . Lo cual significa que a cada valor del vector le ser aplicada la funcin.

El siguiente ejemplo genera la seal:

>> B = 1; >> r = 0.85; >> n = -10:10; >> x = B * r .^ n; >> stem( n , x );

SEALES SINUSOIDALES.

MATLAB tambin contiene funciones trigonomtricas que pueden ser usadas para generar seales senosoidales. Una seal coseno de amplitud A, frecuencia w0 (medida en radianes por segundo) y ngulo de fase phi (en radianes) se obtiene usando el comando:

A * cos ( w0 * t + phi);

Alternativamente se puede usar la funcin seno para generar una seal senosoidal usando el siguiente comando:

A * sin ( w0 * t + phi );

En seguida se muestran ejemplos para cada uno de las seales respectivamente: >> A = 4; >> w0= 20 * pi; >> phi = pi / 6;

>> t = 0:0.001:1; >> coseno = A * cos( w0 * t + phi); >> plot(t,coseno) ;

>> A = 0.5; >> w0 = 20 * pi; >> phi = pi / 2; >> t = 0:0.001:1; >> seno = A * sin( w0 * t + phi); >> plot(t,seno);

SEALES SINUSOIDALES CON AMORTIGUACIN EXPONENCIAL.

En todos los comandos de generacin de seales descritos anteriormente, se ha generado la amplitud deseada de las seales, realizando una multiplicacin por un escalar A. Esta operacin se describe usando el smbolo asterisco *. Supongamos que se desea multiplicar una seal senosoidal por una seal exponencial para producir como resultado una seal con amortiguacin exponencial. La siguiente ecuacin describe mejor el supuesto caso:

Debido a que tanto la componente senosoidal de la seal como la exponencial son vectores, el procedimiento para la generacin de la seal final requiere de una multiplicacin de dos vectores elemento por elemento. En MATLAB este tipo de multiplicacin se representa usando el smbolo punto (.) seguido por el smbolo asterisco (*). As el comando para generar la ecuacin anterior sera;

A * sin( w0 * t + phi) .* exp ( -a * t);

Y un ejemplo completo sera:

>> A = 60; >> w0 = 20 * pi; >> phi = 0; >> a = 6; >> expsen = A * sin( w0 * t + phi) .* exp ( -a * t); >>plot(t,expsen);

Dando como resultado la siguiente grfica:

La versin discreta de la misma seal se puede obtener haciendo uso de los comandos mostrados anteriormente de la siguiente manera: >> A = 10; >> a = -0.1; >> w0 = 2 * pi / 12; >> phi = 0; >> n = -10 : 10; >> x = A * sin( w0 * n + phi); >> y = exp( a * n); >> z = x .* y; >> tem(n,z)

SEALES IMPULSO, PASO Y RAMPA. En MATLAB, el comando ones(M, N) genera una matriz de unos de tamao M x N, y el comando zeros(M, N) es una matriz de ceros del mismo tamao. Se puede hacer uso de estas dos matrices para generar dos seales comnmente usadas.

Seal Paso:

Una seal paso de amplitud uno, puede ser generada con el siguiente comando.

U = [zeros(1, 10), ones(1, 11)];

Para la versin continua creamos un vector que represente el tiempo el cual tenga muestras de un intervalo separados por valores muy pequeos mientras que para la representacin de esta seal en tiempo discreto creamos un vector que represente el tiempo el cual debe tener valores separados por una unidad.

Los comandos y los resultados para ambos tipos de seal se muestran a continuacin: >> u=[zeros(1,10),ones(1,11); >> t=-1:0.1:1; >> plot(t,u)

>> u=[zeros(1,10), ones(1,11)]; >> n=-10:10; >> stem(n,u)

De los comandos anteriores es de notar que para poder usar las funciones plot() y stem(), es requisito que los vectores (t y u) (n y u) tengan iguales dimensiones. Por esta razn el vector u se forma como una composicin de diez ceros y 11 unos, debido a que los arreglos t y n, tienen dimensin 21 dado que incluyen un elemento central el cual es el nmero cero. Para probar este hecho, se puede hacer uso de otra funcin de MATLAB llamada size() que devuelve como resultado un vector con las dimensiones de la matriz que se le pasa como parmetro as:

>> size(n)

>> size(u)

>> size(t)

ans =

ans =

ans =

21

21

21

Seal Impulso:

La versin discreta de la seal impulso se puede tambin generar con ayuda de las funciones zeros() y ones(), realizando una composicin como sigue:

>> delta = [ zeros( 1 ,10 ), 1 , zeros( 1 ,10 ) ]; >> n = -10:10; >> stem(n,delta);

Una versin continua podra evidentemente generarse usando la misma tcnica que se us en el apartado anterior, sin embargo es necesario aumentar el nmero de muestras a fin de maximizar la pendiente de la seal, en seguida se vern dos ejemplos con diferentes nmero de muestras en el mismo intervalo de tiempo, como se puede ver la correspondencia entre las dimensiones de los vectores se mantienen as que al aumentar el tamao de muestras del vector que representa el tiempo es necesario aumentar el valor de ceros y de unos con el cual se esta creando la seal.

En el ejemplo se puede ver que a mayor numero de muestras, la pendiente de la seal se hace mayor y la aproximacin a la seal verdadera es ms cercana. >>delta=[zeros(1,10),1,zeros(1,10)]; >>t=-1:0.1:1; >>plot(t,delta)

>> delta = [ zeros( 1 , 1000 ), 1 , zeros( 1 , 1000 ) ]; >> t=-1:0.001:1; >> plot(t,delta)

Seal Rampa

Para generar la seal rampa, tan solo es necesario recordar que esta funcin puede ser creada, como la composicin de una recta Y(x) = x a partir de cero y de la recta Y(x) = 0 para valores de x menores de cero, as la versin discreta y continua se muestran a continuacin:

>> rampa1=n1; >> n1=0:30; >> rampa1=n1; >> rampa = [zeros(1,29),rampa1]; >> stem(n,rampa)

>> t1=0:0.1:10; >> rampa1=t1; >> rampa=[zeros(1,101),rampa1]; >> t2=-10:0.1:0; >> t=[t2,t1]; >> plot(t,rampa)

EXPERIMENTOS

1. Desarrollar un conjunto de comandos MATLAB para aproximar las siguientes seales peridicas en tiempo continuo, dibujando 5 ciclos de cada una: a. Onda Cuadrada, de amplitud 5 Volts, frecuencia fundamental 20 Hz y ciclo til del 60%. b. Seal diente de sierra, amplitud 5 Volts y frecuencia fundamental 20Hz

2. La solucin a una ecuacin diferencial esta dada por la siguiente expresin:

Usando MATLAB, grafique la solucin de la ecuacin en el siguiente intervalo [0,5] con una frecuencia de muestreo de 100 Hz

3. Repita el problema nmero dos para la siguiente expresin:

4. Una seal senosoidal con amortiguacin exponencial esta definida por la siguiente expresin:

Donde el parmetro a es variable y toma valores sobre el siguiente conjunto: 500, 750, 1000. Usando MATLAB, investigar el efecto de variar dicho parmetro en la seal en el intervalo [-2,2]. ING. LUIS VELASQUEZ MACHUCA

También podría gustarte