Sisemas y Circuios Prácica : Señales Curso Académico 7/8. Pares Par e Impar de una Señal En ese primer aparado, aprenderemos a calcular las pares par e impar de una señal, con ayuda de Malab. Primero, para señales coninuas, y luego para secuencias discreas... Ejemplo Calcule la pare par y la pare impar de la siguiene señal coninua: x() - -.. Solución al Ejemplo con Malab Para calcular las pares par e impar de la señal propuesa, debemos efecuar las siguienes operaciones: x() + x( ) P ar{x()} = x p () = x() x( ) Impar{x()} = x i () = Veamos como hacerlo rápidamene con ayuda de Malab. Teclee, desde la línea de comandos, las siguienes senencias : close all; clc; clear; syms ; x = (+)*(heaviside(+)-heaviside(+)) - *(heaviside(+)-heaviside()) +... *(heaviside()-heaviside(-)) + heaviside(-); xpar = (x + subs(x,,-))/; ximpar = (x - subs(x,,-))/; La primera línea sirve para cerrar cualquier figura que pudiera esar abiera (close all;), limpiar la línea de comandos, por si hubiera algún código escrio previamene (clc;), y borrar el valor de cualquier variable que esuviera previamene definida (clear;). A coninuación, definimos la variable simbólica (syms ;), que será la variable emporal, eso es, nuesra variable independiene. Lo siguiene, es definir la señal x(). Repare en que podemos consruirla a base de líneas recas y funciones escalón, según: x() = ( + ) [u( + ) u( + )] + ( ) [u( + ) u()] + () [u() u( ) + u( )] + u( ) j, porque, no es necesario que escriba cada línea; puede copiar las senencias en el.pdf y pegarlas en Malab. En lo que sí debe inverir iempo es en comprender qué significa, para qué sirve, y cómo se uiliza, cada comando ejecuado.
En Malab, el escalón se consigue mediane la función heaviside. Toda vez que enemos definida la señal x(), obenemos sus pares par e impar (xpar e ximpar, respecivamene), aplicando las expresiones maemáicas aneriores. Fíjese bien en que, para evaluar una función en un puno disino a, hemos uilizado la función subs. A coninuación, represenaremos gráficamene las res señales. Teclee, desde la línea de comandos: figure(); ezplo(x,[-4,4]); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( x() ); pause figure(); ezplo(xpar,[-4,4]); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( PARTE PAR ); pause figure(); ezplo(ximpar,[-4,4]); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( PARTE IMPAR ); Con cada bloque, abrimos una figura nueva y represenamos en ella una señal. Aprenda que ezplo sirve para dibujar señales definidas en forma simbólica, y que podemos indicar como parámero el inervalo donde queremos ver la señal (en ese caso, [-4, 4]). El reso de líneas, sirven para mejorar la visualización (aumenar el grueso de la línea, poner un íulo en la gráfica, igualar el amaño de las unidades en ambos ejes y sobreimpresionar una rejilla de líneas puneadas para idenificar mejor los punos significaivos de las señales; el pause, deiene emporalmene la ejecución hasa pulsar el ener). Obenemos el siguiene resulado: x() 4 4
PARTE PAR 4 4 PARTE IMPAR 4 4.. Ejercicio Nos planemos ahora auomaizar los cálculos aneriores, programando una función que ome como enrada una señal coninua cualquiera, y ofrezca como salida sus pares par e impar, visualizando, además, las res señales. Programar funciones en Malab es an sencillo como escribir comandos similares a los aneriores en un fichero cuya primera línea es: funcion [VarSalida,VarSalida,...] = NombreFunción(VarEnrada,VarEnrada,...) y guardar ese fichero con la exensión.m. A parir de ese momeno, exise una nueva función de Malab llamada NombreFunción que podemos ejecuar desde la línea de comandos, como cualquiera de las predefinidas en Malab, siempre y cuando esemos en el direcorio en el que guardamos el fichero ( j con eso), pasándole los correspondienes valores de las variables de enrada, y obeniendo los valores de las diferenes variables de salida (si es que las hay, en ambos casos). Para el ejemplo que nos ocupa, vamos a crear una función llamada ParImparCon. Para ello, copie las siguienes senencias en un fichero nuevo, desde el edior de Malab, y guárdelo con el nombre ParImparCon.m: Es cosumbre recomendable asignar a las funciones nombres que indiquen lo que hacen (en ese caso: pare Par, pare Impar, señales Coninuas).
funcion ParImparCon(x,I) """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" PROPÓSITO: Programa que calcula las pares Par e Impar de una Se~nal Coninua, visualizando además, las res se~nales. USO: ParImparCon(x,I) ARGUMENTOS......DE ENTRADA: x ---> Se~nal Coninua. I ---> Inervalo (de la variable independiene) donde se represenarán las se~nales....de SALIDA: NO HAY COMENTARIOS: La se~nal x debe ser una función simbólica, de una única variable independiene, que debe ser. VER TAMBIÉN: ParImparDis """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" (C) NOMBRE ALUMNO, 5. Versión. """""""""""""""""""""""""""""""""""""""" syms ; Definición de variable independiene simbólica. xpar = (x + subs(x,,-))/; Pare Par de la se~nal. ximpar = (x - subs(x,,-))/; Pare Impar de la se~nal. F = figure(); se(f, name, PARTE PAR Y PARTE IMPAR (SE~NALES CONTINUAS) ); subplo() ezplo(x,i); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( SE~NAL ORIGINAL: x() ); subplo() ezplo(xpar,i); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( PARTE PAR: x_p() ); subplo(4) ezplo(ximpar,i); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( PARTE IMPAR: x_i() ); 4
Prese aención a lo siguiene: La primera línea, nos sirve para definir una nueva función, que podremos uilizar a parir de ahora cuanas veces deseemos. La función definida (llamada ParImparCon) iene dos argumenos de enrada, y ninguno de salida. Cualquier línea incluida en un fichero.m que comience con el carácer, es un comenario, eso es, no forma pare del código. En paricular, la sucesión de líneas comenadas que suceden a la definición de la función, serán la ayuda de la función, y facilian el uso de la misma por una persona disina a la que la programó. Compruebe eso, ecleando, desde la línea de comandos help ParImparCon, después de que haya grabado el fichero. La posibilidad de incluir varias gráficas en una misma figura mediane la función subplo. Teclee help subplo, desde la línea de comandos, para aprender a uilizarlo..4. Hio Calcule las pares Par e Impar de las siguienes señales coninuas, uilizando la función ParImparCon: a. x () = sen(), represenando en el inervalo [ 4π, 4π]. b. x () = cos(), en el inervalo [ π, π]. c. x () = 4 { [u() u( )] + ( + ) [u( ) u( )]}, en el inervalo [ 4, 4]. Compruebe que obiene los resulados mosrados a coninuación. Para la primera señal: SEÑAL ORIGINAL: x() 5 5 5 5 PARTE PAR: x p () PARTE IMPAR: x i () 5 5 5 5 5 5 5 5 Repare en que, por raarse de una señal con simería impar, su pare par es la señal idénicamene nula, y su pare impar coincide con la propia señal. Noe, además, que se raa de una señal periódica, de periodo π, y que, por ano, caben 4 periodos (4 ondas compleas) en el inervalo de visualización. También son de gran ayuda para el propio programador, si se uiliza la función algún iempo después de haberla programado. 5
Para la segunda señal: SEÑAL ORIGINAL: x() 6 4 4 6 5 5 PARTE PAR: x p () PARTE IMPAR: x i () 6 4 4 6 5 5 6 4 4 6 5 5 En ese caso, al ser una señal con simería par, es, precisamene, su pare impar la que se anula, y la pare par la que coincide con la propia señal. Noe, además, que la presencia del valor absoluo hace que oda la señal quede por encima del eje de abscisas, y que el periodo ahora sea π ( j ), dando cabida a 6 periodos compleos (6 semi ondas) en el inervalo de visualización. Por úlimo, para la ercera señal: SEÑAL ORIGINAL: x() 4 4 4 PARTE PAR: x p () PARTE IMPAR: x i () 4 4 4 4 Como esa señal no presena ningún ipo de simería, ahora son no nulas ni la pare par, ni la pare impar. 6
No pase por alo, en los res casos, que: La pare par de una señal, siempre iene simería par, así como la pare impar, siempre iene simería impar. Si sumamos la pare par y la pare impar de una señal, obenemos la señal original.. Ejemplo Calcule la pare par y la pare impar de la siguiene secuencia discrea: x[n]... -4 - - - - 4... n.. Solución al Ejemplo con Malab Para calcular las pares par e impar de la secuencia, debemos efecuar las siguienes operaciones: x[n] + x[n] P ar{x[n]} = x p [n] = x[n] x[n] ImP ar{x[n]} = x i [n] = En ese caso, por raarse de una secuencia discrea, no es necesario uilizar el cálculo simbólico, y basa con emplear el cálculo maricial. Eso quiere decir que las secuencias discreas se raan, en Malab, como vecores. Al uilizar vecores para represenar secuencias surge un problema cuando esas secuencias son de longiud infinia, es decir, con infinias muesras no nulas, al ser imposible rabajar con la oalidad de la señal. Prese especial cuidado en esos casos. Piense en la implicaciones que ello conlleva. Sepa, desde ahora que, a veces, sólo será posible alcanzar resulados aproximados, y comporamienos cualiaivos. Para resolver el ejemplo, creamos una nueva función llamada ParImparDis cuyo código puede ver en la página siguiene. Ojéelo, y prese especial aención a lo siguiene: La forma en que abaimos una secuencia discrea. La función uilizada para represenar gráficamene secuencias discreas (sem). Teclee help sem, desde la línea de comandos, para ver las disinas opciones de que disponemos. 7
funcion ParImparDis(x,n) """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" PROPÓSITO: Programa que calcula las pares Par e Impar de una Secuencia Discrea, visualizando además, las res secuencias. USO: ParImparDis(x,n) ARGUMENTOS......DE ENTRADA: x ---> Muesras de la secuencia discrea. n ---> Vecor emporal discreo a que se refieren las muesras....de SALIDA: NO HAY COMENTARIOS: Las muesras del vecor x deben corresponder esar cenradas respeco del origen, eso es, el vecor n debe ser de la forma: [-L,...,,...,L]. VER TAMBIÉN: ParImparCon """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" (C) NOMBRE ALUMNO, 5. Versión. """""""""""""""""""""""""""""""""""""""" xpar = (x + x(end:-:))/; Pare Par de la secuencia. Par deerminar x[-n], basa con leer las muesras de la secuencia al revés, eso es, empezando por la úlima y erminando por la primera. ximpar = (x - x(end:-:))/; Pare Impar de la secuencia. F = figure(); se(f, name, PARTE PAR Y PARTE IMPAR (SECUENCIAS DISCRETAS) ); subplo() sem(n,x, filled ); xlabel( n ); ile( SECUENCIA ORIGINAL: x[n] ); subplo() sem(n,xpar, filled ); xlabel( n ); ile( PARTE PAR: x_p[n] ); subplo(4) sem(n,ximpar, filled ); xlabel( n ); ile( PARTE IMPAR: x_i[n] ); 8
Una vez que hemos creado la función, para deerminar la solución del ejemplo, escribimos en la línea de comandos, las senencias siguienes: close all; clc; clear; x = [-*ones(,),*ones(,)]; n = -:; ParImparDis(x,n); Y obenemos el siguiene resulado: SECUENCIA ORIGINAL: x[n].5.5 5 5 n PARTE PAR: x p [n] PARTE IMPAR: x i [n].8.5.6.4..5 5 5 n 5 5 n. Ejercicio Calcule la pare par y la pare impar de la siguiene secuencia discrea: x n... -5-4 - - - - 4-5... n 9
4. Hio Uilice el programa ImparParDis para resolver el Ejercicio. Compruebe que se obiene el siguiene resulado: SECUENCIA ORIGINAL: x[n].5.5.5 5 5 n.5 PARTE PAR: x p [n].5 PARTE IMPAR: x i [n].5.5.5.5 5 5 n.5 5 5 n Observe que sigue siendo válido que la pare par iene simería par, la pare impar iene simería impar, y la suma de ambas, coincide con la secuencia original.
5. Poencia y Energía En ese aparado aprenderemos a calcular los valores de poencia y energía asociados ano a señales coninuas como a secuencias discreas. 5.. Ejemplo Calcule la energía de la señal x a () = e u(), y la poencia de la secuencia x b [n] = cos( π 4 n). 5.. Solución al Ejemplo Para calcular la energía (noe que es señal coninua): close all; clc; clear; syms ; xa = exp(-*)*heaviside(); E_xa = in(xa^,,-inf,+inf) Y enconramos que: E xa() = 4 Prese aención al cálculo de la inegral mediane el comando in, (sólo es preciso indicar la función que se quiere inegrar, la variable de inegración, y los límies de la inegral definida, en ese caso, desde hasa + ). Fíjese ambién en que, en ese caso, no es necesario indicar explíciamene el valor absoluo (presene en la expresión maemáica que define la energía), al esar la función elevada al cuadrado, y por raarse de una señal real. j Aprenda las posibilidades que ofrece la función in, llamando a la ayuda desde la línea de comandos, help in. Piense en odo el parido que puede sacar a esa función, calculando inegrales a golpe de ecla. A coninuación, calculamos el valor de poencia soliciado. Dese cuena de que se raa de una secuencia discrea y periódica (N = 8), y que, por ano, podemos reducir el cálculo del valor medio del módulo al cuadrado de la señal; eso es precisamene la poencia, a un sólo periodo. Escribimos: close all; clc; clear; n = :7; x = cos((pi/4)*n); N = 8; P_xb = (/N)*sum(abs(x).^) pause Y enconramos que: P xb [n] = Repare en la manera de indicar el valor absoluo (abs), y en la necesidad de incluir un puno (.) previo a la poenciación (.^), para indicar que la operación se hace elemeno a elemeno, y que no esamos realizando un produco de vecores, lo que daría como resulado una mariz. 6. Ejercicio Calcule la energía de la secuencia x [n] = ( )n u[n], y la poencia de la señal x () = e j (+ π 4 ).
7. Hio Resuelva el Ejercicio, y compruebe que los valores pedidos son: E x [n] = 4 P x () = Tenga cuidado con la secuencia, porque es de duración infinia. Seleccione una precisión ala para calcular esa energía (File Preferences... Numeric forma: long), y uilice sucesivamene, 5, y punos para calcularla. Compruebe que así, la esimación de la energía va siendo cada vez mejor:.5,.676758,. En cuano a la señal, fíjese que es periódica de periodo π, (recuerde que las exponenciales complejas coninuas siempre son periódicas). Aproveche para represenar gráficamene esa señal, y comprobar visualmene su periodicidad. No olvide que, por raarse de una señal compleja, necesia dos gráficas para ello, una para la pare real, ora para la pare imaginaria, o bien, una para el módulo, y ora para el argumeno. Uilice el siguiene código para la visualización: close all; clc; clear; syms ; x = exp(j*(*+(pi/4))); figure(); subplo() ezplo(x*x,[-.5*pi,.5*pi]); Linea = findobj( ype, line ); se(linea, linewidh,.5); ylabel( x() ); xlabel( ); ile( MÓDULO ); subplo() ezplo(aan(imag(x)/real(x)),[-.5*pi,.5*pi]); Linea = findobj( ype, line ); se(linea, linewidh,.5); ylabel( Arg\{x()\} ); xlabel( ); ile( ARGUMENTO ); subplo() ezplo(real(x),[-.5*pi,.5*pi]); Linea = findobj( ype, line ); se(linea, linewidh,.5); ylabel( Real\{x()\} ); xlabel( ); ile( PARTE REAL ); subplo(4) ezplo(imag(x),[-.5*pi,.5*pi]); Linea = findobj( ype, line ); se(linea, linewidh,.5); ylabel( Imag\{x()\} ); xlabel( ); ile( PARTE IMAGINARIA );
Y obendrá como resulado: MÓDULO ARGUMENTO Real{x()} x() 4 4 4 PARTE REAL 4 4 Imag{x()} Arg{x()} 4 4 PARTE IMAGINARIA 4 4 Prese especial aención a lo siguiene: Cómo el periodo de la señal (T = π) se aprecia visualmene en ambas represenaciones (módulo argumeno, real imaginaria). Todos los ángulos, en la represenación gráfica del argumeno se confinan al inervalo [ π, + π ]. El desfase que inroduce en la señal la fase de π 4, desplazando las gráficas un cuaro de periodo hacia la izquierda.
8. Operaciones Básicas con Señales Por úlimo, ilusraremos con algunos ejemplos las operaciones básicas con señales coninuas. 8.. Ejemplo 4 Siendo x() la señal coninua de la figura, obenga x ( + ) : x() 8.. Solución al Ejemplo 4 con Malab Para calcular la ransformación soliciada, debemos realizar un escalado y un desplazamieno, ambos en el eje OX. El orden en que realicemos las operaciones es indiferene, siempre y cuando pongamos cuidado en hacerlo bien. Uilizamos las siguienes senencias, para obener x ( + ) por ambos caminos: close all; clc; clear; syms ; x = heaviside()-heaviside(-)+(-+)*(heaviside(-)-heaviside(-)); y = subs(x,,/); z = subs(y,,+); figure(); subplo() ezplo(x,[-,5]); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( x() ); pause subplo() ezplo(y,[-,5]); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( PRIMERO ESCALAR ); ylabel( y_()=x(/) ); pause subplo(5) ezplo(z,[-,5]); Linea = findobj( ype, line ); se(linea, linewidh, ); ylabel( z_()=y_(+)=x(/+) ); ile( DESPUÉS DESPLAZAR ); pause 4
y = subs(x,,+); z = subs(y,,/); subplo() ezplo(x,[-,5]); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( x() ); pause subplo(4) ezplo(y,[-,5]); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( PRIMERO DESPLAZAR ); ylabel( y_()=x(+) ); pause subplo(6) ezplo(z,[-,5]); Linea = findobj( ype, line ); se(linea, linewidh, ); ylabel( z_()=y_(/)=x(/+) ); ile( DESPUÉS ESCALAR ); De manera que obenemos, sucesivamene, las gráficas siguienes: x() x() 4 4 PRIMERO ESCALAR PRIMERO DESPLAZAR y ()=x(/).5.5.5 y ()=x(+).5.5.5 4 4 DESPUÉS DESPLAZAR DESPUÉS ESCALAR z ()=y (+)=x(/+) 4 z ()=y (/)=x(/+) 4 5
Tome noa de lo siguiene: Cada columna represena un orden diferene en las operaciones (en la primera columna, primero se escala y luego se desplaza; en la segunda columna, primero se desplaza y luego se escala). Efecivamene, por ambos caminos llegamos al mismo resulado. Si primero escalamos y luego desplazamos, las cuanías de ambas operaciones deben ser: para el escalado, y ( j ) para el desplazamieno4. Si primero desplazamos y luego escalamos, las cuanías de ambas operaciones deben ser: para el escalado, y para el desplazamieno, es decir, las que se obienen direcamene por inspección visual de la señal. Aclarado lo anerior, sisemaizamos la operación, escribiendo una función que obenga y represene cualquier ransformación de una señal. Mire cómo hacerlo: funcion OperacionesBasicas(x,Ix,y,Iy) """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" PROPÓSITO: Programa que realiza una rasformación sobre una se~nal y represena ambas en los inervalos soliciados. USO: OperacionesBasicas(x,Ix,y,Iy) ARGUMENTOS......DE ENTRADA: x ---> Se~nal original. Ix ---> Inervalo de visualización de la se~nal original. y ---> Se~nal ransformada. Iy ---> Inervalo de visualización de la se~nal ransformada....de SALIDA: NO HAY COMENTARIOS: La se~nal x debe ser una función simbólica, de una única variable independiene, que debe ser. VER TAMBIÉN: """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" (C) NOMBRE ALUMNO, 5. Versión. """""""""""""""""""""""""""""""""""""""" syms ; F = figure(); se(f, name, OPERACIONES BÁSICAS CON SE~NALES CONTINUAS ); subplo() ezplo(x,ix); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( SE~NAL ORIGINAL: x() ); 4 Recuerde que, de manera general, si expresamos la señal como x(b + C), cuando primero se escala y luego se desplaza, el escalado será en la cuanía indicada por B, pero j, porque el desplazamieno será en la cuanía indicada por C B. 6
subplo() ezplo(y,iy); Linea = findobj( ype, line ); se(linea, linewidh, ); ile( TRANSFORMACIÓN SOLICITADA: y() ); Con ayuda de la función anerior, para resolver el ejemplo 4, basa eclear desde la línea de comandos, las siguienes senencias: close all; clc; clear; syms ; x = heaviside()-heaviside(-)+(-+)*(heaviside(-)-heaviside(-)); y = subs(x,,/+); OperacionesBasicas(x,[-4 4],y,[-4 4]) Y obenemos: SEÑAL ORIGINAL: x().5.5.5 4 4 TRANSFORMACIÓN SOLICITADA: y().5.5.5 4 4 9. Ejercicio 4 Siendo x() la siguiene señal: x() 7
obenga las siguienes rasformaciones de la señal: a. x( + ) b. x( ) c. x( + 4) d. x( ) e. x ( ) +6 f. x( + ). Hio 4 Resuelva el Ejercicio 4 con ayuda de la función Se~nalesBasicas, y compruebe que se obienen los siguienes resulados: x( + ): SEÑAL ORIGINAL: x() 6 4 4 6 TRANSFORMACIÓN SOLICITADA: y() 6 4 4 6 x( ): SEÑAL ORIGINAL: x() 6 4 4 6 TRANSFORMACIÓN SOLICITADA: y() 6 4 4 6 8
x( + 4): SEÑAL ORIGINAL: x() 6 4 4 6 TRANSFORMACIÓN SOLICITADA: y() 6 4 4 6 x( ): SEÑAL ORIGINAL: x() 6 4 4 6 TRANSFORMACIÓN SOLICITADA: y() 6 4 4 6 9
x ( ) +6 : SEÑAL ORIGINAL: x() 6 4 4 6 TRANSFORMACIÓN SOLICITADA: y() 6 4 4 6 x( + ) : SEÑAL ORIGINAL: x() 6 4 4 6 TRANSFORMACIÓN SOLICITADA: y() 6 4 4 6