Está en la página 1de 28

TECNICAS DIGITALES III TRABAJO PRACTICO N2

UNIVERSIDAD TECNOLOGICA NACIONAL


Facultad Regional Crdoba

Profesor: Ing. Moreno Abaroa, Carlos. J.T.P: Ing. Luzuriaga, Juan Manuel. Curso: 5R1 Integrantes: Borla Christian Ibaez Ismael Leguizamo Ignacio Miatello Santiago Sosa Guillermo 48940 50462 50713 34578

Ao 2011

UTN Facultad Regional Crdoba Tcnicas Digitales 3 Indice Objetivos 2.1 Seales bsicas utilizadas en el procesamiento digital de seales 2.1.1 Seal impulso unitario (desplazado) 2.1.2 Tren de impulsos 2.1.3 Escaln unitario 2.1.4 Seal sinusoidal 2.1.5 Seal exponencial 2.1.6 Seal compleja 2.2 Muestreo de seales en el dominio del tiempo Aliasing 2.2.1 2.2.2 2.2.3 2.2.4 2.3 Muestreo multi frecuencia: diezmado e interpolacin 2.3.1 Anlisis de las funciones de matlab: decmate, interp y resample 2.3.2 2.3.2.1 2.3.2.2 2.3.2.3 2.4 Manipulacin de seales en tiempo discreto 2.4.1 Desplazamiento en el tiempo 2.4.1.1 2.4.1.2 2.4.2 Reflexin 2.4.2.1 2.4.2.2 2.4.3 Escalado temporal 2.4.4 Suma, multiplicacin y escalado de amplitud 2.4.4.1 2.4.4.2 2.4.4.3 2.5 Convolucin 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.6 Correlacin 2.6.1 2.6.2 2.7 Muestreo en el dominio de la frecuencia Transformada de Fourier 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2 3 3 4 6 7 8 10 13 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x

UTN Facultad Regional Crdoba Tcnicas Digitales 3 Trabajo prctico N 2: Introduccin al Procesamiento Digital de Seales Objetivos: El presente trabajo tiene como objetivo que el alumno adquiera prctica en el uso de herramientas matemticas y algoritmos bsicos en lenguaje de programacin para el procesamiento digital de seales. Tambin se pretende que el alumno fije los conocimientos tericos a medida que desarrolla las actividades, para las cuales se necesitan los siguientes conocimientos previos: Funciones elementales en tiempo discreto: impulso unitario, escaln unidad, rampa unidad, exponencial. Teora del muestreo, aliasing. Muestreo multifrecuencia. Manipulaciones simples de seales en tiempo discreto: desplazamiento temporal, reflexin, escalado temporal o submuestreo, escalado de amplitud, suma y producto. Convolucin. Correlacin cruzada y autocorrelacin. Transformada de Fourier, Transformada Discreta de Fourier (DFT) y Transformada Rpida de Fourier (FFT). Programacin bsica en lenguaje SCRIPT de Matlab. Programacin en lenguaje C u otro lenguaje de alto nivel. 2.1 Utilizar Matlab para generar las seales bsicas utilizadas en el Procesamiento Digital de Seales. 2.2 Utilizar Matlab para simular el muestreo de seales y analizar el efecto causado por el sub muestreo denominado ALIASING. 2.4 Comprender los algoritmos de manipulacin o modificaciones simples de las seales en las que intervienen la variable independiente o la amplitud. 2.5 Comprender el algoritmo de convolucin y demostrar su aplicacin en el dominio del tiempo para filtrar seales. 2.6 Comprender el algoritmo de correlacin de seales.

