Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Implementación de filtros

Convolución y filtrado

La base matemática del filtrado es la convolución. Para un filtro de respuesta de impulso finito (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 de impulso h(k):

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

Si la señal de entrada también es de longitud finita, puede implementar la operación de filtrado mediante la función.MATLAB®conv Por ejemplo, para filtrar un vector aleatorio de cinco muestras con un filtro de promediación de tercer orden, puede almacenar x(k) en un vector,x h(k) en un vector , y convolve los dos: La longitud de es uno menos que la suma de las longitudes de y .h

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
yxh

Filtros y funciones de transferencia

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

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

Los coeficientes polinómicos h(1), h(2), …, h(n + 1) corresponden a los coeficientes de la respuesta de impulso de un filtro de orden.n

Nota

Los índices de coeficiente de filtro van de 1 a ( + 1), en lugar de de 0 a .nn Esto refleja el esquema de indexación estándar utilizado para los vectores.MATLAB

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

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

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 ( ) y ( ) son los coeficientes de filtro.biai En este caso, el orden del filtro es el máximo de y .nm Los filtros IIR con 0 también se denominan filtros all-pole, recursivos o autoregresivos (AR).n Los filtros IIR con ambos y mayores que cero también se denominan filtros de media móvil (ARMA) de polo cero, recursivo o autoregresivo.nm Los acrónimos AR, MA y ARMA se aplican generalmente a los filtros asociados con los procesos estocásticos filtrados.

Filtrado con la funciónfilter

Para los filtros IIR, la operación de filtrado no se describe mediante una simple convolución, sino por una ecuación de diferencia que se puede encontrar en la relación de función de transferencia. Supongamos que a(1) = 1, mueva el denominador al lado izquierdo y tome la transformación 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 salidas pasadas, ( ) esyk

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 del dominio del tiempo de un filtro digital. Comenzando con (1) y asumiendo un sistema causal con condiciones iniciales cero, la representación es equivalente ay

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. almacena los coeficientes en dos vectores de fila, uno para el numerador y otro para el denominador.MATLABfilterfilter 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 le da tantas muestras de salida como muestras de entrada, es decir, la longitud de es la misma que la longitud de .

b = 1; a = [1 -0.9]; y = filter(b,a,x);
filteryx Si el primer elemento de no es 1, entonces divide los coeficientes por (1) antes de implementar la ecuación de diferencia.afiltera

Consulte también

Apps

Funciones