You are on page 1of 22

Captulo 4

Toolbox Anlisis de Seales

Salvador Acha Daza, Ph. D.


Presidente del NIAT, S. C.

10/03/16

4.1
4.2
4.3
4.4
4.5

Fundamentos del procesamiento digital de


seales
Seales y modelos de sistemas lineales
Diseo de filtros digitales
Transformadas
Herramientas de anlisis espectral

10/03/16

4.1 Fundamentos del procesamiento


digital de seales

10/03/16

Implementacin de Filtros y Anlisis


Se describe cmo filtrar seales discretas en MATLAB.
Filtros y otras funciones en el Toolbox de Procesamiento de Seales.
Se discute cmo usar el Toolbox para analizar caractersticas del
filtro como:
respuesta al impuso
magnitud y fase en la respuesta
retardo y
localizacin de polos y ceros.

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

La salida de un filtro digital y(k) est relacionada con su


entrada x(k) por medio de convolucin con su respuesta al
impulso h(k).
Si la respuesta h(k) de un filtro digital al impulso es finita,
y la entrada x(k) tambin es finita, se implementa el filtro
usando conv.
Se guarda x(k) en un vector x, h(k) en un vector h, y se x =
-0.4326
convolucionan:
-1.6656
x = randn(5,1);
h = [1 1 1 1]/4;
y = conv(h,x);

x(k )

% vector aleatorio de longitud 5


% filtro promedio de tamao 4

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

Filtros y Funciones de Transferencia


En general, la transformada z, Y(z) de la salida de un filtro digital y(n) est
relacionada con la transformada z, X(z) de la entrada x(n) por:
Y ( z) H ( z) X ( z)

b1 b2 z 1 bn 1 z n

a1 a2 z 1 a m 1 z m

X ( z)

donde H(z) es la funcin de transferencia del filtro.


Las constantes b(i) y a(i) son los coeficientes del filtro y el orden es el
mximo de n y m.
Nota.- Los coeficientes del filtro inician con subndice 1, lo cual est acorde con
el esquema de MATLAB para manejar vectores.
MATLAB almacena los coeficientes en dos vectores rengln, uno para el
numerador y otro para el denominador.

10/03/16

Coeficientes y Nombres de los Filtros


Muchos nombres estndar de los filtros reflejan el nmero de coeficientes
de a y b presentes:
Cuando n = 0 (b es un escalar), el filtro es de Respuesta Infinita al
Impulso (IIR), todo-polos, recursivo, o filtro autoregresivo (AR).
Cuando m = 0 (a es un escalar), el filtro es de Respuesta Finita al
Impulso (FIR), todos-ceros, no recursivo, o filtro de promedios
mviles (MA).
Si tanto n y m son mayores de cero, el filtro es IIR, polos-ceros,
recursivo, o filtro autoregresivo y de promedios mviles (ARMA).
Los acrnimos AR, MA, y ARMA se aplican a filtros asociados a
procesos estocsticos.

10/03/16

Filtrado con la funcin Filtro


Se regresa a la ecuacin de diferencias, partiendo de la transformada z.
Se considera a(1) = 1 y se cambia el denominador al lado izquierdo,
tomando la inversa de la transformada z.
y (k ) a2 y (k 1) am 1 y (k m) b1 x(k ) b2 x(k 1) bn 1 x(k n)

La expresin tiene entradas y salidas pasadas:


y (k ) b1 x(k ) b2 x(k 1) bn 1 x(k n) a2 y (k 1) am 1 y (k m)

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

Los vectores b y a representan los coeficientes de un filtro en forma de


funcin de transferencia. Para aplicar este filtro a un conjunto de datos se
usa:
y = filter(b,a,x);
filter arroja tantos valores en salida como muestras tenga la entrada, o sea
que la longitud de y es la misma que la longitud de x. Si el primer
elemento de a no es 1, el filtro divide los coeficientes por a(1) antes de
trabajar la ecuacin de diferencias.

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)

y (m) b(1) x (m) z1 (m 1)


z1 (m) b(2) x(m) z 2 (m 1) a (2) y (m)

z n 2 (m) b(n 1) x (m) z n 1 (m 1) a (n 1) y (m)


