Su filtro está muy poco especificado, por lo que supongo que se supone que su diseño es muy básico. Un método muy básico sería simplemente truncar y cambiar la respuesta al impulso de un filtro de paso bajo ideal con frecuencia de corte $ \ omega_c = 2 \ pi f_c / f_s = 0.4 \ pi $ (donde $ f_s $ es la frecuencia de muestreo):
$$ h_ {ideal} (n) = \ frac {\ sin (\ omega_c n)} {\ pi n} $$
Tenga en cuenta que, dado que su filtro debe ser causal, Necesito cambiar y truncar la respuesta de impulso ideal de manera que sea simétrica con respecto a su máximo:
$$ h (n) = \ frac {\ sin (\ omega_c (n-10))} { \ pi (n-10)}, \ quad n = 0,1, \ ldots, 20 \ tag {1} $$
La ecuación (1) le da los 21 coeficientes de filtro $ h (n) $ de un filtro FIR causal que se aproxima a una respuesta ideal de filtro de paso bajo. Tenga en cuenta que el orden de los filtros es 20.
Un código simple de Matlab / Octave podría verse así:
n = -10:10; omc = 0.4*pi; % normalized cut-off frequency in rad h = sin(omc*n)./(pi*n); % impulse response h(11) = omc/pi; % correct NaN value at n=0 H = fft(h,1024); % complex frequency response f = 1000/1024*(0:512); % FFT frequency grid up to fs/2 plot(f,abs(H(1:513))); % plot magnitude of frequency response
Comentarios