Prof. Jorge Luis Agüero Sistema de Comunicaciones II UNEXPO

Anuncio
%programa demostrativo (en matlab) de un filtro FIR pasabajo, realizado por la formula de
%los coeficientes de Fourier, explicada en clase (ventana espectrales: cuadrada y otras)
fs=100;
t=(0:100)/fs;
s1=sin(2*pi*t*10);
s2=sin(2*pi*t*20);
s3=sin(2*pi*t*30);
s=s1+s2+s3;
figure(1)
stem(t,s);
pause
%frecuencia de muestreo
%instantes del muestreo
%señal de prueba => la suma de tres armónicos
%abrir una ventana para las figuras cuyo manejador=1
%dibujar la señal de prueba tipo DSP
%permite detener la corrida hasta pulsar una tecla, solo
%por motivos académicos, para la clase
axis([0 1 -4 4]);
xlabel('Instantes de muestreo');
ylabel('voltios');
title('Señal muestreada');
pause
figure(2)
plot(t,s)
axis([0 1 -4 4]);
xlabel('tiempo');
ylabel('voltios');
title('Señal "analogica"');
pause
%cambia
%asigna
%asigna
%titulo
los ejes
una etiqueta al eje x
una etiqueta al eje y
de la figura
%abrir una ventana para las figuras cuyo manejador=2
%dibujar la señal de prueba tipo analógica
%cambia los ejes
%asigna un etiqueta al eje x
%asigna un etiqueta al eje y
%titulo de la figura
num_coef=41;
%numero de coeficientes del filtro "impar"
N=(num_coef-1)/2;
%N valor temporal limite del filtro, num_coef=2*N+1
n=-N:N;
%instantes donde existe el filtro -N, .., 0, .., N
fcorte= 12.5
%frecuencia corte en Hz
wcorte=2*pi*(fcorte/fs);
%frecuencia corte discreta w en radianes
coef=sin(wcorte*n)./(pi*n);
%formula del filtro h(n)=sen(wc.n)/pi.n
coef( (length(n)-1)/2 + 1)=wcorte/pi;
%asignar h(0)=coef(length(n)-1)/2 + 1)
%el valor wcorte/pi distinto al NaN (indeterminado)
%coef = coef.*hann(num_coef)';
%Quitar el comentario para ver el efecto de
%la ventana hanning sobre el filtro
[h,w]=freqz(coef,1,512);
figure(3);
plot(w, abs(h));
pause
figure(4);
plot(w*fs/(2*pi), abs(h));
pause
sigfil=filter(coef,1,s);
figure(5)
subplot(2,1,1)
plot(t,s);
subplot(2,1,2)
plot(t,sigfil);
pause
%calcular la transformada de Fourier del filtro
%abrir una nueva figura=3
%dibujar el espectro |H(.)| (el modulo)
%nueva figura
%dibujamos el espectro |H(.)| con el
%eje de frecuencia en "Hz"
%pasamos la señal por el filtro
%la figura=5
%dividimos el área de dibujo en 2 filas y 1 columna
%graficamos en la primera zona la señal de prueba
%graficamos en la segunda zona la señal filtrada
figure(6)
%figura=6
fou1=fft(s,512);
%calculamos la Trans. Discreta de Fourier de 512 puntos
fou2=fft(sigfil,512);
%para la señal de prueba y la filtrada
ejew=(0:511)/512*fs;
%realizamos el eje de frecuencia para la 'fft'
plot(ejew, abs([fou1' fou2']));
%dibujamos el espectro de las dos señales para
pause
%comparar
figure(7)
ejew=(0:255)/256*fs/2;
plot(ejew, abs([fou1(1:256)' fou2(1:256)']));
Prof. Jorge Luis Agüero
%figura=7
%graficamos la mitad del eje w desde
%0 hasta fs/2, para no observar la repetición
%periódica
Sistema de Comunicaciones II
UNEXPO Barquisimeto 2015
Descargar