z1 (m) b(n) x(m) a (n) 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

La secuencia completa es x = [x1;x2]. Si no se tiene memoria suficiente


para manejar la secuencia combinada, se filtran las secuencias x1 y x2
una a la vez. Para dar continuidad a las secuencias filtradas, se usan las
condiciones finales de x1 como condiciones iniciales para filtrar x2:
[y1,zf] = filter(b,a,x1);
y2 = filter(b,a,x2,zf);
La funcin filtic genera condiciones iniciales para el filtro. filtic calcula el
vector de retardos para que el comportamiento del filtro refleje entradas
pasadas y las salidas especificadas por el usuario. Para obtener los
mismos valores de retardo en salida zf como arriba al usar filtic, se usa:
zf = filtic(b,a,flipud(y1),flipud(x1));
Esto puede ser til cuando se filtran secuencias cortas de datos, ya que las
condiciones iniciales apropiadas ayudan en disminuir los efectos
transitorios del arranque.

10/03/16

12

Otras funciones para filtrado


Adems de filter, otras funciones en el Toolbox efectan la
operacin bsica de filtrado.
upfirdn, que lleva a cabo un filtrado FIR con remuestreo
filtfilt, elimina la distorsin de fase en el proceso de
filtrado
fftfilt, es una operacin de filtrado FIR en el dominio de
la frecuencia y
latcfilt, trabaja usando una implementacin de lattice.

10/03/16

13

Implementacin de un Banco de Filtros Multitasa


La funcin upfirdn cambia la tasa de muestreo de una seal en una
relacin entera P/Q.
Calcula el resultado de una cascada de tres sistemas que efecta las
siguientes tareas:
Levantar la muestra (insercin de ceros) en un factor entero p
Filtrado por un filtro FIR h
Reduciendo la muestra en un factor entero q
x(n)

FIR
H

y(n)

As, cambiar la tasa de muestreo de 44.1 kHz a 48 kHz. Primero se encuentra la


razn menor de conversin entera p/q.
d = gcd(48000,44100);
p = 160
p = 48000/d;
q = 147
q = 44100/d;
La conversin de tasa de muestreo se logra con la funcin: y = upfirdn(x,h,p,q)

10/03/16

14

Esta cascada de operaciones se implementa eficientemente usando filtrado


polifsico, que es central al concepto de filtrado con mltiples tasas.
La calidad de re-muestreo descansa en la calidad del filtro FIR h.
Bancos de filtros pueden implementarse usando upfirdn y definiendo al
filtro h como matriz, con un filtro FIR por columna.
Un vector de seales se pasa independiente a travs de cada filtro FIR,
resultando en una matriz de seales de salida.
Otras funciones que realizan filtrado multitasa (con filtro fijo) son:
resample, interp, y decimate.

10/03/16

15

Por ejemplo, una seal con 1 seg. de


duracin muestreada a 100 Hz,
compuesta de dos senoides a 3 Hz y 40
Hz es
fs = 100;
t = 0:1/fs:1;
x = sin(2*pi*t*3)+.25*sin(2*pi*t*40);

1.5

0.5

Se crea un filtro FIR con 10 puntos para


promedio, y se filtra x usando tanto el
filtro y filtfilt para comparar.

-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

Ambas versiones filtradas eliminan la senoide de 40 Hz. Se muestra cmo


difieren filter y filtfilt.
filtfilt muestra una lnea en fase con la senoide original de 3 Hz, mientras
que filter se retrasa cerca de cinco muestras.
La amplitud es menor debido al efecto de la magnitud al cuadrado de filtfilt.
filtfilt reduce los transitorios iniciales de filter seleccionando
cuidadosamente las condiciones iniciales y adicionando a la secuencia de
entrada una secuencia corta y reflejada.
Para mejores resultados se debe asegurar que la secuencia que se filtra tiene
una longitud por lo menos de tres veces el orden del filtro y se lleva a cero en
ambos extremos.

10/03/16

17

4.2 Seales y modelos de sistemas


lineales

10/03/16

18

4.3 Diseo de filtros digitales

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

4.5 Herramientas de anlisis espectral

10/03/16

22