Está en la página 1de 17

.

Laboratorio #3.

Convolucin, Espectro de Seales y Respuesta de Sistemas LTI

Objetivos: El desarrollo de esta experiencia de laboratorio permite al estudiante: Ilustrar y aplicar los conceptos tericos desarrollados en clase relativos al anlisis de seales y sistemas lineales. Aplicar una herramienta de simulacin para confirmar algunos conceptos importantes sobre el anlisis de seales y sistemas en el dominio del tiempo y de la frecuencia Implementar funciones en MATLAB Analizar el efecto de los filtros en el ancho de banda de las seales. Introduccin

Convolucin Lineal
1.

Utilizando la funcin conv de Matlab, genere una funcin conv_n que permita realizar la convolucin de dos secuencias finitas con distintas longitudes y soportes arbitrarios. Muestre un ejemplo en el que se muestre la convolucin de un pulso rectangular positivo centrado en t = 0 y un pulso rectangular negativo centrado en t = 5. Ambos pulsos con amplitud de 2 y ancho 4. Solucin: Primero creamos un archivo .m, con el nombre de la funcin conv_n. Aqu especificamos lo que se nos pide.

function [nf,xf] = conv_n(x1,n1,x2,n2) ni1 = n1(1); ni2 = n2(1); nf1= n1(length(n1)); nf2 = n2(length(n2)); nf = [ni1 + ni2:nf1+nf2]; xf= conv(x1,x2); stem(nf,xf) end

% GRAFICA DE EJEMPLO %n1 Se refiere al ancho de la funcion con ancho de 4 y centro en 0 n1=[-2 -1 0 1 2]; length(n1); %n2 se refiere al ancho de la funcion de ancho 4 con centro en 5 n2=[3 4 5 6 7]; length(n2); %Aqui definimos la primera funcion rect con ancho n1 x1 = 2*(n1>=-2&n1<=2); %Aqui definimos la segunda funcion rect con ancho n2 x2 = -2*(n2>=3&n2<=7); %Llamamos la funcion de convolucion creada y la grafica se apreciara %inmediatamente. conv_n(x1,n1,x2,n2) title('Grafica de la convolucin de las dos funciones RECT')

2. Utilizando las siguientes tres secuencias y la funcin diseada en (1), verifique las propiedades indicadas. Debe incluir las grficas de cada funcin y los resultados de las operaciones propias de las propiedades. x1(n) = u(n+10) - u(n-20) x2(n) = cos(0.1pin)[u(n) - u(n-30)] x3(n) = (1.2)n[u(n+5) - u(n-10)]
%Problema 2 %n1 Se refiere al ancho de la funcin de muestreo n1=-30:30; length(n1); %Aqui definimos las funciones x1 = 1.*(n1>=-10&n1<=20); x2 = (cos(0.1*pi*n1)).*(n1>=0 & n1<=30); x3= ((1.2).^(n1)).*(n1>=-5 & n1<=10); %Llamamos la funcion de convolucion creada y la grafica se apreciara %inmediatamente. conv_n(x1,n1,x2,n1) title('Grafica de la convolucin de x1 y x2') figure conv_n(x1,n1,x3,n1) title('Grafica de la convolucin de x1 y x3 ') figure conv_n(x2,n1,x3,n1) title('Grafica de la convolucin de x2 y x3 ')

Grafica de la convolucin de x1 y x2 4 3 2 1 0 -1 -2 -3 -4 -60

-40

-20

20

40

60

Grafica de la convolucin de x2y x3 20 15 10 5 0 -5 -10 -15 -20 -60

-40

-20

20

40

60

Grafica de la convolucin de x1y x3 40 35 30 25 20 15 10 5 0 -60

-40

-20

20

40

60

Espectro de Seales
3. Considere la seal peridica rectangular x(t), con periodo T0, definida por

Sea A=1, T0 = 10 y t0 = 1, determine y grafique el espectro discreto de la seal.