UTN Facultad Regional Crdoba Tcnicas Digitales 3 2.1 Seales bsicas utilizadas en el procesamiento digital de seales Las seales en tiempo discreto se representan matemticamente como una secuencia de nmeros. En la prctica esta secuencia surge del muestreo de una seal analgica. Las seales bsicas utilizadas en el procesamiento digital de seales son: el impulso [n], el escaln unidad u[n], las seales exponenciales del tipo anu[n], las sinusoidales y su generalizacin a exponenciales complejas. 2.1.1 Seal impulso unitario (desplazado) Esta seal se define como la secuencia: [n - no] = 1 para n = no , y [n - no] = 0 para n != no Genere en lenguaje script de Matlab y represente grficamente una seal impulso la cual se usar para excitar un sistema lineal invariante en el tiempo causal de modo que se obtengan L muestras a la salida de dicho sistema. E=[n] no = 0 L = 20 Desarrollo: % generacion de un impulso desplazado % impulso[n-n0] = 1 para n = n0 % impulso[n-n0] = 0 para n != n0 % Cantidad de muestras L=20; % Vector para graficar el impulso n= -L:1:L; % Seal impulso todo en cero impulso=zeros(size(n)); % Cargo el elemento correspondiente a la pos 0 en 1 impulso(n==0)=1; % Le indico que voy a crear un obejto que va ser la figura numero 1 figure(1); % grafico en la figura 1 el impulso stem(n,impulso,'r','fill'); % Seteo los ejes del grafico axis([-L L -0.5 1.5]); title('Seal impulso unidad'); xlabel('n (muestras)'); ylabel('x[n]'); LTI S=?

UTN Facultad Regional Crdoba Tcnicas Digitales 3

Figura 1. Seal impulso para 20 muestras centrada en n=0

2.1.2 Tren de impulsos Un tren de impulsos de periodo P y longitud L=MxP est dado por: donde n= 0, 1, 2,, L-1 Genere y represente grficamente mediante Matlab un tren de impulsos de periodo 5 y longitud 100. Desarrollo: % Tren de impulsos P = 5; L = 100; M = L/P; tren_imp=zeros(1,L); for n=0:L-1 for i=0:M-1 if n==(i*P) tren_imp(n+1)=1; end end end figure(1); n=0:L-1; stem(n,tren_imp,'r','fill'); 4

UTN Facultad Regional Crdoba Tcnicas Digitales 3 title('Seal impulso unidad - Mtodo 1'); xlabel('n (muestras)'); ylabel('x[n]');

% otro metodo tren_imp=[1;0;0;0;0]*ones(1,M); tren_imp=tren_imp(:); tren_imp=tren_imp'; figure(2); stem(n,tren_imp,'b','fill'); title('Seal impulso unidad - Mtodo 2'); xlabel('n (muestras)'); ylabel('x[n]');

Figura 2. Seal impulso por mtodo 1

UTN Facultad Regional Crdoba Tcnicas Digitales 3

Figura 3. Seal impulso por mtodo 2 2.1.3 Escaln unitario El escaln unitario tiene como expresin: u[n]=1 para n>=0, y u[n]=0 para n<0 Genere y represente grficamente la secuencia escaln unitario de longitud L=20. Desarrollo: % escaln unitario % u[n]=1 para n > 0 % u[n]=0 para n< 0 L = 20; n= -L:1:L; escalon_unitario = zeros(size(n)); escalon_unitario(n>=0) = 1; figure(1); stem(n,escalon_unitario,'r','fill'); axis([-L L -0.5 1.5]); title('Seal escaln'); xlabel('n (muestras)'); ylabel('x[n]');

UTN Facultad Regional Crdoba Tcnicas Digitales 3

Figura 4. Seal escaln de longitud L=20.

