%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