You are on page 1of 9

USO DE MATLAB PARA LA GENERACION DE SEÑALES

El objeto básico usado en MATLAB es una matriz numérica con la posibilidad de almacenar números complejos. Los datos encontrados en el estudio de señales y sistemas son siempre, muy bien representados en forma de matrices. En esta sección se usará MATLAB para la generación de señales elementales como lo son las señales exponenciales, senoidales, etc. El ToolBox de procesamiento de señales de MATLAB posee una larga variedad de funciones para la generación de señales, estas señales requieren de una representación vectorial de la variable tiempo, de manera continua o discreta. Para realizar una simulación de un intervalo continuo, se usa un vector de valores discretos con un intervalo de muestreo muy pequeño. 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 señal discreta en el intervalo de 0 a 1000, se puede usar el siguiente comando. n = 0:1000; Después de creado el vector que representa la variable tiempo, es posible iniciar el desarrollo de alguna señal de interés. En MATLAB una señal discreta en el tiempo se representa exactamente, porque los valores de la señal son representados como los elementos de un vector. Sin embargo las señales de tiempo continuo en MATLAB son tan solo aproximaciones. La aproximación consiste de un vector cuyos elementos son muestras de la verdadera señal de tiempo continuo. Cuando se usa esta técnica para la representación de señales continuas es importante escoger el intervalo de muestreo lo suficientemente pequeño para asegurar que las muestras capturan todos los detalles de la señal. SEÑALES PERIODICAS La generación de señales periódicas tales como ondas cuadradas y triangulares es una actividad muy fácil de realizar en MATLAB. Consideremos primero la generación 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 fracción de cada periodo en donde la señal es positiva.

