Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

Filtrar datos

Filtrar ecuación diferencial

Los filtros son técnicas de procesamiento de datos que pueden suavizar las fluctuaciones de alta frecuencia en los datos o eliminar tendencias periódicas de una frecuencia específica de los datos. En MATLAB®, la función filter filtra un vector de datos x según la siguiente ecuación diferencial, que describe un filtro TDL.

a(1)y(n)=b(1)x(n)+b(2)x(n1)++b(Nb)x(nNb+1)                 a(2)y(n1)a(Na)y(nNa+1)

En esta ecuación, a y b son vectores de coeficientes del filtro, Na es el orden del filtro feedback y Nb es el orden del filtro feedforward. n es el índice del elemento actual en x. El resultado y(n) es una combinación lineal de los elementos actuales y anteriores de x e y.

La función filter utiliza los vectores de coeficientes especificados a y b para filtrar los datos de entrada de x. Para obtener más información sobre las ecuaciones diferenciales que describen los filtros, consulte [1].

Filtro de media móvil de datos de tráfico

La función filter es una forma de implementar un filtro de media móvil, que es una técnica común de suavizado de datos.

La siguiente ecuación diferencial describe un filtro que promedia los datos dependientes del tiempo con respecto a la hora actual y las tres horas anteriores de datos.

y(n)=14x(n)+14x(n-1)+14x(n-2)+14x(n-3)

Importe datos que describan el flujo de tráfico a lo largo del tiempo y asigne la primera columna de recuentos de vehículos al vector x.

load count.dat
x = count(:,1);

Cree los vectores de coeficiente de filtro.

a = 1;
b = [1/4 1/4 1/4 1/4];

Calcular la media móvil de 4 horas de los datos y representar los datos originales y los datos filtrados.

y = filter(b,a,x);

t = 1:length(x);
plot(t,x,'--',t,y,'-')
legend('Original Data','Filtered Data')

Modificar la amplitud de datos

En este ejemplo se muestra cómo modificar la amplitud de un vector de datos aplicando una función de transferencia.

En el procesamiento digital de señal, los filtros a menudo se representan mediante una función de transferencia. La transformada Z de la ecuación diferencial

a(1)y(n)=b(1)x(n)+b(2)x(n-1)+...+b(Nb)x(n-Nb+1)-a(2)y(n-1)-...-a(Na)y(n-Na+1)

es la siguiente función de transferencia.

Y(z)=H(z-1)X(z)=b(1)+b(2)z-1+...+b(Nb)z-Nb+1a(1)+a(2)z-1+...+a(Na)z-Na+1X(z)

Utilice la función de transferencia

H(z-1)=b(z-1)a(z-1)=2+3z-11+0.2z-1

para modificar la amplitud de los datos en count.dat.

Cargue los datos y asigne la primera columna al vector x.

load count.dat
x = count(:,1);

Cree los vectores de coeficiente de filtro según la función de transferencia H(z-1).

a = [1 0.2];
b = [2 3];

Calcule los datos filtrados y represente tanto los datos originales como los filtrados. Este filtro modifica principalmente la amplitud de los datos originales.

y = filter(b,a,x);

t = 1:length(x);
plot(t,x,'--',t,y,'-')
legend('Original Data','Filtered Data')

Referencias

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1999.

Consulte también

| | | |

Temas relacionados