2.1.4 Seal sinusoidal Una seal sinusoidal de amplitud A, frecuencia o y fase en tiempo continuo est dada por: X(t) = A sen(o t + ) En tiempo discreto t=nTs, donde Ts es el periodo de muestreo, entonces: X[n] = A sen (o nTs + ) = A sen (2 fo/fs n + ); o = 2 fo Donde fo/fs se la denomina frecuencia normalizada y fs es la frecuencia de muestreo. Genere y represente grficamente mediante la funcin stem una seal cosenoidal en tiempo discreto de N muestras, cuyos parmetros son: A = 10, fo = 10 Hz, fs = 1000 Hz, = 0 N = 100. Desarrollo: % % % % % % seal senoidal Seal en tiempo continuo X(t) = A sen(W0*t+phi) Seal discreta t = nTs Ts periodo sampleo X[n] = A sen (W0*nTs+hi) = A sen(2*pi*f0/fs*n +phi) W0 = 2*pi*f0 fn = f0/fs frec normalizada y fs frecuencia de muestreo

UTN Facultad Regional Crdoba Tcnicas Digitales 3 A = 10; f0 = 10; fs = 1000; phi = 0; % Amplitud % frec de la seal en Hz % frec de muestreo en Hz %pi/2; %fase

N=100; %nmero de muestras n=0:N-1; y=A*sin(2*pi*(f0/fs)*n+phi); % seal senoidal figure(1); stem(n,y,'r','fill'); title('Seal senoidal 10Hz'); xlabel('n (muestras)'); ylabel('y[n]');

Figura 5. Seal senoidal de 10Hz

2.1.5 Seales exponenciales Una seal exponencial en tiempo discreto es de la forma: X[n] = an, siendo a un nmero real y n= 0, 1, 2, 3, 4... Si 0 < a < 1 o -1 < a < 0, entonces la exponencial es decreciente Si a > 1 o a < -1, entonces la exponencial es creciente Genere y represente grficamente las seales exponenciales decrecientes y crecientes de longitud L=20. 8

UTN Facultad Regional Crdoba Tcnicas Digitales 3

Desarrollo: % Exponenciales tiempo discreto figure(1); L = 20; % Exponencial Decreciente 1 % 0 < a < 1 a=0.5; exp1 = zeros(1,L); for n=0:L-1 exp1(n+1)=a^n; end n=0:L-1; subplot(2,2,1), stem(n,exp1,'r','fill'), title('Exponencial Decreciente 1'); xlabel('Figura 6.a. 0 < a < 1. a=0.5'); % Exponencial Decreciente 2 % -1 < a < 0 a=-0.5; exp2 = zeros(1,L); for n=0:L-1 exp2(n+1)=a^n; end n=0:L-1; subplot(2,2,2), stem(n,exp2,'b','fill'), title('Exponencial Decreciente 2'); xlabel('Figura 6.b. -1 < a < 0. a=-0.5'); % Exponencial Creciente 1 % a > 1 a=2; exp3 = zeros(1,L); for n=0:L-1 exp3(n+1)=a^n; end n=0:L-1; subplot(2,2,3), stem(n,exp3,'g','fill'), title('Exponencial Creciente 1'); xlabel('Figura 6.c. a > 1. a=2'); % Exponencial Creciente 2 % a < -1 a=-2; exp4 = zeros(1,L); 9

UTN Facultad Regional Crdoba Tcnicas Digitales 3 for n=0:L-1 exp4(n+1)=a^n; end n=0:L-1; subplot(2,2,4), stem(n,exp4,'y','fill'), title('Exponencial Creciente 2'); xlabel('Figura 6.d a < -1. a=-2');

Figura 6. Seales exponenciales para distintos valores.

2.1.6 Seales complejas Si bien en el mundo real las seales tienen valores reales, sin embargo es muy frecuente el uso de seales con partes real e imaginaria, es decir seales complejas, por ejemplo en sistemas de modulacin. Para el caso en que el valor a de la seal exponencial sea un valor complejo, tendremos: a = rej por lo tanto X[n] = rn ejn= rn (cos n + j sen n) Grficamente se podr ahora representar una parte real: XR[n] = rn cos n 10

