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.

Filtrar datos

Ecuación de diferencia de filtro

Los filtros son técnicas de procesamiento de datos que pueden suavizar las fluctuaciones de alta frecuencia en los datos o eliminar las tendencias periódicas de una frecuencia específica de los datos. En, la función filtra un vector de datos de acuerdo con la siguiente ecuación de diferencia, que describe un filtro de línea de retardo roscado.MATLAB®filterx

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, y son vectores de coeficientes del filtro,ab Na es el orden de filtro de retroalimentación y Nb es el orden de filtro de avance. es el índice del elemento actual de.nx La salida () es una combinación lineal de los elementos actuales y anteriores de y.ynxy

La función utiliza vectores de coeficiente especificados y filtra los datos de entrada.filterabx Para obtener más información sobre ecuaciones de diferencia que describen filtros, consulte.[1]

Movimiento-promedio de filtro de datos de tráfico

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

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

<math display="block">
<mrow>
<mi>y</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>4</mn>
</mrow>
</mfrac>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>4</mn>
</mrow>
</mfrac>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>4</mn>
</mrow>
</mfrac>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>-</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>4</mn>
</mrow>
</mfrac>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>-</mo>
<mn>3</mn>
<mo stretchy="false">)</mo>
</mrow>
</math>

Importe los datos que describen 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];

Calcule la media móvil de 4 horas de los datos y trace 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 amplitud de datos

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

En el procesamiento de señales digitales, los filtros suelen representarse mediante una función de transferencia. La transformación Z de la ecuación de diferencia

<math display="block">
<mrow>
<mtable columnalign="right center left">
<mtr>
<mtd>
<mrow>
<mi>a</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mi>y</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>=</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>b</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>b</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mo>.</mo>
<mo>.</mo>
<mo>.</mo>
<mo>+</mo>
<mi>b</mi>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>N</mi>
</mrow>
<mrow>
<mi>b</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>N</mi>
</mrow>
<mrow>
<mi>b</mi>
</mrow>
</msub>
<mo>+</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow></mrow>
</mtd>
<mtd>
<mrow></mrow>
</mtd>
<mtd>
<mrow>
<mrow></mrow>
<mo>-</mo>
<mi>a</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mi>y</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>-</mo>
<mo>.</mo>
<mo>.</mo>
<mo>.</mo>
<mo>-</mo>
<mi>a</mi>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>N</mi>
</mrow>
<mrow>
<mi>a</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
<mi>y</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>N</mi>
</mrow>
<mrow>
<mi>a</mi>
</mrow>
</msub>
<mo>+</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mrow>
</mtd>
</mtr>
</mtable>
</mrow>
</math>

es la siguiente función de transferencia.

<math display="block">
<mrow>
<mi>Y</mi>
<mo stretchy="false">(</mo>
<mi>z</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi>H</mi>
<mo stretchy="false">(</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
<mi>X</mi>
<mo stretchy="false">(</mo>
<mi>z</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mfrac>
<mrow>
<mi>b</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>b</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo>+</mo>
<mo>.</mo>
<mo>.</mo>
<mo>.</mo>
<mo>+</mo>
<mi>b</mi>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>N</mi>
</mrow>
<mrow>
<mi>b</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<msub>
<mrow>
<mi>N</mi>
</mrow>
<mrow>
<mi>b</mi>
</mrow>
</msub>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
<mrow>
<mi>a</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>a</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo>+</mo>
<mo>.</mo>
<mo>.</mo>
<mo>.</mo>
<mo>+</mo>
<mi>a</mi>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>N</mi>
</mrow>
<mrow>
<mi>a</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<msub>
<mrow>
<mi>N</mi>
</mrow>
<mrow>
<mi>a</mi>
</mrow>
</msub>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
</mfrac>
<mi>X</mi>
<mo stretchy="false">(</mo>
<mi>z</mi>
<mo stretchy="false">)</mo>
</mrow>
</math>

Utilice la función de transferencia

<math display="block">
<mrow>
<mi>H</mi>
<mo stretchy="false">(</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mfrac>
<mrow>
<mi>b</mi>
<mo stretchy="false">(</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mi>a</mi>
<mo stretchy="false">(</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mrow>
</mfrac>
<mo>=</mo>
<mfrac>
<mrow>
<mn>2</mn>
<mo>+</mo>
<mn>3</mn>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
<mrow>
<mn>1</mn>
<mo>+</mo>
<mn>0</mn>
<mo>.</mo>
<mn>2</mn>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
</mfrac>
</mrow>
</math>

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

<math display="block">
<mrow>
<mi>H</mi>
<mo stretchy="false">(</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mrow>
</math>
.

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

Calcule los datos filtrados y trace los datos originales y los datos 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