DSP - Diseño asistido por computadora

Los filtros FIR pueden ser útiles para realizar un diseño asistido por computadora de los filtros. Tomemos un ejemplo y veamos cómo funciona. A continuación se muestra una figura del filtro deseado.

Mientras diseñamos por computadora, dividimos todas las figuras del gráfico continuo en valores discretos. Dentro de ciertos límites, lo dividimos en 64, 256 o 512 (y así sucesivamente) número de partes que tienen magnitudes discretas.

En el ejemplo anterior, hemos tomado límites entre -π y + π. Lo hemos dividido en 256 partes. Los puntos se pueden representar como H (0), H (1),… .hasta H (256). Aquí, aplicamos el algoritmo IDFT y esto nos dará características de fase lineal.

A veces, puede que nos interese algún orden de filtro en particular. Digamos que queremos realizar el diseño dado anteriormente a través de un filtro de noveno orden. Entonces, tomamos valores de filtro como h0, h1, h2… .h9. Matemáticamente, se puede mostrar a continuación

$$ H (e ^ {j \ omega}) = h_0 + h_1e ^ {- j \ omega} + h_2e ^ {- 2j \ omega} + ..... + h_9e ^ {- 9j \ omega} $$

Donde hay una gran cantidad de dislocaciones, tomamos el máximo de puntos.

Por ejemplo, en la figura anterior, hay una caída repentina de la pendiente entre los puntos B y C. Entonces, intentamos tomar valores más discretos en este punto, pero hay una pendiente constante entre los puntos C y D. Allí tomamos menor número de valores discretos.

Para diseñar el filtro anterior, pasamos por el proceso de minimización de la siguiente manera;

$ H (e ^ {j \ omega1}) = h_0 + h_1e ^ {- j \ omega1} + h_2e ^ {- 2j \ omega1} + ..... + h_9e ^ {- 9j \ omega1} $

$ H (e ^ {j \ omega2}) = h_0 + h_1e ^ {- j \ omega2} + h_2e ^ {- 2j \ omega2} + ..... + h_9e ^ {- 9j \ omega2} $

Similar,

$ (e ^ {j \ omega1000}) = h_0 + h_1eH ^ {- j \ omega1000} h_2e ^ {- 2j \ omega1000} + ..... + h_9 + e ^ {- 9j \ omega1000} $

Al representar la ecuación anterior en forma de matriz, tenemos:

$$ \ begin {bmatrix} H (e ^ {j \ omega_1}) \\. \\. \\ H (e ^ {j \ omega_ {1000}}) \ end {bmatrix} = \ begin {bmatrix} e ^ {- j \ omega_1} & ... & e ^ {- j9 \ omega_1} \\. & &. \\. & &. \\ e ^ {- j \ omega_ {1000}} & ... & e ^ {j9 \ omega_ {1000}} \ end {bmatrix} \ begin {bmatrix} h_0 \\. \\. \\ h_9 \ end {bmatrix} $$

Tomemos la matriz de 1000 × 1 como B, la matriz de 1000 × 9 como A y la matriz de 9 × 1 como $ \ hat {h} $.

Entonces, para resolver la matriz anterior, escribiremos

$ \ hat {h} = [A ^ TA] ^ {- 1} A ^ {T} B $

$ = [A ^ {* T} A] ^ {- 1} A ^ {* T} B $

donde A * representa el conjugado complejo de la matriz A.