Convolucion Tiempo Discreto

5

Click here to load reader

Transcript of Convolucion Tiempo Discreto

Page 1: Convolucion Tiempo Discreto

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA - ELECTRONICA I - LABORATORIO 2. 1

Laboratorio de Sistemas y Señales: Convolucióntiempo discreto y trasformada de Fourier

(Abril 2008)Luis Felipe De La Hoz Cubas, María Ilse Dovale Pérez y Michael Forero Naizir

Abstract�En el presente trabajo se busca aterrizar los concep-tos vistos en clase de las temáticas de Convolución en el tiempodiscreto y la Transformada de Fourier; además de esto se tienecomo objetivo corroborar de una manera grá�ca, por mediodel software MatLab R las diferentes propiedades básicas de lostemas mencionados anteriormente.

I. INTRODUCCION

ALo largo de esta actividad es importante que se tenganclaros los conceptos del tema de la Convolución en

el tiempo discreto y la Transformada de Fourier para podermodelar un programa en el Software MatLab haciendo uso decomandos que son importantes a la hora de gra�car las señalesque se pretendan hacer, también fue necesario profundizar einvestigar otros comandos que sirvieron a la hora de hacer elalgoritmo, para esto se utilizó el menú ayuda, el cual es unade las herramientas más completas y poderosas del programausado para llevar a cabo el objetivo principal mencionadoanteriormente.

II. PROPIEDADES DE FOURIER EN TIEMPOCONTINUO

En este algoritmo se muestra que se cumplen las siguientespropiedades de Fourier en MatLab, estas propiedades se pro-baron en ambos dominios: el del tiempo y la frecuencia, esdecir; al multiplicar una señal en el dominio del tiempo poruna exponencial es igual que correrlo en frecuencia, ademáshaciendo la trasformada inversa de Fourier al corrimientoen frecuencia el resultado es la señal multiplicada, por unexponencial en el tiempo, veamos:

Comienzo del algoritmo:

m=menu('PROPIEDADES A MOSTRAR: ','x(t)�e^(-at)=> X(w+a)','x(t - a) => X(w) � e^(-aw)','x(at) => (1/jaj)� X(w / a)','Salir')%La funcion MENU desplega un set de botones que

de�niran el curso del%programa

A continuación se despliega lo que hará el programa si seselecciona la opción 1 del menú "m", es decir: "x(t)�e^(-at)=> X(w+a)", la propiedad de corrimiento en el tiempo.

if m==1;%A continuacion se toma una señal y se muestra que

al multiplicarla por%una exponencial negativa su transformada se muestra

corridat = -5:0.00001:5;x = rectpuls(t);�gure(1)subplot(2,1,1);plot(t,x);title('Pulso Rectangular');xlabel('Tiempo');ylabel('Amplitud');grid on;frec1 = 100*(0:length(x)-1)/length(x);frec1 = frec1';fftx = abs(fft(x));subplot(2,1,2);plot(frec1(1:end),fftx(1:end));title('Señal en frecuencia');ylabel('Amplitud');xlabel('Frecuencia');grid on;tc = input ('Digite el T de corrimiento?nn');a = complex(0,2);x1 = exp(a*pi*tc*frec1');fftx2 = x1.*fftx;x2 = ifft(fftx2);fftx2 = fftx2;�gure(2)subplot(2,1,1);plot(t,x2);title('Pulso Recto corrido en el tiempo');xlabel('Tiempo');ylabel('Amplitud');grid on;subplot(2,1,2), plot(frec1(1:end/2),fftx2(1:end/2), 'o');title('Gra�ca de Frecuencia');ylabel('Amplitud');grid on;end

Las grá�cas resultantes son las siguientes, tomando el T decorrimiento como 10:

Page 2: Convolucion Tiempo Discreto

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA - ELECTRONICA I - LABORATORIO 2. 2

Fig1: Señal de Pulso recto.

Fig2: Señal de pulso recto aplicando la primera propiedad dela transormada de Fourier.

