Você está na página 1de 28

Procesamiento Digital de Seales

Filtros de Promedio Mvil


Definicin
El filtro del promedio mvil es el filtro ms
comn
Es el filtro ms fcil de entender y usar
Es el filtro ptimo para reducir ruido
aleatorio, conservando una respuesta a
escalera rpida.

Definicin
Es bastante utilizado en seales
codificadas en tiempo
Es el peor filtro para seales codificadas
en frecuencia
Implementacin Convolucin
El promedio mvil funciona promediando cierto
nmero de puntos en la seal de entrada para
producir cada punto de la seal de salida


1
0
] [
1
] [
M
j
j i x
M
i y
Implementacin Convolucin
Por ejemplo un filtro de promedio mvil de 5
puntos, el punto 80 en la salida se obtendra

5
] 84 [ ] 83 [ ] 82 [ ] 81 [ ] 80 [
] 80 [
x x x x x
y

Implementacin Convolucin
Tambin se puede construirlo de forma simtrica

5
] 82 [ ] 81 [ ] 80 [ ] 79 [ ] 78 [
] 80 [
x x x x x
y

Implementacin Convolucin
Analizando las ecuaciones podemos llegar a la
conclusin que un filtro de promedio mvil se
puede calcular por convolucin ya que su
ncleo es:



Es un pulso rectangular con un rea de 1


,... 0 , 0 ,
5
1
,
5
1
,
5
1
,
5
1
,
5
1
, 0 , 0 ...,
Reduccin de Ruido
A pesar de ser tan sencillo, el promedio mvil es
muy til para reducir el ruido mientras mantiene
la forma de la seal
De todos los filtros lineales posibles, el
promedio mvil es el que ms reduce el ruido
preservando ms los cambios en la seal.
La reduccin de ruido es igual a la raz
cuadrada del nmero de puntos en el promedio.

Respuesta en Frecuencia
La respuesta en frecuencia no es ms que la
transformada de Fourier de la respuesta a
impulso
Esto es la funcin sinc

) sin(
) sin(
] [
f M
fM
f H

Respuesta en Frecuencia
Respuesta en Frecuencia
La velocidad de caida (roll-off) es lenta y
la atenuacin en la banda de corte es muy
mala
El filtro del promedio mvil no puede
separar una banda de frecuencia de la
otra
Generalmente un buen filtro en tiempo es
un mal filtro en frecuencia
Respuesta en Frecuencia
El filtro del promedio mvil es un muy
buen filtro suavizante (reductor de ruido)
El filtro del promedio mvil es un muy mal
filtro pasa bajo (separador de frecuencias)
Filtros Similares
En un mundo perfecto, solo tendramos
que lidiar con seales codificadas en
tiempo o en frecuencia
Pero hay aplicaciones donde ambos
dominios son importantes
Ej: Seales de Televisin
Filtros Similares
Para tratar con estos problemas se han
diseados filtros de promedio mvil de
mltiples pasadas
Consisten en pasar la seal por dos o ms
filtros de promedio mvil
Despus de 4 o ms pasadas, el filtro se
convierte en un Gausiano
Filtros Similares
Estos filtros son mejores que el promedio
mvil en tres aspectos
Mejor atenuacin de banda de corte
Sus extremos disminuyen lentamente
La respuesta a escalera es mas suave
La primera es importante, las dos
siguientes no tanto
Filtros Similares
La principal diferencia es el tiempo de
ejecucin del algoritmo
Usando un algoritmo recursivo el filtro del
promedio mvil se calcula muy
rpidamente en una computadora
Es el filtro ms rpido existente

Filtros Similares
Si usamos filtros Gauss o Blackman se
debe realizar una convolucin que es
mucho ms lenta
Un filtro de 100 puntos que usa Gaus es
1000 veces ms lento que uno de
promedio mvil
Implementacin Recursiva
Imagine pasar una seal x[] a travs de un filtro
de promedio mvil para formar una seal de
salida y[].

] 53 [ ] 52 [ ] 51 [ ] 50 [ ] 49 [ ] 48 [ ] 47 [ ] 50 [ * 7 x x x x x x x y
] 54 [ ] 53 [ ] 52 [ ] 51 [ ] 50 [ ] 49 [ ] 48 [ ] 51 [ * 7 x x x x x x x y
Implementacin Recursiva
Son aproximadamente los mismos clculos
Una manera eficiente de realizarlo sera:





p = (M-1)/2
q = p+1

] 47 [ ] 54 [ ] 50 [ ] 51 [ * 7 x x y y
] [ ] [ ] 1 [ ] [ q i x p i x i y i y
Implementacin en MATLAB
% Filtro de Promedio Movil
%
% Generar una seal digital
A = 1; % Amplitud
f = 1; % frequencia (Hz)
n = 0:0.25:10; % muestras
T = 0.1; % periodo (seg)
x0 = A*sin(2*pi*f*n*T);
stem(n,x0);
title(Seal Deseada: Seno');
xlabel('Tiempo (seg)');
ylabel('Amplitud');
Implementacin en MATLAB
% Generar Ruido blanco
L = length(n);
var = 0.2; % varianza
k = randn(L,1); % ruido no uniforme
mean1 = 0.2; % media
ruido = mean1 + sqrt(var)*k; % ruido blanco
stem(ruido)
title(Ruido Blanco');
xlabel('Tiempo (seg)');
ylabel('Amplitud');
Implementacin en MATLAB
% Mezclar la seal con el ruido
nn = reshape(noise,1,41);
x = x0 + nn;
plot(n,x)
title('Seal con ruido');
xlabel('Tiempo (seg)');
ylabel('Amplitud');
Implementacin en MATLAB
% Crear el Filtro de Promedio Movil de M
Puntos
M = 6;
B = ones(M,1)/M;
% Analizar las caractersticas del filtro
usando FVTOOL
fvtool(B,1);
Implementacin en MATLAB
% Filtrar la seal con ruido
y = filter(B,1,x);
plot(n,y)
title('Seal Filtrada');
label('Tiempo (seg)');
ylabel('Amplitud');

% Dibujar todas las seales
plot(n,x,'-',n,y,':,n,x0)
title(Todas las Seales');
xlabel('Tiempo (seg)');
ylabel('Amplitud');
Filtrado de ECG
%ECG
Fs=500;
x = repmat(ecg(Fs), 1, 8);
%Ruido
x = x + randn(1,length(x)).*0.18;
plot(x)
Filtrado ECG
%# Filtro de Promedio Mvil
window = 15;
h = ones(window,1)/window;
y = filter(h, 1, x);
plot(y)

Você também pode gostar