% Seal peridica rectangular de la cual determinaremos su espectro n=-11:11; xt=( 1*(n>=-1 & n<=1) + 1*(n>=-11 & n<=-9) + 1*(n>=9 & n<=11)); % Clculo del espectro: df=.5; N=1024; Fs=N*df; f=(0:N-1)*df; dt=1/Fs; t=(0:N-1)*dt; T=(N-1)*dt; NFFT=2^(ceil(log2(N))); X=fft(xt,NFFT)/N; FF1=(Fs/2)*linspace(0,1,NFFT/2); FF2=(Fs/2)*linspace(-1,1,NFFT); figure(1) subplot(211) plot(FF1, abs(X(1:NFFT/2)));grid;

xlabel('f[Hz]');axis([0 300 min(abs(X)) max(abs(X))]); title('Espectro discreto de la seal x(t)'); subplot(212) plot(FF2,fftshift(abs(X)));grid;xlabel('f[Hz]'); axis([-300 300 min(abs(X)) max(abs(X))]);

x 10 8 6 4 2 0 x 10 8 6 4 2 -300

-3

Espectro discreto de la seal x(t)

50
-3

100

150 f[Hz]

200

250

300

-200

-100

4. Una seal peridica x(t) con peridica x(t) con periodo T0 = 6 est definida por x(t) = rect(t/3) para |t| =< 3. Esta seal pasa a travs de un sistema LTI con una respuesta al impulso dada por:

0 f[Hz]

100

200

300

Determine numricamente y grafique el espectro discreto de la seal de salida.

5. Grafique la seal x(t) y sus espectros de magnitud y fase. La seal esta dada por:

t=linspace(0,500,10000) xt=(t+1).*(t>=0&t<=1)+2.*(t>=1&t<=2)+(-t+4).*(t>=2&t<=4) xft=abs(fft(xt)); xat=(angle(fft(xt)))*(180/pi); plot(xft) % xlim([-1 50]) %arreglamos la escala para ver el periodo de manera corredta % ylim([-0.5 2]) xlabel('f (hz)') ylabel('X1(f)') title('Grafica X1(f)') figure plot(xat) % xlim([-1 50]) %arreglamos la escala para ver el periodo de manera corredta % ylim([-0.5 2]) xlabel('f(Hz)') ylabel('Fase (grados)') title('Grafica fase de X1(f)')

Grafica X1(f) 120

100

80

X1(f)

60

40

20

1000

2000

3000

4000

5000 f (hz)

6000

7000

8000

9000 10000

Grafica fase de X1(f) 200 150 100 50 0 -50 -100 -150 -200

Fase (grados)

1000

2000

3000

4000

5000 f(Hz)

6000

7000

8000

9000 10000

6. Determine y grafique el espectro de magnitud de una seal par x(t) dada por la siguiente funcin para los valores positivos de t.

Determine sus resultados tanto de forma analtica como numrica y comprelos

%% Espectro de Amplitud %Definimos el intervalo para la variable tiempo t=(-500:0.001:500); %Luego como es una funcin compuesta, la ejecutamos de la siguiente manera: if (0<=t<=4) x=(((t+1).*((0<=t).*(t<1)))+((2).*((1<=t).*(t<2)))+((-t+4).*((2<=t).*(t<=4)))); else x=0; end %De esta manera cuando cumpla los intervalos se cumplir las ecuaciones %indicadas, y si esta fuera de alguno de estos intervalos, la funcin ser %nula. %Ahora graficamos nuestra funcin plot(t,x) axis([-5,5,-1,3]); grid %Ahora aplicamos la transformada de Fourier X=fft(x); %Con este comando calibramos la transformada, ajustandola en el centro. Z=fftshift(X); %Grficamos nuestra transformada de Fourier plot (t,abs(Z)) grid axis([-5,5,0,6000]) xlabel('Frecuencia') ylabel('|X(f)|')

7. La seal descrita en el problema 6 pasa a travs de un sistema LTI con una respuesta al impulso dada por:

Determine los espectros de magnitud y fase de la seal de salida. Para la solucin de este problema se crearon dos funciones llamadas hfuncion y xfuncion: hfuncion:
%Funcin h(t) %Ingrese los valores del siguiente modo: %ni = valor inicial y nf = valor final %b = cantidad de elementos linealmente espaciados. Recomendado: 3000 function [y,t]=hfuncion(ni,nf,b) %Definimos la funcion t = linspace(ni,nf,b); %Generamos un vector t de b elementos espaciados linealmente que contenga a ni y nf