una señal generada en MATLAB es inherentemente de naturaleza discreta. El resultado se puede observar en la siguiente gráfica: En la segunda línea. Los .Para generar dicha señal se puede usar el siguiente conjunto de comandos: >> >> >> >> >> >> A = 1. tri = A*sawtooth(w * t + Wdt). plot(t. Wdt = 0.5. Consideremos ahora la generación de una onda triangular de amplitud A. frecuencia fundamental w y ancho Wdt . El comando plot dibuja líneas conectando los valores sucesivos de la señal y así da la apariencia de una señal en tiempo continuo.tri). bosqueja los datos contenidos en el vector x como una señal de tiempo discreto con los valores de tiempo definidos por el vector n. El comando básico para generar esta señal es: A * sawtooth(w * t + Wdt) El listado complete de comandos sería: >> >> >> >> >> >> A = 1. x ). Específicamente stem( n . w = 10 * pi. El periodo de la onda triangular será T con el máximo valor de la señal ocurriendo en t = WT .001:1. w = 10 * pi. t = 0:0. Como se menciono anteriormente.001:1. plot(t.sq). rho = 0. El resultado se puede visualizar en la siguiente gráfica. sq = A*square(w*t+rho). Para visualizar una señal en tiempo discreto se puede hacer uso del comando stem. El último comando es usado para ver la señal generada. t = 0:0.5. pi es una función interna de matlab que calcula el número más cercano a la constante PI en formato de coma flotante.

El resultado se puede ver en la siguiente gráfica: SEÑALES EXPONENCIALES Las señales exponenciales se pueden clasificar según su comportamiento en decrecientes y crecientes. : Siendo el resultado como sigue: . >> rho = 0. Para generar una señal exponencial creciente se usa el comando: B * exp( a * t). es decir deben tener el mismo número de elementos. t = 0:0. ciclo útil igual a 50% y una frecuencia angular igual a >> A = 1. El siguiente ejemplo muestra la generación de una señal exponencial decreciente: >> >> >> >> >> B = 5. x = B * exp( -a * t ). En ambos casos el parámetro a es positivo.5. El comando en MATLAB para generar una señal exponencial decreciente es: B * exp(-a*t). >>n = -10:10. >> omega = pi / 4.x). El siguiente ejemplo genera una señal cuadrada en tiempo discreto de amplitud igual a la unidad. >>x = A*square(omega*n +rho).vectores n y x deben tener dimensiones compatibles. >>stem(n. a = 6. plot( t.001:1. x ). % señal exponencial decreciente.

. x = B * r . stem( n . x ) . n = -10:10.” Lo cual significa que a cada valor del vector le será aplicada la función. Existen casos particulares en los que la base de la operación de exponenciación no es el número irracional e. puede ser cualquier otro número. t = 0:0. Una señal coseno de amplitud A.Para la generación de una señal exponencial creciente se puede usar el siguiente ejemplo: >> >> >> >> >> B = 1. SEÑALES SENOISOIDALES. MATLAB también contiene funciones trigonométricas que pueden ser usadas para generar señales senosoidales. x ). x = B * exp( a * t ). plot( t. a = 5. Alternativamente se puede usar la función seno para generar una señal senosoidal usando el siguiente comando: A * sin ( w0 * t + phi ).001:1. El siguiente ejemplo genera la señal: >> >> >> >> >> B = 1.^ n. r = 0.85. por lo tanto se usa una combinación del símbolo exponenciación con el carácter “. frecuencia w0 (medida en radianes por segundo) y ángulo de fase phi (en radianes) se obtiene usando el comando: A * cos ( w0 * t + phi). Para estos casos se usa una notación diferente la cual esta basada en la utilización del símbolo ^. Observando el ejemplo que sigue se nota que r es un número mientras que n es un vector.

Así el comando para generar la ecuación anterior sería. Esta operación se describe usando el símbolo asterisco “*”. .) seguido por el símbolo asterisco (*). seno = A * sin( w0 * t + phi). se ha generado la amplitud deseada de las señales. t = 0:0. >> a = 6.En seguida se muestran ejemplos para cada uno de las señales respectivamente: >> >> >> >> >> >> >> >> >> >> >> >> A = 4.expsen). A = 0.* exp ( -a * t). SEÑALES SENOISOIDALES CON AMORTIGUACIÓN EXPONENCIAL.001:1. En todos los comandos de generación de señales descritos anteriormente. t = 0:0. el procedimiento para la generación de la señal final requiere de una multiplicación de dos vectores elemento por elemento. plot(t. w0= 20 * pi. >> w0 = 20 * pi. La siguiente ecuación describe mejor el supuesto caso: Debido a que tanto la componente senosoidal de la señal como la exponencial son vectores.coseno) .001:1. A * sin( w0 * t + phi) .seno). phi = pi / 6. >> phi = 0. Y un ejemplo completo sería: >> A = 60.5. >> expsen = A * sin( w0 * t + phi) . w0 = 20 * pi. >>plot(t. plot(t. coseno = A * cos( w0 * t + phi). realizando una multiplicación por un escalar A. En MATLAB este tipo de multiplicación se representa usando el símbolo punto (. Supongamos que se desea multiplicar una señal senosoidal por una señal exponencial para producir como resultado una señal con amortiguación exponencial.* exp ( -a * t). phi = pi / 2.

. U = [zeros(1.* y.Dando como resultado la siguiente gráfica: La versión discreta de la misma señal se puede obtener haciendo uso de los comandos mostrados anteriormente de la siguiente manera: >> >> >> >> >> >> >> >> >> A = 10. PASO Y RAMPA. ones(1.1. N) genera una matriz de unos de tamaño M x N. Para la versión continua creamos un vector que represente el tiempo el cual tenga muestras de un intervalo separados por valores muy pequeños mientras que para la representación de esta señal en tiempo discreto creamos un vector que represente el tiempo el cual debe tener valores separados por una unidad. y el comando zeros(M. puede ser generada con el siguiente comando. 11)]. z = x . Se puede hacer uso de estas dos matrices para generar dos señales comúnmente usadas. w0 = 2 * pi / 12. 10). y = exp( a * n). N) es una matriz de ceros del mismo tamaño.z) SEÑALES IMPULSO. En MATLAB. x = A * sin( w0 * n + phi). phi = 0. • Señal Paso: Una señal paso de amplitud uno. el comando ones(M. tem(n. n = -10 : 10. a = -0.

1:1.ones(1.Los comandos y los resultados para ambos tipos de señal se muestran a continuación: >> u=[zeros(1. tienen dimensión 21 dado que incluyen un elemento central el cual es el número cero. >> stem(n.u) >> u=[zeros(1.u) De los comandos anteriores es de notar que para poder usar las funciones plot() y stem(). >> n=-10:10.11)].10). se puede hacer uso de otra función de MATLAB llamada size() que devuelve como resultado un vector con las dimensiones de la matriz que se le pasa como parámetro así: >> size(n) ans = 1 21 >> size(u) ans = 1 21 >> size(t) ans = 1 21 . ones(1. Por esta razón el vector u se forma como una composición de diez ceros y 11 unos. debido a que los arreglos t y n.10).11). >> t=-1:0. es requisito que los vectores (t y u) ó (n y u) tengan iguales dimensiones. Para probar este hecho. >> plot(t.

>>t=-1:0.zeros(1. la pendiente de la señal se hace mayor y la aproximación a la señal verdadera es más cercana.10)]. en seguida se verán dos ejemplos con diferentes número de muestras en el mismo intervalo de tiempo.delta). 1000 ). zeros( 1 .10 ) ]. 1 .10 ).delta) . En el ejemplo se puede ver que a mayor numero de muestras.delta) >> delta = [ zeros( 1 . como se puede ver la correspondencia entre las dimensiones de los vectores se mantienen así que al aumentar el tamaño 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 señal.10). >>delta=[zeros(1. >> t=-1:0. Una versión continua podría evidentemente generarse usando la misma técnica que se usó en el apartado anterior.001:1.1. 1 . >> n = -10:10. >>plot(t.1:1. 1000 ) ]. sin embargo es necesario aumentar el número de muestras a fin de maximizar la pendiente de la señal. realizando una composición como sigue: >> delta = [ zeros( 1 . zeros( 1 . >> stem(n.• Señal Impulso: La versión discreta de la señal impulso se puede también generar con ayuda de las funciones zeros() y ones(). >> plot(t.

t1].rampa1].29). rampa=[zeros(1. stem(n.rampa1].101). tan solo es necesario recordar que esta función puede ser creada. t2=-10:0.• Señal Rampa Para generar la señal rampa. n1=0:30. así la versión discreta y continua se muestran a continuación: >> >> >> >> >> >> >> >> >> >> >> rampa1=n1.1:10.1:0.rampa) . t=[t2. plot(t. rampa1=t1. rampa = [zeros(1. rampa1=n1. como la composición de una recta Y(x) = x a partir de cero y de la recta Y(x) = 0 para valores de x menores de cero.rampa) t1=0:0.