A continuación se despliega lo que hará el programa sise selecciona la opción 2 del menú "m", es decir: "x(t - a)=> X(w) � e^(-aw)", es decir la propiedad de corrimiento enfrecuencia.

if m==2;%Para mostrar la propiedad x(t - a) => X(w) � e^(-aw)

de la transformada de%Fourier se tomará un función, se le calculara la

transformada y se%veri�cara que la antitransformada resultante es la

antitransformada de la%funcion incial pero corrida. Para esto se debe com-

parar las dos gra�cas%resultates.t = 0:0.01:100;x = sin(0.5*pi*(t));�gure (1)subplot(2,1,1);plot(t(1:500),x(1:500));title('Señal Seno'), xlabel('Tiempo'),ylabel('Amplitud');grid on;

frec1 = 100*(0:length(x)-1)/(length(x));frec1 = frec1';fx = abs(fft(x));subplot(2,1,2);plot(frec1(1:end/2),fx(1:end/2));title('Espectro en Magnitud');ylabel('Amplitud');xlabel('Frecuencia');grid on;tc = input ('Digite el factor de frecuencia deseado?nn');x1 = sin(2*pi*tc*t);x2 = x.*x1;�gure (2);subplot(2,1,1), plot(t(1:100),x2(1:100));title('Señal Seno multiplicada por Exponencial Compleja');xlabel('Tiempo');ylabel('Amplitud');grid on;a = complex(0,2);x1 = exp(a*pi*tc*t);x2 = x.*x1;fftx2 = abs(fft(x2));subplot(2,1,2), plot(frec1(1:end/2),fftx2(1:end/2));title('Espectro de magnitud');ylabel('Amplitud');xlabel('Frecuencia');grid on;pause;end

Las grá�cas resultantes son las siguientes, tomando unfactor de frecuencia de 10:

Fig3: Señal del Seno con su espectro en magnitud.

Page 3: Convolucion Tiempo Discreto

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA - ELECTRONICA I - LABORATORIO 2. 3

Fig4: Señal del Seno multiplicada por una exponencialcompleja.

A continuación se despliega lo que hará el programa si seselecciona la opción 2 del menú "m", es decir: "x(at) => (1/jaj)� X(w / a)", es decir la propiedad de escalamiento.

if m==3;%Por ultimo se muetra el efecto que tiene en la

transformada el%escalamiento de una funciont = 0:0.01:5;x = cos(3*pi*t);�gure (1)subplot(2,1,1), plot(t,x);title('Señal Coseno');xlabel('Tiempo');ylabel('Amplitud');grid on;frec1 = 100*(0:length(x)-1)/length(x);frec1 = frec1';fftx = abs(fft(x));subplot(2,1,2), plot(frec1(1:end/2),fftx(1:end/2));axis([0 20 0 max(fftx)]);title('Señal en frecuencia');ylabel('Amplitud');grid on;s = input ('Digite cuanto quiere escalar la señal?nn');x2 = cos(s*3*pi*t);�gure (2)subplot(2,1,1), plot(t,x2);title('Señal Coseno escalada en el tiempo');xlabel('Tiempo');ylabel('Amplitud');grid on;fftx2 = abs(fft(x2));subplot(2,1,2), plot(frec1(1:end/2),fftx2(1:end/2));axis([0 20 0 max(fftx2)]);title('Señal en frecuencia');ylabel('Amplitud');grid on;pause;end

Las grá�cas resultantes son las siguientes, tomando unfactor de escalamiento de 10:

Fig5:Señal Coseno

Fig6: Señal coseno escalada en un factor de 10.

Como se puede comprobar aqui vemos las propiedades dela Transformada de Fourier comprobadas con el programaMatLab.

III. CONVOLUCION

