Vous êtes sur la page 1sur 13

[Laboratorio de PDS]

LABORATORIO N5
(Tarea)
1. Escriba el cdigo de una funcin que, utilizando la funcin fft(), calcule
la Transformada de Fourier de una seal discreta de la siguiente forma:

function [H,W] = dtft(h,no,N)


% h: vector de entrada
% no: instante de tiempo en el cual comienza h
% N: nmero de puntos a calcular de la transformada de h
% H: vector de la transformada de Fourier de H
% w: frecuencias en las que se evalua la transformada
N=fix(N); %aproxima a entero redondeando al entero inferior
L=length(h);
if(L>N)
error(' DTFT: numero de muestras, L, debe ser inferior al numero de
frec a calcular N')
end
% wk=2*pi*k/N con k=0,1,2, ... ,N-1
W=2*pi/N*(0:N-1);
w=W;
medio=ceil(N/2)+1; %aproxima a entero redondeando al entero inferior
% evaluamos la DTFT de -pi a pi
W(medio:N)=W(medio:N)-2*pi;
W=fftshift(W);
a=fft(h,N);
e=exp(-1i*no*w);
h1=zeros(1,N)
for k=1:N
h1(k)=a(k)*e(k);
end
H=fftshift(h1);
end

Para realizar la funcin hay que tener en cuenta la propiedad de desplazamiento


de la Transformada de Fourier, cuyo significado implica que un desplazamiento
en el tiempo equivale a un desplazamiento en frecuencia:
Tener en cuenta que la funcin fft()considera el instante de inicio de la seal en
n0=0. Recuerde adems que los valores de las frecuencias en los cuales la
funcin fft() calcula la Transformada vienen dadas por:

En donde N es el nmero de valores que se calcula con la Transformada de


Fourier, en la que se puede ver que, estn equiespaciados entre 0 y 2. Efectuar
el producto punto a punto entre dos vectores de tal modo que los dos sean filas

[Laboratorio de PDS]
o columnas. De lo contrario se obtendra un error de no correspondencia entre
matrices.
A fin de probar la funcin, calcular la Transformada de Fourier de una secuencia
de pulso rectangular de longitud 9 y centrado en 0, comprobando que la parte
imaginaria de su transformada es 0. Representar la parte real de dicha
transformada. Razonar acerca de la forma de la Transformada de Fourier del
pulso entre L/2 y L/2 a medida que L tiende a 1.
Solucin
La funcin fue probada con un pulso rectangular de longitud 9 y centrada en 0,
lo cual la programacin para esto fue el siguiente.
clear all;
close all;
clc;
h=[1 1 1 1 1 1 1 1 1];
subplot(2,3,1)
[H,w]=dtft(h,-3,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),
subplot(2,3,2)
[H,w]=dtft(h,-2,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),
subplot(2,3,3)
[H,w]=dtft(h,-1,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),
subplot(2,3,4)
[H,w]=dtft(h,0,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),
subplot(2,3,5)
[H,w]=dtft(h,1,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),
subplot(2,3,6)
[H,w]=dtft(h,2,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),

title('DTFT de h con no=-3')

title('DTFT de h con no=-2')

title('DTFT de h con no=-1')

title('DTFT de h con no=0')

title('DTFT de h con no=1')

title('DTFT de h con no=2')

Se puede observar que si no tiene a la izquierda aparecern menos lbulos, sea que
la parte imaginaria est tendiendo a cero.
Ahora ejecutamos la funcin para un pulso rectangular de menor longitud (L=4) y
centrada en 0.

[Laboratorio de PDS]

clear all;
close all;
clc;
h=[1 1 1 1];
subplot(2,3,1)
[H,w]=dtft(h,-3,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),
subplot(2,3,2)
[H,w]=dtft(h,-2,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),
subplot(2,3,3)
[H,w]=dtft(h,-1,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),
subplot(2,3,4)
[H,w]=dtft(h,0,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),
subplot(2,3,5)
[H,w]=dtft(h,1,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),
subplot(2,3,6)
[H,w]=dtft(h,2,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'),

title('DTFT de h con no=-3')

title('DTFT de h con no=-2')

title('DTFT de h con no=-1')

title('DTFT de h con no=0')

title('DTFT de h con no=1')

title('DTFT de h con no=2')

[Laboratorio de PDS]

Se puede observar que para una longitud ms pequea ocurre lo mismo que en
la observacin anterior, sea que la parte imaginaria se hace ms pequea,
pero comparando un punto en especfico de no se puede ver que esta
reduccin de esta parte imaginaria ser mucho ms reducida.
Ahora ejecutamos la funcin para un pulso rectangular con una longitud que
tiende a uno y centrada en 0.
clear all;
close all;
clc;
h=[1];
subplot(2,3,1)
[H,w]=dtft(h,-3,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'), title('DTFT de h con no=-3')
subplot(2,3,2)
[H,w]=dtft(h,-2,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'), title('DTFT de h con no=-2')
subplot(2,3,3)
[H,w]=dtft(h,-1,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'), title('DTFT de h con no=-1')

[Laboratorio de PDS]
subplot(2,3,4)
[H,w]=dtft(h,0,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'), title('DTFT de h con no=0')
subplot(2,3,5)
[H,w]=dtft(h,1,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'), title('DTFT de h con no=1')
subplot(2,3,6)
[H,w]=dtft(h,2,128);
plot(w,H),grid
xlabel('W rad'); ylabel('H'), title('DTFT de h con no=2')

Se puede concluir que mientras disminuamos la longitud L haban menos ondas


en su grafica de DTFT, hasta tal punto de obtener una funcin constante.

2. Sea el sistema SDLIT descrito mediante la ecuacin en diferencias


siguiente:
5

[Laboratorio de PDS]

y[n] = 1/2y[n-1] + x[n] + x[n-1]


Utilizar la funcin freqz() para obtener una representacin en frecuencia de la
respuesta impulsional del sistema, en 512 valores entre 0 y 2:
>> b = [... ];
>> a = [... ];
>> [H,w] = freqz(b,a,512,"whole");

a) Tener en cuenta que b representa a los coeficientes asociadas a la


variable y[n] y sus retardos, mientras que a representa a los coeficientes
asociado a x[n] y sus retardos.
b) Evaluar a partir de sus resultados a que frecuencia digital en radianes
se hace 0 la respuesta en frecuencia del sistema.
c) Teniendo en cuenta esta frecuencia, aplicar como seal de entrada
discreta x[n] las muestras de la seal de voz que usted registr en la
tarea del Laboratorio No.2 al sistema discreto propuesto. Graficar la
respuesta en frecuencia de amplitud y fase tanto de la entrada as como
de la salida del sistema discreto. Analizar las grficas de amplitud y fase
obtenidas y comente sus hallazgos.
Solucin (a)
clear all;
close all;
clc;
b=[1 1];
a=[1 -0.5];
[H,w]=freqz(b,a,512,'whole');
plot(2*pi*(0:511)/512,abs(H),'r');grid
title('Respuesta en Frecuencia del sistema discreto')
xlabel('omega');
ylabel('|H(w)|');

[Laboratorio de PDS]

Solucin (b)
y[n] = 1/2y[n-1] + x[n] + x[n-1]
Hallando la Transformada de Fourier de la Respuesta al Impulso:

Y 0.5 e j Y ( e j )+ X ( e j ) + e j X ( e j )
Y ( e j )0.5 e j Y ( e j ) =X ( e j ) + e j X ( e j )

j
Y ( e j )
1+ e
=
j
X ( e j ) 10.5 e

1+e j
j
(
)
H e =
j
10.5 e

Igualando a cero para obtener la frecuencia digital en radianes:

1+e j
j
j
H ( e )=
=0 e =1
j
10.5 e
= ( 2 k +1 ) para k=0,1,2,
7

[Laboratorio de PDS]

Para

k =0 , se obtiene la siguiente frecuencia analgica

= .

Solucin (c)
Para la seal de entrada (Usamos el audio grabado tipo WAV)
[x fs] = wavread('Vocal A.wav');
sound(x,fs);
subplot(131)
plot(x),grid
Fs=fs/2
L=length(x)/2;
NFFT=2^nextpow2(L);
X=fft(x,NFFT)/L;
f2=Fs/2*linspace(0,1,NFFT/2+1);
title('Entrada')
subplot(132)
plot(f2,2*abs(X(1:NFFT/2+1))),grid
title('Espectro de la Entrada')
subplot(133)
plot(f2,2*angle(X(1:NFFT/2+1))),grid
title('Respuesta en Fase de la Entrada')

[Laboratorio de PDS]

Para la seal de Salida


clear all;
close all;
clc
A=[1 -0.5];
B=[1 1];
[x,fs]=audioread('Vocal E.wav');
y=filter(B,A,x);
player=audioplayer(y,fs); play(player)
subplot(131)
plot(y),grid
Fs=fs/2
L=length(y)/2;
NFFT=2^nextpow2(L);
Y=fft(y,NFFT)/L;
f1=Fs/2*linspace(0,1,NFFT/2+1);
title('Salida')
subplot(132)
plot(f1,2*abs(Y(1:NFFT/2+1)),'r'),grid
title('Espectro de la Salida')
subplot(133)
plot(f1,2*angle(Y(1:NFFT/2+1))),gridtitle('Respuesta en Fase de la
Salida')

[Laboratorio de PDS]

En la salida se puede or que el sonido es un poco ms grave en comparacin con la


entrada y tambin se puede or algo de ruido, tambin en la imagen se ve que la
amplitud mxima del espectro de la salida es mayor con la del espectro de la
entrada y producto de ello se ve una variacin en la fase.

10

[Laboratorio de PDS]
3. Considere una seal analgica xa(t)=cos(20t+ /4), 0 t 1. Esta es
muestreada con un periodo de muestreo de Tm= 0.05 seg para obtener
x[n].
a) Graficar xa(t) y superponerla sobre x[n] utilizando la funcin plot(n,x,o).
b) Reconstruir la seal analgica ya(t) a partir de las muestras de x[n] utilizando
interpolacin sinc (utilice t=0.001) y superpngalo sobre x[n].
c) Reconstruir la seal analgica ya(t) a partir de las muestras de x[n] utilizando
interpolacin cubic spline y superpngalo sobre x[n].
d) Debe usted observar que la reconstruccin resultante en cada caso tiene la
correcta frecuencia pero diferente amplitud. Explique esta observacin.
Comente el role de la fase de xa(t) sobre las seales de muestreo y
reconstruccin.

Solucin (a)
clear all;
close all;
clc;
t=0:0.001:1; % Vector tiempo
x1=cos((20*pi*t)+pi/4); % Vector seal
subplot(121)
plot(t,x1,'r') %Grafica de la seal x(t)
Ts=0.05;
fs=1/Ts; % Ts: Periodo de muestreo en segundos
N=fs*0.016; % N: Nmero de muestras en 16ms.
n=0:20; % Vector Tiempo Discreto
x=cos((20*pi*Ts*n)+pi/4);
subplot(122)
stem(n,x,'b') % Grfica de la secuencia x[n]

11

[Laboratorio de PDS]

Solucin (b)
clear all;
close all;
clc;
t=-pi:1/10:pi;
x=cos(20*pi*t+pi/4);
h=0.001*sin(10*t)/(10*pi*t);
x(t>=-2*pi & t<=2*pi)=2*pi;
h(t>=-2*pi & t<=2*pi)=2*pi;
y=conv(x,h);
figure(1)
plot(y,'b');grid
ylabel('y(t)');
xlabel('t');
title('y(t)=x(t)*h(t)');

12

[Laboratorio de PDS]

13

Vous aimerez peut-être aussi