Professional Documents
Culture Documents
10/03/16
4.1
4.2
4.3
4.4
4.5
10/03/16
10/03/16
Convolucin y Filtrado
El fundamento del filtrado es la convolucin.
La funccin conv realiza convolucin en una dimensin. Por ejemplo
un vector con otro:
conv([1 1 1],[1 1 1])
ans =
12321
10/03/16
x(k )
y (k )
h(k )
10/03/16
0.1253
0.2877
-1.1465
h=
0.2500 0.2500 0.2500 0.2500
y=
-0.1081
-0.5245
-0.4932
-0.4213
-0.5998
-0.1834
-0.2147
-0.2866
b1 b2 z 1 bn 1 z n
a1 a2 z 1 a m 1 z m
X ( z)
10/03/16
10/03/16
Esta es una forma estndar en el dominio del tiempo para un filtro digital,
calculado iniciando con y(1) y suponiendo condiciones iniciales cero. En
forma progresiva se tiene:
y (1) b1 x(1)
y (2) b1 x(2) b2 x(1) a2 y (1)
y (3) b1 x(3) b2 x(2) b3 x(1) a2 y (2) a3 y (1)
10/03/16
Implementacin
Con la forma anterior el filtro se implementa con la funcin filtro. Por
ejemplo un filtro pasa-bajo tiene un solo polo.
b = 1;
a = [1 -0.9];
% Numerador
% Denominador
10/03/16
La Funcin filter
filter se implementa como la estructura de forma directa II transpuesta,
donde n-1 es el orden del filtro. Se conoce como una forma cannica que
tiene el mnimo de elementos de retardo.
x(m)
b(n)
-a(n)
b(3)
zn-1(m)
Z-1
-a(3)
z2(m)
b(1)
b(2)
Z-1
-a(2)
z1(m)
-1
y(m)
10/03/16
10
La Funcin filter
En su forma bsica el filtro inicializa a cero los retardos en la salida zi(1),
i = 1, ..., n-1. Esto es equivalente a entradas y salidas pasadas cero. Los
retardos iniciales en la salida se pueden fijar usando un cuarto parmetro
a filter, o teniendo acceso a los retardos finales de salida usando un
segundo parmetro de salida:
[y,zf] = filter(b,a,x,zi)
Con condiciones iniciales y finales se puede filtrar datos en segmentos,
especialmente con poca memoria. Con datos recabados en dos segmentos
de 5,000 puntos cada uno:
x1 = randn(5000,1); % Se generan dos secuencias de datos aleatorios
x2 = randn(5000,1);
Aqu x1, representa los primeros 10 minutos de datos y x2, los 10
minutos adicionales de datos.
10/03/16
11
10/03/16
12
10/03/16
13
FIR
H
y(n)
10/03/16
14
10/03/16
15
1.5
0.5
-0.5
b = ones(1,10)/10;
% Filtro
promedio con 10 puntos
y = filtfilt(b,1,x);
% Filtro nocausal
yy = filter(b,1,x);
% Filtrado normal
plot(t,x,t,y,'--',t,yy,':')
-1.5
10/03/16
-1
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
16
10/03/16
17
10/03/16
18
10/03/16
19
Filtro Butterworth
El anlisis estadstico y de filtros puede llevarse a cabo rpidamente.
As para disear filtros tipo Butterworth y Chevyshev, se usa los
comandos cheby1 o cheby2.
Ejemplo.- Para conocer la funcin de transferencia de un filtro
Butterworth de tercer orden y ancho de banda de 20 Hz.
10/03/16
20
4.4 Transformadas
10/03/16
21
10/03/16
22