%ni = valor inicial y nf = valor final y=[]; %Generamos un vector vacio long=length(t); %Obtenemos el nmero de elementos del vector t %Hacemos una condicin for de 1 hasta el nmero de elementos del vector t %Para que evalue en cada posicion de este, si se cumplen las condiciones %Logicas establecidas for i=1:long if (0 <= t(i) & t(i)<= 2); % Toma el valor de 1 si t(i) est entre 0 y 2 z=1; elseif 2 <= t(i) & t(i) <= 3; %Toma el valor de 2 si t(i) est entre 2 y 3 z =2; else; z=0; %Toma el valor de 0 para cualquier otro rango end y =[y z]; %Sustituimos el vector vacio por el resultado dado en z para cada iteracin %Despus de revisar cada condicin, el valor de z queda en la posicin %n+1 end t = t; %Asignamos el valor del tiempo, por si alguien desea graficar

xfuncion:
%Funcin x(t) %Ingrese los valores del siguiente modo: %ni = valor inicial y nf = valor final %b = cantidad de elementos linealmente espaciados. Recomendado: 3000 function [y,t]=xfuncion(ni,nf,b) y=[]; t = linspace(ni,nf,b); %Generamos un vector t de b elementos espaciados linealmente que contenga a ni y nf long=length(t); %Obtenemos el nmero de elementos del vector t %Hacemos una condicin for de 1 hasta el nmero de elementos del vector t %Para que evalue en cada posicin de ste, si se cumplen las condiciones %Logicas establecidas for i=1:long if (0 <= t(i) & t(i)<= 1); z=t(i)+1; elseif 2 <= t(i) & t(i) <= 4; z =-t(i)+4; elseif 1 <= t(i) & t(i) <= 2; z=2; else; z=0; end y =[y z]; end t = t; %Asignamos el valor del tiempo, por si alguien desea graficar

Espectros de magnitud y fase de la seal de salida:


% Seales en el dominio del tiempo [x, t] = xfuncion(0,10,3000); h = hfuncion(0,10,3000);

y = conv (h,x); t1 = linspace(0,2,5999); %%plot(t1,y) % Analisis en Frecuencia N = 5999; % # de muestras Ts = 2/3000; % Periodo de muestreo Fs = 1/Ts; Y=fft(y); %Transformada de fourier de la salida Freq=-0.5*Fs:Fs/N:0.5*Fs*(1-1/N); %Intervalo al cual voy a muestrear la seal % Graficas en el Dominio de la Frecuencia / Espectro de Magnitud subplot(2,1,1); plot(Freq,abs(Y));grid;axis([-10 10 0 1]);legend('|X(f)|'); xlabel('f [Hz]') % Graficas en el Dominio de la Frecuencia / Fase Yf=angle(Y)*180/pi; subplot(2,1,2); plot(Freq,Yf);axis([-4.5 4.5 -170 170]);grid;legend('ang(X(f) [grados]'); xlabel('f [Hz]')

1 |X(f)|

0.5

0 -10

-8

-6

-4

-2

0 f [Hz]

10

100 0 -100 -4 -3 -2 -1 0 f [Hz] 1 2

