P Tema 4 FIR
Cheatsheet Content
### Introducción a Filtros FIR de Fase Lineal Los filtros FIR (Finite Impulse Response) de fase lineal son cruciales en procesado de señal. Se caracterizan por tener una respuesta impulsional finita y una fase lineal, lo que significa que no introducen distorsión de fase. - **Definición:** Un filtro FIR se define por su respuesta impulsional $h[n]$. - **Condición de fase lineal:** Requiere simetría par o impar en $h[n]$: $h[n] = \pm h[N - 1 - n]$. - **Propiedad de coeficientes reales:** $h[n]$ real implica $H(e^{j\omega}) = H^*(e^{-j\omega})$. ### Tipos de Filtros FIR de Fase Lineal Existen cuatro tipos principales, definidos por la simetría de $h[n]$ y la paridad de $N$. La función de respuesta en frecuencia $H(e^{j\omega})$ se puede expresar como $H(e^{j\omega}) = e^{j\beta} e^{-j\omega \frac{N-1}{2}} \hat{H}(e^{j\omega})$, donde $\hat{H}(e^{j\omega})$ es una función real (respuesta deseada). #### Tipo 1: Simetría par, N impar - $h[n] = h[N - 1 - n]$ - $\hat{H}(e^{j\omega}) = h[\frac{N-1}{2}] + \sum_{n=0}^{\frac{N-3}{2}} 2 \cdot h[n] \cdot \cos[\omega(\frac{N-1}{2}-n)]$ - **Ceros:** Número par de ceros en $+1$ y número par de ceros en $-1$. #### Tipo 2: Simetría par, N par - $h[n] = h[N - 1 - n]$ - $\hat{H}(e^{j\omega}) = \sum_{n=0}^{\frac{N}{2}-1} 2 \cdot h[n] \cdot \cos[\omega(\frac{N-1}{2}-n)]$ - **Ceros:** Número par de ceros en $+1$ y número impar de ceros en $-1$. #### Tipo 3: Simetría impar, N impar - $h[n] = -h[N - 1 - n]$ - $\hat{H}(e^{j\omega}) = \sum_{n=0}^{\frac{N-3}{2}} 2 \cdot h[n] \cdot \sin[\omega(\frac{N-1}{2}-n)]$ - **Ceros:** Número impar de ceros en $+1$ y número impar de ceros en $-1$. Además, $h[\frac{N-1}{2}] = 0$. #### Tipo 4: Simetría impar, N par - $h[n] = -h[N - 1 - n]$ - $\hat{H}(e^{j\omega}) = \sum_{n=0}^{\frac{N}{2}-1} 2 \cdot h[n] \cdot \sin[\omega(\frac{N-1}{2}-n)]$ - **Ceros:** Número impar de ceros en $+1$ y número par o ningún cero en $-1$. ### Localización de Ceros La ubicación de los ceros en el plano Z es fundamental para entender el comportamiento de los filtros FIR de fase lineal. - Si $h[n]$ es real, las raíces (ceros) son reales o complejas conjugadas. - Los ceros de los FIR de fase lineal presentan una simetría especular respecto al círculo unidad ($z=re^{j\theta}$ y $z^{-1}=\frac{1}{r}e^{-j\theta}$). #### Simetría $h[n] = +h[N - 1 - n]$ - $H(z) = +z^{-N}H(z^{-1})$ - Ceros en $z_0$ implican ceros en $1/z_0$. - **Tipo 1 (N par):** Par o ningún cero en $+1$ y $-1$. - **Tipo 2 (N impar):** Par o ningún cero en $+1$ e impar en $-1$. #### Simetría $h[n] = -h[N - 1 - n]$ - $H(z) = -z^{-N}H(z^{-1})$ - Ceros en $z_0$ implican ceros en $1/z_0$. - **Tipo 3 (N par):** Impar en $+1$ e impar en $-1$. - **Tipo 4 (N impar):** Impar en $+1$ y par o ningún cero en $-1$. ### Diseño por Muestreo en Frecuencia Este método permite especificar la respuesta en frecuencia deseada en un conjunto de puntos discretos. - **Frecuencias de muestreo:** - **Tipos 1 y 2:** $\omega_n = \frac{2\pi n}{N}$ - **Tipos 3 y 4:** $\omega_n = \frac{2\pi (n+1/2)}{N}$ - **Obtención de coeficientes:** Se resuelve un sistema lineal para los $h[n]$. - Para **Tipo 1 (N impar),** con $n = 0, 1, ..., L$: $$\begin{bmatrix} H(\omega_0) \\ \vdots \\ H(\omega_L) \end{bmatrix} = \begin{bmatrix} \cos(\omega_0 L) & \dots & \cos(\omega_0(L-n)) \\ \vdots & \ddots & \vdots \\ \cos(\omega_L L) & \dots & \cos(\omega_L(L-n)) \end{bmatrix} \begin{bmatrix} h[0] \\ \vdots \\ h[L] \end{bmatrix}$$ - Resolviendo este sistema se obtienen los coeficientes del filtro, $h[n]$. ### Filtros de Fase Cero Un filtro de fase cero tiene una respuesta en frecuencia real y no negativa. - **Definición:** $H(z) = F(z)F(z^{-1})$, donde $F(z)$ es un filtro causal. - **Respuesta en frecuencia:** $H(e^{j\omega}) = |F(e^{j\omega})|^2$, que es real y positiva. - **Polos y ceros:** Simetría especular respecto al círculo unidad. - **Inestabilidad:** Generalmente inestable, pero útil para señales de longitud finita. - **Matlab:** `y=filtfilt(Fnumz,Fdenz,x)` realiza un filtrado de fase cero. ### Filtros de Fase Mínima/Máxima Clasificación basada en la posición de los ceros. - **Fase mínima ($H_{MIN}(z)$):** FT causal y estable con todos sus ceros dentro del círculo unidad. - **Fase máxima ($H_{MAX}(z)$):** FT causal y estable con todos sus ceros simétricos respecto al círculo unidad y el caso anterior. - $H_{MAX}(z) = H_{MIN}(z)H_{PasoTodas}(z)$ con $H_{PT}(z)$ filtro paso todo estable en base a los ceros de $H_{MIN}(z)$. - **Amplitud:** $|H_{MAX}(e^{j\omega})| = |H_{MIN}(e^{j\omega})|$. - **Fase:** $\text{arg}(H_{MAX}(e^{j\omega})) = \text{arg}(H_{MIN}(e^{j\omega})) - \alpha(\omega)$, donde $0 ### Filtros Paso Todas Un filtro paso todas (all-pass filter) tiene una magnitud constante e igual a 1 en todas las frecuencias. - **Propiedad:** $|H(e^{j\omega})| = 1$ para todo $\omega$. - **Función de transferencia (IIR):** $$H(z) = \pm \frac{d_M + d_{M-1}z^{-1} + \dots + z^{-M}}{1 + d_1z^{-1} + \dots + d_Mz^{-M}} = \pm z^{-M}\frac{D_M(z^{-1})}{D_M(z)}$$ donde $D_M(z) = 1 + d_1z^{-1} + \dots + d_Mz^{-M}$. - **Ceros y polos:** Si un filtro es estable, sus polos (raíces de $D_M(z)$) están dentro del círculo unidad y sus ceros (raíces de $D_M(z^{-1})$) están fuera, con simetría especular ($z_{POLO} = re^{j\theta} \leftrightarrow z_{CERO} = \frac{1}{r}e^{j\theta}$). - **Desfase:** El desfase total introducido por $H(z)$ es $M\pi$ para $\omega \in [0, \pi]$. - **Uso:** Útiles para modificar el desfase introducido por otros filtros sin alterar la magnitud. ### Diseño FIR por Truncamiento y Ventana Fija Este método consiste en truncar la respuesta impulsional de un filtro ideal (IIR y no causal) para obtener un filtro FIR causal y realizable. #### Respuesta Impulsional de Filtros Ideales - **Paso bajo:** $h_{LP}[n] = \frac{\omega_c}{\pi} \frac{\sin(\omega_c n)}{\omega_c n}$ (si $n \neq 0$), $h_{LP}[0] = \frac{\omega_c}{\pi}$. - **Paso alto:** $h_{HP}[n] = \delta[n] - h_{LP}[n]$. - **Paso banda:** $h_{BP}[n] = h_{LP, \omega_{c2}}[n] - h_{LP, \omega_{c1}}[n]$. - **Supresor de banda:** $h_{BS}[n] = \delta[n] - h_{BP}[n]$. #### Procedimiento de Diseño 1. **Truncamiento:** Limitar la respuesta impulsional ideal $h_d[n]$ (IIR, no causal) a $N$ coeficientes. 2. **Ventana:** Multiplicar $h_d[n]$ por una ventana $w[n]$ para mitigar el fenómeno de Gibbs: $h_w[n] = w[n]h_d[n]$. 3. **Retardo:** Retardar la señal $L = \frac{N-1}{2}$ muestras para hacer el filtro causal: $h[n] = h_d[n-L]$. El filtro resultante tiene fase lineal. #### Fenómeno de Gibbs - **Causa:** La transición abrupta de la ventana $w[n]$ (ej. ventana rectangular). - **Efectos:** Ondulaciones en la respuesta en frecuencia (rizados) cerca de las discontinuidades. - **Características:** - La amplitud del rizado no depende de $N$. - El lóbulo principal se estrecha con $N$, pero el área no cambia. - Los rizos se acercan a la frecuencia de corte $\omega_c$, pero su tamaño no varía. #### Ventanas Fijas Comunes (Para atenuar el fenómeno de Gibbs) | Tipo de Ventana | Ancho del lóbulo principal ($\Delta_{ML}$) | Nivel relativo del lóbulo lateral ($A_{SL}$) | Atenuación mínima de la banda de supresión | Ancho de banda de transición ($\Delta\omega$) | |---|---|---|---|---| | Rectangular | $4\pi/(2M+1)$ | $13.3 \text{ dB}$ | $20.9 \text{ dB}$ | $0.92\pi/M$ | | Bartlett | $8\pi/(2M+1)$ | $26.5 \text{ dB}$ | Ver el texto | Ver el texto | | Hann | $8\pi/(2M+1)$ | $31.5 \text{ dB}$ | $43.9 \text{ dB}$ | $3.11\pi/M$ | | Hamming | $8\pi/(2M+1)$ | $42.7 \text{ dB}$ | $54.5 \text{ dB}$ | $3.32\pi/M$ | | Blackman | $12\pi/(2M+1)$ | $58.1 \text{ dB}$ | $75.3 \text{ dB}$ | $5.56\pi/M$ | - **Diseño de un filtro paso bajo:** - Especificaciones: $\omega_p$ (frecuencia de paso), $\omega_s$ (frecuencia de parada), $\alpha_s$ (atenuación de la banda de parada en dB). - Frecuencia de corte: $\omega_c = \frac{\omega_p + \omega_s}{2}$. - Ancho de banda de transición: $\Delta\omega = \omega_s - \omega_p$. - Seleccionar ventana basada en $A_{SL}$ para cumplir $\alpha_s$. - Calcular el orden $M$ (o $N = 2M+1$) a partir de $\Delta\omega$ y el ancho de banda de transición de la ventana. ### Diseño FIR con Ventana Variable (Ajustable) Estas ventanas permiten controlar el rizado del filtro. #### Ventana de Dolph-Chebyshev - **Parámetros:** Orden $N=2L+1$, $A_{SL}$ (atenuación del lóbulo lateral en dB). - **Función:** $$w[n] = \frac{1}{2L+1} \left[ T_{2L}\left(\beta \cos\left(\frac{k\pi}{2L}\right)\right) + \sum_{k=1}^{L} T_{2N}\left(\beta \cos\left(\frac{k\pi}{2L+1}\right)\right)\cos\left(\frac{2nk\pi}{2L+1}\right) \right]$$ donde $T_m(x)$ es el polinomio de Chebyshev de orden $m$, y $\beta = \cosh(\frac{1}{2L}\text{acosh}(1/\gamma))$ con $\gamma$ siendo la relación entre la amplitud del lóbulo principal y el lóbulo lateral. - **Longitud del filtro ($2L$):** $2L \approx \frac{2.056\alpha_s - 16.4}{2.285\Delta\omega}$. #### Ventana de Kaiser - **Parámetros:** Orden $N=2L+1$, $\beta$ (parámetro de forma). - **Función:** $$w[n] = \frac{I_0(\beta\sqrt{1-(n/L)^2})}{I_0(\beta)}$$ donde $I_0(x)$ es la función de Bessel modificada de primera clase de orden cero. - **Relación $\beta$ y $\alpha_s$:** $\beta = 0.5482(\alpha_s - 21)^{0.4} + 0.07886(\alpha_s - 21)$ para $50 \le \alpha_s \le 21$. - **Longitud del filtro ($2L$):** $2L \approx \frac{\alpha_s - 8}{2.285\Delta\omega}$. ### Diseño de Filtros Avanzados con Matlab Matlab proporciona funciones para simplificar el diseño de filtros FIR. #### Filtros con Ventana de Kaiser - `[N, wc, beta, type] = kaiserord([wp, ws], [A1, A2], [dp, ds])` - Calcula el orden `N`, la frecuencia de corte `wc`, el parámetro `beta` y el tipo de filtro para cumplir las especificaciones. - `wp`, `ws`: Frecuencias de paso y parada normalizadas. - `A1`, `A2`: Magnitudes deseadas en las bandas. - `dp`, `ds`: Rizado máximo permitido en las bandas de paso y parada. - `window = kaiser(N+1, beta)`: Genera la ventana de Kaiser. - `h = fir1(N, wc, type, window)`: Diseña un filtro FIR usando el método de ventana. #### Filtros Multibanda - `ws = [w0, w1, ..., wM]`: Vector de frecuencias de corte. - `A = [A0, A1, ..., AM]`: Vector de amplitudes deseadas en las bandas. - `h = fir2(N, ws, A, window)`: Diseña un filtro FIR multibanda. ### Órdenes Típicos en Aplicaciones de Audio | Aplicación | Orden Típico (N) | |-----------------------------|------------------| | Filtros básicos de audio | 50 - 200 | | Crossovers en sistemas de audio | 100 - 500 | | Cancelación de eco y reverberación | 500 - 2000 | | Procesamiento de alta calidad (Dolby, DAW) | 1000 - 5000 | - Los filtros de orden alto ofrecen cortes más precisos, pero introducen latencia. - En tiempo real, se busca un equilibrio entre precisión y eficiencia. ### Filtros Combados Se utilizan para crear filtros con una respuesta en frecuencia periódica. - **Transformación espectral:** Partiendo de un filtro de referencia $\hat{H}(z) = \sum_{n=-\infty}^{\infty} \hat{h}[n]z^{-n}$, se aplica la transformación $z \to z^L$. - **Función de transferencia:** $H(z) = \hat{H}(z^L) = \sum_{n=-\infty}^{\infty} \hat{h}[n]z^{-Ln}$. - **Respuesta en frecuencia:** $H(e^{j\omega}) = \hat{H}(e^{j\omega L})$, con un periodo de $\frac{2\pi}{L}$. #### Diseño con Matlab de IIR Combados - `[num, den] = iircomb(L, Bw, tipo)`: - `L`: Factor de retardo. - `Bw`: Ancho de banda de paso normalizado. - `tipo`: `'peak'` (filtro de pico) o `'notch'` (filtro de rechazo de banda). - **Ejemplo:** Eliminar ruido eléctrico a $f_0=50 \text{ Hz}$ con muestreo a $f_s=5 \text{ kHz}$. - Frecuencia digital: $\omega_d = 2\pi \frac{f_0}{f_s} = 2\pi \frac{50}{5000} = 2\pi \frac{1}{100}$. - Factor de retardo `L`: Para que $\omega_d$ sea un múltiplo de $\frac{2\pi}{L}$, elegimos $L = \frac{f_s}{f_0} = \frac{5000}{50} = 100$. - Ancho de banda: $B_w = \frac{2\pi}{L} = \frac{2\pi}{100} = 0.02\pi$.