UTN Facultad Regional Crdoba Tcnicas Digitales 3 y una parte imaginaria: XI[n] = rn sen n Genere una seal exponencial compleja donde r = 0.9 y = /10. Que sucede s r = 1? Desarrollo: % exponenciales complejas figure(1) L=20; r=0.9; Xre = zeros(1,L); Xim = zeros(1,L); for n=0:L-1 Xre(n+1)=(r^n)*cos((pi/10)*n); Xim(n+1)=(r^n)*sin((pi/10)*n); end n=0:L-1; subplot(2,1,1), stem(n,Xre,'fill'), title('Parte Real'); subplot(2,1,2), stem(n,Xim,'r','fill'), title('Parte Imaginaria'); En el caso para r = 0,9, se obtiene una senoidal amortiguada fig. 7.a. En el caso que r = 1, se obtiene una senoidal no amortiguada fig. 7.b. En el caso que r > 1, se obtiene una senoidal creciente fig. 7.c. El script es prcticamente igual para los tres casos, con la salvedad que para el caso b se tomo r = 1 y para el caso c r = 1.2

11

UTN Facultad Regional Crdoba Tcnicas Digitales 3

Figura 7.a. Exponencial complejo. r = 0,9. Senoidal amortiguada

Figura 7.b. Exponencial complejo. r = 1. Senoidal

12

UTN Facultad Regional Crdoba Tcnicas Digitales 3

Figura 7.c Exponencial complejo. r = 2.

13

UTN Facultad Regional Crdoba Tcnicas Digitales 3 2.2 Muestreo de seales en el dominio del tiempo - Aliasing 1. Seal Senoidal fo = 100 Hz ; frecuencia de la sinusoide Ts = 1 mS ; periodo de muestreo A = 1; amplitud La fase puede ser cualquier valor entre 0 y 2Pi. Pruebe con fs prxima a 2fo y con fs >> fo, por ejemplo fs=10Khz. a. Fs = 1/1ms = > fs = 1000 Hz X[n] = sen (2 pi 100/1000 . n+ 0) Tomando n = 20 : Desarrollo: linspace (0,19,20); n = linspace (0,19,20); x = sin (0.2 * pi * n); plot(x), stem(x,'r','fill'), title('Senoidal 1000 Hz');

14

UTN Facultad Regional Crdoba Tcnicas Digitales 3

b. Para fs proxima a 2 fo en este caso 220Hz: X[n] = sen (2 pi 100/220 . n+ 0)

Desarrollo: linspace (0,19,20); n = linspace (0,19,20); x = sin (0.909 * pi * n); plot(x), stem(x,'r','fill'), title('Senoidal 220Hz');

15

UTN Facultad Regional Crdoba Tcnicas Digitales 3 c. Para fs proxima a 2 fo en este caso 10 KHz: X[n] = sen (2 pi 100/10000 . n+ 0)

Desarrollo: linspace (0,99,100); n = linspace (0,99,100); x = sin (0.02 * pi * n); plot(x), stem(x,'r','fill'), title('Senoidal 10 KHz');

16

UTN Facultad Regional Crdoba Tcnicas Digitales 3 2. Vare fo entre 100 Hz y 475 Hz en saltos de 125Hz, para fs = 8 Khz. X1[n]= X2[n]= X3[n]= X4[n]= sen sen sen sen ( ( ( ( 2 2 2 2 pi pi pi pi 100/8000 225/8000 350/8000 475/8000 n) n) n) n)

Desarrollo: n = X1= X2= X3= X4= linspace (0,99,100); sin( 0.025 *pi* n); sin( 0.05625 *pi* n); sin( 0.0875 *pi* n); sin( 0.11875 *pi* n);

subplot(2,2,1); plot(X1, 'r'), title('100 Hz'); subplot(2,2,2); plot(X2, 'r'), title('225 Hz'); subplot(2,2,3); plot(X3, 'r'), title('350 Hz'); subplot(2,2,4); plot(X4, 'r'), title('475 Hz');

17

UTN Facultad Regional Crdoba Tcnicas Digitales 3

