12.07.2015 Views

Filtros FIR

Filtros FIR

Filtros FIR

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

12.4. MÉTODO DE MUESTREO EN FRECUENCIA 21o⎧⎪⎨ ± π 2 − 2π N − 1k, 0 ≤ k ≤ b(N − 1) /2c ,N 2arg (H[k])=⎪⎩∓ π 2 + 2π N − 1(N − k) b(N − 1) /2c ≤ k ≤ N − 1,N 2(Tipos III y IV).donde b·c es la función piso, definida como el mayor entero menor que su argumento, yel símbolo d·e define la función techo: el menor entero mayor que su argumento 1 . Porejemplo, b2.4c =2, b−2.4c = −3, d2.4e =3, d−2.4e = −2. En particular, es sencilloverificar que⎧¹ ºNN − 1⎪⎨ − 1, si N es par,2=2 ⎪⎩ N − 1, si N es impar,2⎧» ¼NN − 1⎪⎨ , si N es par,2=2 ⎪⎩ N +1, si N es impar.2Las ecuaciones de la fase tienen en cuenta que, para obtener un filtro causal, el retardo defase del <strong>FIR</strong> es de (N − 1) /2. Como cada cero del módulo de la respuesta en frecuenciaintroduce un desfasaje de π radianes, este aporte debe tenerse en cuenta al especificar lafase. El siguiente programa de Matlab para el diseño de filtros <strong>FIR</strong> de fase lineal por elmétodo del muestreo en frecuencia tiene en cuenta estos hechos.function h=firfs(Hd)%h = firfs(Hd)% Esta funcion calcula la respuesta impulsiva de un filtro <strong>FIR</strong>% por el metodo de muestreo en frecuencia.% El vector Hd tiene la informacion del MODULO de la respuesta en% frecuencia. La funcion se encarga de acomodar la fase para% obtener un <strong>FIR</strong> de fase linealN = length(Hd);k = 0:N-1;DPi = zeros(size(Hd)); % DPi: vector con los saltos de piDPi(find(Hd==0)) = 1;DPi = pi*cumsum(DPi);Ang = -j*(2*pi*k/N*(N-1)/2+DPi); % fase lineal + saltos de piHdc = Hd.*exp(Ang);h = real(ifft(Hdc)); % no debiera hacer falta...En el siguiente ejemplo se repite el diseño del Ejemplo 12.8 pero con especificación de faselineal.Ejemplo 12.10 Diseño de un filtro pasabajos (N =4, fase lineal)Las especificaciones de la respuesta en frecuencia de un filtro pasabajos con frecuencia de corteω c = π/2 para obtener un filtro<strong>FIR</strong>defaselinealdelongitudN =4son|H [k]| = {1, 1, 0, 1} ,arg(H[k]) = © 2π44−12× 0, 2π 44−12× 1, ∗, 2π 44−12× 3+π ª ,donde el símbolo “*” indica que la fase es irrelevante porque el módulo de la respuesta en frecuenciaes nulo, y al último elemento se le ha sumado un desfasaje de π radianes por el cambio de faseintroducido por el cero. En consecuencia,nH[k] = 1, − √ 22 − j √ 22 , 0, − √ 22 + j √ o22.1 Estas funciones se corresponden con los comandos Matlab floor(·) y ceil(·), respectivamente.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!