Diseño de Filtros FIR Paso Alto mediante el Método de la Ventana en MATLAB
Clasificado en Electrónica
Escrito el en
español con un tamaño de 2,35 KB
Diseño de un filtro FIR paso alto mediante el método de la ventana
Este documento presenta la implementación en MATLAB para el diseño de un filtro digital FIR (Respuesta al Impulso Finito) de tipo paso alto, utilizando la técnica de enventanado.
1. Especificaciones del filtro
clear
atp = 0.0371; % Error de aproximación máximo en la banda de paso
ata = 0.0016; % Error de aproximación máximo en la banda de atenuación
fp = 1.9598; % Frecuencia mínima de la banda de paso
fa = 1.6909; % Frecuencia máxima de la banda de atenuación2. Cálculo de parámetros
- Selección del error: Se elige el error de aproximación más restrictivo.
- Frecuencia de corte: Se calcula como el promedio entre las frecuencias de paso y atenuación.
delta = min(atp, ata);
Emax = 20 * log10(delta); % Cálculo del error en unidades logarítmicas
fc = (fp + fa) / 2; % Frecuencia de corte del filtro
display(Emax);3. Implementación del filtro
Se calcula el orden del filtro M, se define el eje de tiempos y se obtiene la respuesta al impulso ideal. Posteriormente, se aplica la ventana de Blackman para limitar la respuesta.
M = ceil((6 * pi) / (1.9598 - 1.6906)); % Cálculo del valor M
n = -M:M; % Creación del eje de tiempos
h = (((-1).^n) .* (pi - fc) / pi) .* sinc(((pi - fc) .* n) / pi); % Respuesta al impulso del FPA ideal
L = 2 * M + 1; % Longitud de la ventana elegida (Blackman)
w = blackman(L); % Creación de la función ventana
hpf = h .* w'; % Operación de enventanado del filtro4. Visualización de resultados
Finalmente, se representa la respuesta en frecuencia del filtro junto con la plantilla de especificaciones para verificar el cumplimiento de los requisitos.
figure(1)
freqz(hpf, 1, 1024)
line([fa/pi pi], [20*log10(1+atp) 20*log10(1+atp)])
line([fp/pi pi], [20*log10(1-atp) 20*log10(1-atp)])
line([0 fa/pi], [20*log10(ata) 20*log10(ata)])
line([fa/pi fa/pi], [20*log10(ata) 20*log10(1+atp)])
line([fp/pi fp/pi], [-200 20*log10(1-atp)])
title('Respuesta en amplitud y fase de un filtro paso alto con ventana de Blackman')