3. Vare fo entre 7525 y 7900 en saltos de 125 Hz. x1[n]= x2[n]= x3[n]= x4[n]= sen sen sen sen ( ( ( ( 2 2 2 2 pi pi pi pi 7525/8000 7650/8000 7775/8000 7900/8000 n) n) n) n)

Desarrollo: n = X1= X2= X3= X4= linspace sin( 2 * sin( 2 * sin( 2 * sin( 2 * (0,99,100); pi * 7525 / pi * 7650 / pi * 7775 / pi * 7900 /

8000 8000 8000 8000

* * * *

n); n); n); n);

subplot(2,2,1); plot(X1, 'r'), title('7525 Hz'); subplot(2,2,2); plot(X2, 'r'), title('7650 Hz'); subplot(2,2,3); plot(X3, 'r'), title('7775 Hz'); subplot(2,2,4); plot(X4, 'r'), title('7900 Hz');

18

UTN Facultad Regional Crdoba Tcnicas Digitales 3 4. Nuevamente vare fo entre 32100 Hz y 32475 Hz en saltos de 125 Hz. X1[n]= X2[n]= X3[n]= X4[n]= sen sen sen sen ( ( ( ( 2 2 2 2 pi pi pi pi 32100/8000 32225/8000 32350/8000 32475/8000 n) n) n) n)

Desarrollo: n = X1= X2= X3= X4= linspace sin( 2 * sin( 2 * sin( 2 * sin( 2 * (0,99,100); pi * 32100 / pi * 32225 / pi * 32350 / pi * 32475 /

8000 8000 8000 8000

* * * *

n); n); n); n);

subplot(2,2,1); plot(X1, 'r'), title('32100 Hz'); subplot(2,2,2); plot(X2, 'r'), title('32225 Hz'); subplot(2,2,3); plot(X3, 'r'), title('32350 Hz'); subplot(2,2,4); plot(X4, 'r'), title('32475 Hz');

19

UTN Facultad Regional Crdoba Tcnicas Digitales 3 En el primer muestreo, la frecuencia de la seal muestreada aumenta, esto es debido a que la frecuencia de la seal continua aumenta en la misma proporcin pero contina respetando el teorema del muestreo. En el segundo muestreo, la seal muestreada disminuye su frecuencia pese a que aumenta la frecuencia de la seal continua, debido a que la frecuencia que estamos usando para muestrear la seal es insuficiente segn enuncia el teorema del muestreo, por lo que en este caso se evidencia la presencia de Aliasing. Por ltimo en el tercer caso, se puede ver que las seales obtenidas en este punto son idnticas a las del primer muestreo pese a que la frecuencia de la seal continua es mucho mayor, vemos que al igual que en el punto 2.2.3 no se cumple con el criterio de Nyquist y lo que vemos son frecuencias mucho menores a la original, por lo de ser necesario reconstruir la seal original a partir de esta nos ser imposible.

20

UTN Facultad Regional Crdoba Tcnicas Digitales 3 2.3.- Muestreo multifrecuencia: diezmado e interpolacin. 1. Analice las siguientes funciones de Matlab: decimate, interp y resample. Decimate: Esta funcin reduce la frecuencia de muestreo original para una secuencia a una tasa ms baja. y = decimate(x,r) reduce la frecuencia de muestreo de x en un factor r el vector resultante y es r veces ms corto que el vector original x. Inter: La interpolacin incrementa la frecuencia de muestreo para una secuencia de una tasa mayor, es lo opuesto a la funcin decmate. y = interp(x,r) incrementa la frecuencia de muestreo de x en un factor de r. El vector interpolado es de una longitud de r veces mayor que el vector original x. Resample: Esta funcin cambia a la frecuencia de muestreo por un valor racional y = resample(x,p,q) muestrea nuevamente la secuencia en el vector x a p/q veces la frecuencia de muestreo original. Esta funcin aplica un filtro antialiasing (pasabajos) a x durante el proceso de muestreo.