Se pretende comprobar que un sistema LTI en tiempo dis-creto tiene la respuesta al impulso: h[n] = 0:5fu[n]�u[n�5]gsabiendo que la entrada x[n] tiene las siguientes dos formas:a). x[n] = 2 � u[n+ 3]� 4 � u[n� 4] + 2 � u[n� 11]b) x[n] = u[n]� u[n� 3]Observemos como fue el desarrollo del programa planteado:

Page 4: Convolucion Tiempo Discreto

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA - ELECTRONICA I - LABORATORIO 2. 4

% Al presionar pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)h=[.5 .5 .5 .5 .5];%En estas dos primeras lineas se de�ne

la respuesta al impulsor1=0:1:4; %Eje horizontal de la respuesta al impulsox=[2 2 2 2 2 2 2 -2 -2 -2 -2 -2 -2 -2];%Entrada al sistema

del inciso aux=-3:1:10; %Dominio de la entradaaxes(handles.axes1); %selecciono el axis 1xlabel('n');ylabel('h[n]');title('Respuesta al Impulso');stem(r1,h,'o','linewidth',2);grid on; %Gra�coaxes(handles.axes2); %selecciono el axis 2xlabel('n');ylabel('x[n]');title('Señal de Entrada inciso a');stem(ux,x,'d','linewidth',2);grid on %Gra�coy=conv(h,x); %Convolucionux1=-3:1:14; %Dominio de la convoluciónaxes(handles.axes3); %selecciono el axis 3xlabel('n');ylabel('y[n]');title('Respuesta');stem(ux1,y,'o','linewidth',2 );grid on; %Gra�co

% Al presionar pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)h=[.5 .5 .5 .5 .5]; %Respuesta al impulsor1=0:1:4;x=[1 1 1]; %Entrada al sistema del inciso bux=0:1:2;axes(handles.axes1); %selecciono el axis 1xlabel('n');ylabel('h[n]');title('Respuesta al Impulso');stem(r1,h,'o','linewidth',2);grid on;axes(handles.axes2); %selecciono el axis 2xlabel('n');ylabel('x[n]');title('Señal de Entrada inciso b');stem(ux,x,'o','linewidth',2);grid on

y=conv(h,x);ux1=0:1:6;axes(handles.axes3); %selecciono el axis 3ylabel('y[n]');title('Respuesta del Sistema');stem(ux1,y,'o','linewidth',2);grid on;

% Al presionar pushbutton3. Este realiza la convolucionentre las funciones% de�nidas por el usuariofunction pushbutton3_Callback(hObject, eventdata, handles)handles.Y=conv(handles.NH,handles.NX);handles.n3=-20:20;axes(handles.axes3);ylabel('y[n]');title('Respuesta del Sistema');stem(handles.n3,handles.Y,'bd');grid on;

