Main Content

Implementar filtros

Convolución y filtrado

El fundamento matemático del filtrado es la convolución. Para un filtro de respuesta al impulso finita (FIR), la salida y(k) de una operación de filtrado es la convolución de la señal de entrada x(k) con la respuesta al impulso h(k):

y(k)=l=h(l)x(kl).

Si la señal de entrada también es de longitud finita, también puede implementar la operación de filtrado utilizando la función de MATLAB® conv. Por ejemplo, para filtrar un vector aleatorio de cinco muestras con un filtro promediador de tercer orden, puede almacenar x(k) en un vector x y h(k) en un vector h, y convolucionar ambos:

x = randn(5,1);
h = [1 1 1 1]/4;   % A third-order filter has length 4
y = conv(h,x)
y =
   -0.3375
    0.4213
    0.6026
    0.5868
    1.1030
    0.3443
    0.1629
    0.1787
La longitud de y es uno menos que la suma de las longitudes de x y h.

Filtros y funciones de transferencia

La función de transferencia de un filtro es la transformada Z de su respuesta al impulso. Para un filtro FIR, la transformada Z de la salida y, Y(z), es el producto de la función de transferencia y X(z), la transformada Z de la entrada x:

Y(z)=H(z)X(z)=(h(1)+h(2)z1++h(n+1)zn)X(z).

. Los coeficientes de polinomios h(1), h(2), …, h(n + 1) se corresponden con los coeficientes de la respuesta al impulso de un filtro de n-ésimo orden.

Nota

Los índices de coeficiente de filtro van de 1 a (n + 1), en lugar de ir de 0 a n. Esto refleja la indexación estándar utilizada para vectores en MATLAB.

Los filtros FIR también se denominan filtros cero, no recursivos o de media móvil (MA).

Para un filtro de respuesta al impulso finita (IIR), la función de transferencia no es un polinomio, sino una función racional. Las transformadas Z de las señales de entrada y salida están relacionadas por

Y(z)=H(z)X(z)=b(1)+b(2)z1+...+b(n+1)zna(1)+a(2)z1+...+a(m+1)zmX(z),

, donde b(i) y a(i) son los coeficientes de filtro. En este caso, el orden del filtro es el máximo de n y m. Los filtros IIR con n = 0 también se denominan filtros de todos los polos, recursivos o autorregresivos (AR). Los filtros IIR con n y m superiores a cero también se denominan filtros de polo cero, recursivos o de media móvil autorregresivos (ARMA). Los acrónimos AR, MA y ARMA suelen aplicarse a filtros asociados con procesos estocásticos filtrados.

Filtrado con la función filter

Para los filtros IIR, la operación de filtrado no se describe solo mediante una convolución, sino mediante una ecuación de diferencia que puede extraerse de la relación transferencia-función. Suponga que a(1) = 1, desplace el denominador a la izquierda y tome la transformada Z inversa para obtener

y(k)+a(2)y(k1)++a(m+1)y(km)=b(1)x(k)+b(2)x(k1)++b(n+1)x(kn).

En términos de entradas actuales y pasadas, y de salidas pasadas, y(k) es

y(k)=b(1)x(k)+b(2)x(k1)++b(n+1)x(kn)a(2)y(k1)a(m+1)y(km),

que es la representación estándar de dominio de tiempo de un filtro digital. Si comienza con y(1) y supone un sistema causal con condiciones iniciales nulas, la representación equivale a

y(1)=b(1)x(1)y(2)=b(1)x(2)+b(2)x(1)a(2)y(1)y(3)=b(1)x(3)+b(2)x(2)+b(3)x(1)a(2)y(2)a(3)y(1)y(n)=b(1)x(n)++b(n)x(1)a(2)y(n1)a(n)y(1).

Para implementar esta operación de filtrado, puede utilizar la función de MATLAB filter. filter almacena los coeficientes en dos vectores fila, uno para el numerador y otro para el denominador. Por ejemplo, para resolver la ecuación de diferencia

y(n)0.9y(n1)=x(n)Y(z)=110.9z1X(z)=H(z)X(z),

, puede utilizar

b = 1;
a = [1 -0.9];
y = filter(b,a,x);
filter le proporciona tantas muestras de salida como muestras de entrada hay, es decir, la longitud de y es igual a la longitud de x. Si el primer elemento de a no es 1, filter divide los coeficientes entre a(1) antes de implementar la ecuación de diferencia.

Consulte también

Apps

Funciones