2. Genere una seal senoidal de frecuencia fo=100Hz, muestreada con una Fs=10KHz. Desarrollo: n = linspace (0,99,100); x = sin( 2 .* pi .* 100/10000 .* n); stem(x,'r','fill') title('Senoidal 100 Hz');

21

UTN Facultad Regional Crdoba Tcnicas Digitales 3 2.1. Decremente el nmero de muestras de la seal senoidal con un factor de 4. Desarrollo: n = linspace (0,99,100); x = sin( 2 .* pi .* 100/10000 .* n); y = decimate ( x, 4); stem(y,'r','fill') title('Senoidal 100 Hz, Muestreo 2.5 KHz');

Como se puede apreciar en el grafico la cantidad de muestras paso de 100 a 25, decrementandose en 4, que es al parmetro ingresado en al comando decimate.

22

UTN Facultad Regional Crdoba Tcnicas Digitales 3 2.2 Incremente el nmero de muestras de la seal senoidal con un factor de 2. Desarrollo: n = linspace (0,99,100); x = sin( 2 .* pi .* 100/10000 .* n); z = interp( x, 2); stem(z,'r','fill') title('Senoidal 100 Hz, Muestreo 200 KHz');

La cantidad de muestras que posee esta grafica es de 200, es decir que la cantidad de las mismas se incremento en un factor de 2, que es el mismo que hemos indicado en el comando interp, por lo que el vector resultante es del doble que el original.

23

UTN Facultad Regional Crdoba Tcnicas Digitales 3 2.3 Modifique la frecuencia de muestreo en un factor de 2/3. Desarrollo: n = linspace (0,99,100); x = sin( 2 .* pi .* 100/10000 .* n); z = resample( x, 2,3); stem(z,'r','fill') title('Senoidal 100 Hz, Muestreo 75 KHz');

Ahora la cantidad de muestras es 75; que corresponde a los parmetros que le introducimos a la funcin resample.

24

UTN Facultad Regional Crdoba Tcnicas Digitales 3 2.4.- Manipulaciones simples de seales en tiempo discreto 1. Desplazamiento en el tiempo. 1.1 Dado un sistema al cual se le aplica una seal x(n) y cuya salida es y(n) = x(n-2), dicho sistema, adelanta o retarda? Desarrollo: Se puede ver que este sistema atrasa, ya que por definicin se desplaza en el tiempo reemplazando la variable independiente n por n-k. De la funcin y(n) = x(n-2) se obtiene que k = 2 Si k es un entero positivo el desplazamiento provoca un retraso de la seal en k unidades de tiempo.

1.2 Dadas las siguientes muestras de una seal: x[n] = [0 3 2 1 0 1 2 3 0 ] ; la flecha indica el origen de tiempo, es decir, n = 0 Grafique en una misma figura x(n) e y(n) = x(n-k) siendo k=2.

Desarrollo: x= [0 3 2 1 0 1 2 3 0]; n= -4:1:4; subplot(2,1,1); stem(n, x, 'fill'); axis([-6 6 0 3]); title('Seal origina X[n]'); K=2; n=n-K; subplot(2,1,2); stem(n, x, 'r', 'fill'); axis([-6 6 0 3]); title('Seal Retardada X[n-K]');

25

UTN Facultad Regional Crdoba Tcnicas Digitales 3

2. Reflexin. 2.1 Dada la siguiente seal: x[n] = [-5 4 3 2 1 0 1 2 3 4 5] Obtenga la reflexin y(- n) de x(n). Grafique ambas seales en una misma figura.

Desarrollo: x = [-5 -4 -3 -2 -1 0 1 2 3 4 5]; y = -x; subplot(2,1,1); stem(x, 'fill'); title('Seal Original'); subplot(2,1,2); stem(y, 'r', 'fill'); title('Seal Reflejada');

26

UTN Facultad Regional Crdoba Tcnicas Digitales 3

27

También podría gustarte