% Al presionar el pushbutton4. Para de�nir la respuestaal impulsofunction pushbutton4_Callback(hObject, eventdata, handles)handles.cont=0;handles.cont1=0;if length(handles.H)==length(handles.nH)for i=1:length(handles.nH);if ((handles.nH(i)>=-10)&&(handles.nH(i)<=10))elseset(handles.text15,'String','Por favor introducir un dominio

de menos de 10 elementos');handles.cont=handles.cont+1;endif (mod(handles.nH,1)==0)elsehandles.cont2=handles.cont2+1;endendif handles.cont==0&&handles.cont1==0handles.w=-10;handles.q=1;for t=1:21if handles.q<=length(handles.nH)if handles.w==handles.nH(handles.q)handles.NH(t)=handles.H(handles.q);handles.w=handles.w+1;handles.q=handles.q+1;elsehandles.NH(t)=0;handles.w=handles.w+1;endelsehandles.NH(t)=0;handles.w=handles.w+1;endendendelseset(handles.text15,'String','los tañamos de las muestras y

sus amplitudes deben ser iguales');

Page 5: Convolucion Tiempo Discreto

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA - ELECTRONICA I - LABORATORIO 2. 5

endif handles.cont==0&&handles.cont1==0handles.n1=-10:10;axes(handles.axes1); %selecciono el axis 1xlabel('n');ylabel('h[n]');title('Respuesta al impulso de�nida por usuario');stem(handles.n1,handles.NH,'rp');grid on;handles.con1=1;guidata(hObject, handles);end

%Al presionar el pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)handles.cont=0;handles.cont1=0;if length(handles.H)==length(handles.nH)for i=1:length(handles.nH);if ((handles.nH(i)>=-10)&&(handles.nH(i)<=10))elseset(handles.edit3,'String','Introducir un dominio de menos

de 10 elementos');handles.cont=handles.cont+1;endif (mod(handles.nH,1)==0)elsehandles.cont2=handles.cont2+1;endendif handles.cont==0&&handles.cont1==0handles.w=-10;handles.q=1;for t=1:21if handles.q<=length(handles.nX)if handles.w==handles.nX(handles.q)handles.NX(t)=handles.X(handles.q);handles.w=handles.w+1;handles.q=handles.q+1;elsehandles.NX(t)=0;handles.w=handles.w+1;endelsehandles.NX(t)=0;handles.w=handles.w+1;endendendelseset(handles.text15,'String','los tañamos deben de ser

iguales');endif handles.cont==0&&handles.cont1==0handles.n1=-10:10;axes(handles.axes2)xlabel('n');ylabel('x[n]');title('Señal de Entrada');stem(handles.n1,handles.NX,'o');grid onhandles.con2=1;

guidata(hObject, handles);endif handles.con2==1&&handles.con1==1set(handles.pushbutton3,'Enable','on')endguidata(hObject, handles);function edit1_Callback(hObject, eventdata, handles)handles.nH=str2num(get(handles.edit1,'String'));handles.ab1=1;guidata(hObject, handles);

Con este algoritmo se presenta un programa que le permiteal usuario especi�car la respuesta al impulso de un sistemaLTI.e ingresar una señal discreta de entrada a dicho sistema.Tanto la señal ingresada y la respuesta al impulso del

sistema LTI tienen un número �nito de muestra, con la posibil-idad de que el programa pueda gra�car la señal ingresada, larespuesta al impulso del sistema y la señal de salida resultante.El programa esta presentado en ambiente grá�co, y para esto

se empleo el ambiente grá�co con el comando GUIDE (Graph-ical User Interface Development Enviroment) que ofrece MAT-LAB, el cual permite crear de modo interactivo la interface deusuario, asi como en Visual Basic, sólo que con posibilidadesmás limitadas.

IV. CONCLUSIONFinalmente se pudo comprobar de forma grati�cante que

los conceptos vistos en clase tienen una aplicación real enla vida cotidiana, el Software MatLab fue la ayuda masindispensable en la tarea de comprobar tanto las propiedadesde Fourier, como la Convolución en el tiempo discreto, en estecaso se utilizaron nuevos comandos explicados en el cuerpodel trabajo, otra ayuda muy importante fue la "AYUDA" delprograma Mat Lab donde se muestran ejemplos que ayudaronde sobremanera a la creación de los laboratorios.Como ya sabemos MatLab es un programa matemático

para realizar cálculos numéricos con vectores y matrices, sinembargo también podemos trabajar con números escalares,tanto reales como complejos, es por esto que fue posible larealizacion de las comprobaciones de 3 de las propiedades dela Transformada de Fourier. MatLab también posee una grancapacidad, que es la realizacion de gra�cos y la facilidad quele brinda al usuario de poder trabajar con un ambiente grá�colo cual permite un más fácil manejo del programa y aprovecharal máximo sus capacidades.

V. BIBLIOGRAFIA[1]. OPPENHEIM & WILSKY, Señales y Sistemas, II

Edición.[2]. GARCIA, De Jalon, Javier & RODRIGUEZ, Jose

Ignacio; "Aprenda MatLab como si estuviera en primero".[3]. FORMATO IEEE, LaTex. (Scienti�c Work Place)