ang(X(f) [grados]

Filtros y Espectros de Potencia


8. Considere la siguiente seal:

a. Grafique (plot) esta seal en el intervalo -5<=t<=50 (ms).

b. Asuma que esta seal se muestrea a una razn de 1000 muestras por segundo y grafique la seal muestreada resultante (stem). Mueste esta grafica con la del punto a. En una sola grafica utilice subplot 2x1. Solucin para la parte a y b. :
%Problema 8 %Parte a. t=-0.005:(1/1000):0.05; x1=((cos(2*pi*47*t)+cos(2*pi*219*t)).*(t>=0 & t<=0.045)*1); x2= (0).*((t<0 | t>0.045 )*1); x = x1+x2; figure(1) subplot(211) plot(t,x) title('Grafica de la seal') grid on %Parte b. subplot(212) stem(t,x) title('Grafica de la seal muestreada') grid on

c. Grafique los espectros de amplitud y fase de la seal x(t). Anote algunas observaciones de inters (frecuencias, propiedades, etc.). Solucin. La parte c va incluida en el mismo archivo (.m) que la parte a y b.
%Parte c df=1; N=1024; Fs=N*df;

dt=1/Fs; f=(0:N-1)*df; t=(0:N-1)*dt; T=(N-1)*dt NFFT=2^(ceil(log2(N))); X=fft(x,NFFT)/N; freq1=Fs/2*linspace(0,1,NFFT/2); freq2=Fs/2*linspace(-1,1,NFFT); figure(2) subplot(411) plot(freq1,abs(X(1:NFFT/2))); %Espectro de magnitud title('Espectro de Magnitud con freq1') grid on subplot(412) plot(freq2,fftshift(abs(X))); grid on title('Espectro de magnitud de x(t)con freq2'); xlabel('f[Hz]'); subplot(413) plot(freq1,phase(X(1:NFFT/2))); %Espectro de fase title('Espectro de fase con freq1') grid on subplot(414) plot(freq2,fftshift(phase(X))); grid on title('Espectro de fase de x(t) con freq2'); xlabel('f[Hz]');

d. Utilice la funcin butter.m de matlab para disear un filtro pasa baja Butterworht de orden 4 y frecuencia de corte de 100Hz. Grafique la respuesta en frecuencia del filtro. Para este ltimo puede utilizar la funcin freqz. e. Obtenga y grafique la respuesta al impulso del filtro del punto d. y grafquela. Puede utilizar la funcin impz. f. Pase la seal x(t) a travs de este filtro. Determine y grafique la seal de salida y(t). Adicionalmente determine y grafique el espectro de la potencia de la salida. Para esto puede utilizar la funcin filter o conv. g. Ahora disee un filtro Butterworth de orden 8 con igual frecuencia de corte y repita los pasos d e y f. h. Compare los resultados de los espectros de los puntos c., f. y g. Solucin: (Desde la parte d hasta la g) Para estas partes se creo un archivo nuevo .m.
x1=((cos(2*pi*47*t)+cos(2*pi*219*t)).*(t>=0 & t<=0.045)*1); x2= (0).*((t<0 | t>0.045 )*1); x = x1+x2; N = 1000; df=25; Fs=N*df; Ts=1/Fs; Tm = (N-1)*Ts; t=0:Ts:Tm; %Parte d %El filtro de orden 4 [z4,p4,k4] = butter(4,100/500,'low'); [ss4,g4] = zp2sos(z4,p4,k4); Hd4 = dfilt.df2tsos(ss4,g4); %Para la magnitud del filtro de orden 4 y la respuesta en frecuencia h4 = fvtool(Hd4); set(h4,'Analysis','freq') % Parte f %Para llevar la respuesta a funcion de transferencia [b4,a4] = zp2tf(z4,p4,k4); %En esta parte pasamos la seal x(t) por el filtro de orden4 fb4=filter(b4,a4,x); figure plot(t,fb4,'y'); title('Por el Filtro de Orden 4 y(t)') grid %Parte g %El filtro de orden 8 [z8,p8,k8] = butter(8,100/500,'low'); [ss8,g8] = zp2sos(z8,p8,k8); %Hacemos los mismo que el paso anterior. Hd8 = dfilt.df2tsos(ss8,g8); h8 = fvtool(Hd8); set(h8,'Analysis','freq') [b8,a8] = zp2tf(z8,p8,k8); fb8=filter(b8,a8,x); figure %Grafica de la seal cuando pasa por el filtro de orden 8. plot(t,fb8,'r');

title('Por el Filtro de Orden 8 y(t)') grid

Para el filtro de orden 4.

Para el Filtro de Orden 8.

La respuesta de la salida ante un filtro de orden 8 y orden 4, como vemos en la grafica es igual. Pero la grafica de cada filtro es muy diferente cuando se estudia el filtro solamente. Por ejemplo ante un impulso el filtro de orden 4 se vuelve 0 en 25, en cambio el filtro de orden 8 demora casi la mitad de lo que demoro el filtro de orden 4 en ser 0, en 50 se hace cero. Conclusin:

También podría gustarte