Está en la página 1de 378

5 Curso-Tratamiento Digital de Seal

Seales y Sistemas

17/11/99

Seales y Clasificacin
Sistemas y Clasificacin
Respuesta al impulso de los sistemas

Captulo 1: Seales y Sistemas

5 Curso-Tratamiento Digital de Seal

Seales

El procesamiento de seales es el objeto de la asignatura, as que no vendra mal


comentar algunas cosas sobre ellas.
En primer lugar las seales no tienen gran inters en s mismas si no nos es posible
transmitirlas y recibirlas. Las seales, por tanto, estn muy ligadas a la
comunicacin y su procesamiento es de vital importancia en la llamada era de la
informacin.
Pero qu es informacin? La informacin est asociada de alguna manera al
conocimiento o al significado que proporciona esa informacin. Las seales
obviamente llevan consigo la informacin.
Sin embargo, Shannon desarroll otro concepto de informacin desprovisto del
significado que pueda extraerse o del conocimiento que pueda derivarse de esa
informacin.
Supongamos que una fuente de informacin enva una serie de smbolos a un
receptor. Llamamos X al conjunto de smbolos formado por :
X={a1 , a2 , a3 ,..., aN}

17/11/99

Captulo 1: Seales y Sistemas

5 Curso-Tratamiento Digital de Seal

Seales

Los smbolos se envan a un receptor de acuerdo con sus probabilidades respectivas


y hacemos la suposicin (no precisamente acertada), de que las probabilidades son
independientes unos de otras (fuente de informacin sin memoria) . Es decir, envar
un smbolo ai no cambia la probabilidad de enviar el smbolo aj a continuacin. Sabemos que, en general, esto no es cierto ya que por ejemplo si envamos el caracter
q, la probabilidad de que el siguiente smbolo sea el caracter u aumenta.
Cada uno de los smbolos ai tiene una probabilidad de ocurrir pj.
Los smbolos pueden ser caracteres del alfabeto, nmeros, bits, puntos, rayas, etc.
Shannon defiende que en el caso de una fuente de informacin sin memoria, la informacin proporcionada por el smbolo ai depende depende nicamente de su probabilidad pi. Y define que la informacin del smbolo ai es I(pi)=-log pi. Si se toma
el 2 como base del logaritmo la unidad de informacin se denomina bit.
Se observa que la informacin es una funcin decreciente de la probabilidad, lo que
implica que un smbolo proporciona ms infomacin cuanta ms incertidumbre
(menos probabilidad) tenga.

17/11/99

Captulo 1: Seales y Sistemas

5 Curso-Tratamiento Digital de Seal

Seales

El contenido total de informacin H(X) proporcionado por una fuente de informacin sin memoria de un conjunto X de smbolos ser la suma ponderadas de las informaciones de cada smbolo:
N
N
H ( X ) = pi I i = pi log pi
i=1

i=1

A este valor, que representa la informacin ofrecida por una fuente, Shannon le
quiso llamar entropa, pero fue convencido por colegas para llamarle informacin.
El nombre entropa no era descabellado ya que al igual que en la entropa termodinmica (que creca a medida que aumentaba el desorden), aqu la informacin
aumenta a medida que aumenta la incertidumbre sobre lo que recibimos.
Una vez fundamentada su teora, Shannon fue ms all y dedujo que el valor H(X)
era tambin el nmero mnimo de bits por smbolo que pueden utilizarse para
enviar informacin con los smbolos de X y que la probabilidad de error en la decodificacin sea despreciable. De esta forma sent los lmites tericos de la compresin de seales. La mencin a los lmites tericos se hace porque Shannon no se
preocupa del algoritmo decodificador de smbolos, que en el caso de utilizar un nmero de bits H(X) ser muy complejo.

17/11/99

Captulo 1: Seales y Sistemas

5 Curso-Tratamiento Digital de Seal

Seales

En un caso real, el lmite en el nmero de bits por smbolo vendr impuesto por la
complejidad del algoritmo (y la capacidad de procesamiento disponible) y no por el
valor H(X). De ah que se hable de lmite terico.
Las seales con las que vamos a tratar son lgicamente seales elctricas, pero eso
no las hace diferentes de los smbolos de los que hemos estado hablando hasta
ahora. De hecho, los smbolos son ahora, para nosotros, seales elctricas.

17/11/99

Captulo 1: Seales y Sistemas

5 Curso-Tratamiento Digital de Seal

Seales

Trataremos con 4 tipos de seales:

17/11/99

Analgicas, x(t) : Amplitud y Tiempo continuos.


Muestreadas, xs[n] : Tiempo Discreto, Amplitud continua.
Cuantizada, xQ(t) : Tiempo Continuo, Amplitud discreta.
Digital, xQ[n] : Tiempo y Amplitud discretos.

Captulo 1: Seales y Sistemas

5 Curso-Tratamiento Digital de Seal

Seales

Clasificacin de seales basada en su duracin:

Causales: Son 0 para t<0. Se definen slo para el eje positivo de t.


Anticausales: Son 0 para t>0. Se definen slo para el eje negativo de t.
No causales: Se definen para ambos ejes de t.
Continuas: Se definen para todo tiempo t.
Peridicas: xp(t) = xp(tnT), donde T es el periodo y n es un entero.

Clasificacin de seales basadas en simetras:


Simetra Par: x(t) = x(-t)
Simetra Impar: x(t) = -x(-t)
Una seal no simtrica puede siempre expresarse como la suma de
una funcin par xe(t) y una funcin impar xo(t) :
xe(t) = (x(t)+x(-t))/2
xo(t) = (x(t)-x(-t))/2

17/11/99

Captulo 1: Seales y Sistemas

5 Curso-Tratamiento Digital de Seal

Seales

Clasificacin de seales basada en Energa y Potencia:


Energa de una seal : E = x( t ) dt

17/11/99

Potencia de una seal :

1
Px = lim
T0 T0

x( t )

dt

T0

Una seal se dice que es de energa si Ex es finito, lo que implica


que Px es 0. Ej. Pulsos limitados en el tiempo.
Una seal se dice que es de potencia si Px es finito, lo que implica
que Ex es infinito. Ej. Una seal peridica.

Captulo 1: Seales y Sistemas

5 Curso-Tratamiento Digital de Seal

Seales

Catlogo de algunas seales:

Escaln unidad : u(t)


Rampa : r(t)=t u(t)
Pulso : u(t+1/2)-u(t-1/2)
Triangular : tri(t)=r(t+1)-2r(t)+r(t-1)

Sinc : sin c( t ) =

Impulso: Tambin llamada funcin delta o funcin de Dirac:

sin( t )
t
( t ) = 0, t 0

( )d = 1

17/11/99

Captulo 1: Seales y Sistemas

5 Curso-Tratamiento Digital de Seal

Seales

Algunas propiedades importantes del impulso:


[ ( t )] =

1
( t )

x( t ) ( t ) = x( ) ( t )

x( t ) ( t ) dt = x( )

17/11/99

Captulo 1: Seales y Sistemas

10

5 Curso-Tratamiento Digital de Seal

Seales
Funcin delta de Dirac

Funcin triangular unidad

Funcin rampa unidad


2

0.8

0.8

1.5

0.6

0.6

0.4

0.4

0.2

0.2

0.5
0 -2 -1.5 -1 -0.5 0

0.5 1

1.5 2

Tiempo (t)

-2

Funcin pulso unidad

-1

Tiempo (t)

0
-2

Funcin escaln unidad

Tiempo (t)

Funcin Sinc
1

0.8

0.8

0.6

0.6

0.4

0.4

0.4

0.2

0.2

0.2

0.8

0
-2

17/11/99

-1

Tiempo (t)

0
-2

0.6

0
-1

Tiempo (t)

-0.2
2

-5

Tiempo (t)
Captulo 1: Seales y Sistemas

11

5 Curso-Tratamiento Digital de Seal

Seales

Operaciones con seales:

17/11/99

Desplazamiento en el tiempo: x(t-2), desplazamiento a la derecha.


Compresin del tiempo: x(2t)
Dilatacin del tiempo: x(t/2)
Reflexin: x(-t)

Captulo 1: Seales y Sistemas

12

5 Curso-Tratamiento Digital de Seal

Seales en MATLAB

Algunas seales en MATLAB


>> y = diric(x,N)
La funcin de Dirichlet se define de la siguiente forma:

D( x ) =

sin( Nx 2)

N sin( x 2)

Los argumentos de entrada es un vector x en cuyos puntos


queremos calcular la funcin de Dirichlet y el parmetro N, que
es el nmero de mximos de la funcin en el intervalo (0-2).
>> y = sawtooth(x,width)
Genera una seal en diente de sierra con periodo 2 para los
elementos del vector x. El parmetro width es un escalar entre
0 y 1, y describe la fraccin del periodo 2 en el que ocurre el
mximo.
>> y = sinc(x)
La funcin sinc(x)=sin(x)/(x).
>> y = square(x,duty)
Genera una onda cuadrada de periodo 2 con un duty cycle dado.
El parmetro duty es el porcentaje del periodo en el cual la
seal es positiva.

17/11/99

Captulo 1: Seales y Sistemas

13

5 Curso-Tratamiento Digital de Seal

Sistemas

17/11/99

Un sistema fsico es un conjunto de dispositivos


conectados entre s, cuyo funcionamiento est sujeto a
leyes fsicas. Desde nuestro punto de vista, un sistema es
un procesador de seales.
La seal o seales a ser procesadas forman la excitacin o
entrada del sistema. La seal procesada es la respuesta o
salida del sistema.
El anlisis de sistemas implica el estudio de la respuesta
del sistema a entradas conocidas.
La sntesis de sistemas se realiza especificando las salidas
que deseamos para una entradas dadas y estudiando que
sistema es el ms adecuado (Identificacin de sistemas).
Captulo 1: Seales y Sistemas

14

5 Curso-Tratamiento Digital de Seal

Sistemas

La representacin normal de un sistema (tiempo continuo) se


realiza normalmente a travs de ecuaciones diferenciales. Se
relacionan la salida y(t) y la entrada x(t) mediante constantes,
parmetros y variables independientes (tiempo):
dny
d n1 y
dy
d mx
d m1 x
dx
a 0 n + a1 n1 + ...+ a n1 + a n y = b0 m + b1 m1 + ...+ bm1 + bm x
dt
dt
dt
dt
dt
dt

Clasificacin de los sistemas:

17/11/99

Lineales: Los coeficientes no dependen de x y. No hay trminos


constantes.
Nolineales: Los coeficientes dependen de x y. Hay trminos
constantes.
Invariante en el tiempo: Los coeficientes no dependen de t.
Variante en el tiempo: Los coeficientes son funciones explcitas de t.
Captulo 1: Seales y Sistemas

15

5 Curso-Tratamiento Digital de Seal

Sistemas

A los sistemas lineales se les puede aplicar el principio de


superposicin:

Un sistema es invariante en el tiempo cuando la respuesta


y(t) depende slo de la forma de la entrada x(t) y no del
tiempo en que se aplica. Matemticamente:

17/11/99

La respuesta de un sistema a una seal de entrada x(t) formada por


la suma de dos o ms seales (x(t) = x1(t)+ x2(t) +...+ xn(t)) es
igual a la suma de las respuestas del sistema a cada una de las
seales (y(t) = y1(t)+ y2(t) +...+ yn(t)).
La respuesta de un sistema a una seal Kx(t) es igual a K veces la
respuesta a x(t).

Si L{x(t)} = y(t), entonces L{x(t-t0)} = y(t- t0), donde L{} es un


operador matemtico que representa el sistema fsico en cuestin.

Captulo 1: Seales y Sistemas

16

5 Curso-Tratamiento Digital de Seal

Sistemas

Los sistemas que veremos en esta asignatura son del tipo lineal
invariante en el tiempo (LTI).
Respuesta al impulso de un sistema: Se representa por h(t) y es la
respuesta de un sistema LTI a un impulso unidad (t).
La respuesta al impulso nos proporciona la base para estudiar la
respuesta a cualquier tipo de entrada. Por ello, se le llama tambin
funcin de transferencia del sistema.
Las mismas conclusiones acerca de los sistemas pueden obtenerse
en caso de que el sistema sea digital. Aqu las seales vienen dadas
por secuencias y la ecuacin del sistema por ecuaciones diferencia.
y[n] + A1 y[n 1] + A2 y[n 2]++ AN y[n N ]
= B0 x[n] + B1 x[n 1]++ BM x[n M ]

17/11/99

Captulo 1: Seales y Sistemas

17

5 Curso-Tratamiento Digital de Seal

Convolucin

17/11/99

Concepto y Definicin de Convolucin


Propiedades
Correlacin y Autocorrelacin
Convolucin Discreta

Captulo 2: Convolucin 1

5 Curso-Tratamiento Digital de Seal

Concepto y Definicin de Convolucin

Mediante la convolucin calcularemos la respuesta de un


sistema (y(t)) a una entrada arbitraria (x(t)).
Dos condiciones para realizar la convolucin:

Sistema LTI.
La respuesta al impulso del sistema es h(t).

Basndonos en el principio de superposicin y en que el


sistema es invariante en el tiempo:
Si L{( t )} = h( t ) L{K ( t t 0 )} = K h( t t 0 )

Una seal arbitraria de entrada x(t) puede expresarse como un


tren infinito de impulsos. Para ello, dividimos x(t) en tiras
rectangulares de anchura ts y altura x(k ts). Cada tira la
reemplazamos por un impulso cuya amplitud es el rea de la
tira : t s x ( kt s ) (t kt s )

17/11/99

Captulo 2: Convolucin 2

5 Curso-Tratamiento Digital de Seal

Concepto y Definicin de Convolucin


x(t)

t
ts
k =

La funcin xs(t) que aproxima x(t) es : xs ( t ) = ts x( kts ) ( t kts )


k =
x(t) es el lmite cuando ts d0, kts :
x( t ) = lim

ts 0

k =

t x( kt ) ( t kt
s

)=

k =

x ( ) ( t ) d

Y aplicando el principio de superposicin:


y( t ) = L{x (t )} = L x ( ) (t ) d = x( ) L{( t )} d = x( ) h( t ) d = x (t ) h(t )

17/11/99

Captulo 2: Convolucin 3

5 Curso-Tratamiento Digital de Seal

Concepto y Definicin de Convolucin

Mediante convolucin hemos sido capaces de determinar la


respuesta del sistema a una seal de entrada a partir de la
respuesta del sistema a una entrada impulso.
La funcin h(t) se define para t0 y decrece cuando t,
para la mayora de los sistemas fsicos. Por tanto,

17/11/99

La respuesta en t0 depende de los valores actual y pasados de la entrada


y de la respuesta al impulso.
Los valores ms recientes de x(t) son multiplicados por sus
correspondientes ms antiguos (y ms grandes) valores de h(t).

Captulo 2: Convolucin 4

5 Curso-Tratamiento Digital de Seal

Propiedades

Propiedades (se supone que x(t)*h(t)=y(t)):

[ x1 ( t ) + x2 ( t )] h( t ) = y1 ( t ) + y 2 ( t )
[K1 x1 ( t ) + K 2 x2 ( t )] h( t ) = K1 y1 ( t ) + K 2 y 2 ( t )
x( t ) h( t ) = y( t )
x( t ) h( t ) = y( t )
( t ) h( t ) = h( t )
x( t ) h ( t ) = x ( t ) h( t ) = y ( t )
x ( t ) h ( t ) = y ( t )
x m ( t ) h n ( t ) = y m+ n ( t )
x( t ) h( t ) =

17/11/99

1
y( t )

Captulo 2: Convolucin 5

5 Curso-Tratamiento Digital de Seal

Correlacin y Autocorrelacin

Correlacin: Es una operacin similar a la convolucin, con la


diferencia de que en la correlacin no hay que reflejar una
de las seales:
Rxy (t ) = x (t ) y(t ) =

x( ) y( t )d = x (t ) y( t )

Esta expresin nos indica que la relacin que existe entre la convolucin y
la correlacin.
La correlacin nos da una medida de la similitud entre dos seales. No
existe la propiedad conmutativa por lo que dadas dos seales x(t) e y(t) se
definen dos correlaciones:

Rxy ( t ) = x( t ) y( t ) =

x( ) y( t )d

Ryx ( t ) = y( t ) x( t ) =

y( )x( t )d

que slo coinciden en t=0 : Rxy(0)= Ryx(0)


17/11/99

Captulo 2: Convolucin 6

5 Curso-Tratamiento Digital de Seal

Correlacin y Autocorrelacin

La correlacin de una seal consigo misma se denomina


autocorrelacin:

Rxx ( t ) = x( t ) x( t ) =

x( )x( t )d

La autocorrelacin representa la simulitud entre una seal y su


desplazada. El mximo de autocorrelacin se obtiene cuando no hay
desplazamiento (t=0). La autocorrelacin es simtrica con respecto al
origen, ya que Rxx(t)=Rxx(-t).

17/11/99

Captulo 2: Convolucin 7

5 Curso-Tratamiento Digital de Seal

Convolucin Discreta

Convolucin discreta :

Cuando se trata de hacer un procesamiento digital de seal no tiene


sentido hablar de convoluciones aplicando estrictamente la definicin ya
que slo disponemos de valores en instantes discretos de tiempo. Es
necesario, pues, una aproximacin numrica.
Para realizar la convolucin entre dos seales, se evaluar el rea de la
funcin x()h(t-). Para ello, disponemos de muestreos de ambas
seales en los instantes de tiempo nts , que llamaremos xs[k] y hs[n-k]
(donde n y k son enteros). El rea es, por tanto,
ys [n] =

k =

xs [k ]hs [n k ] =ts

x [k ]h [n k ]

k =

La convolucin discreta se define para un intervalo de muestreo ts=1 :


y[n] = x[n] h[n] =

17/11/99

x [k ]h [n k ]

k =

Captulo 2: Convolucin 8

5 Curso-Tratamiento Digital de Seal

Convolucin Discreta
h[k]

-5

x[n-k]

-5

x[n-k]h[k]

-5

17/11/99

A veces es posible hacer una convolucin discreta analtica. Veamos un


ejemplo. Se trata de hacer la convolucin de una seal x[n]=nu[n+1] con
h[n]=a-nu[n], siendo a<1.

Captulo 2: Convolucin 9

5 Curso-Tratamiento Digital de Seal

Convolucin Discreta
y[n] =

k u[k + 1] a

(nk )

u[n k ]

( n +1)

k =

k a

k =1

( n k )

=a

+a

ka

k =0

= a ( n +1) + a n (a + 2 a 2 + 3a 3 ++ na n )
= a ( n +1) + a n a (1 + 2 a + 3a 2 ++ na n 1 )
=a

17/11/99

( n +1)

a n +1
+
1 (n + 1)a n + na n +1 ]
2 [
(1 a)

En la prctica se trabaja con secuencias de longitud finita. Para hacer


la convolucin, una de las secuencias se refleja y se desplaza
sucesivamente. Veremos algunos mtodos para calcular la convolucin
a partir de dos secuencias.

Captulo 2: Convolucin 10

5 Curso-Tratamiento Digital de Seal

Convolucin Discreta

Mtodo de la tira deslizante (Sliding Strip Method)

Sea h[n]={2,5,0,4}, x[n]={4,1,3}, ts=1/2. Las dos secuencias


comienzan en n=0.

Hacemos el reflejo de una de ellas, x[-n]={3,1,4}.


Alineamos las secuencias y las sumamos y desplazamos sucesivamente.
t=0
h
x




Suma=8
y s[ 0 ] = 8 = 4
t=3t s

h
x

17/11/99




Suma=31
y s[ 3 ] = 3 1 = 1 5 . 5

t=t s



Suma=22
y s[ 1 ] = 2 2 = 1 1
t=4t s



Suma=4
y s[ 4 ] = 4 = 2

t=2t s



Suma=11
y s[ 2 ] = 1 1 = 5 . 5
t=5t s



Suma=12
y s[ 5 ] = 1 2 = 6

Captulo 2: Convolucin 11

5 Curso-Tratamiento Digital de Seal

Convolucin Discreta

La convolucin discreta y[n] es {8,22,11,31,4,12}. La convolucin


numrica es {4,11,5.5,15.5,2,6}.

Mtodo de las Suma por Columnas

Hacemos el mismo ejemplo. No es necesario reflejar una de las


secuencias.
n

h
x

2 5
4 1
8 20
2

17/11/99

0
3
0
5
6
8 22 11

16
0 4
15 0 12
31 4 12

y[n]={8,22,11,31,4,12}, n=0,1,2,...,5

Captulo 2: Convolucin 12

5 Curso-Tratamiento Digital de Seal

Convolucin Discreta

Mtodo de la malla.
h[n]


8
22
11

20

16

1 x[n]

15

12

31

12

y[n]={8,22,11,31,4,12}, n=0,1,2,...,5

17/11/99

Captulo 2: Convolucin 13

5 Curso-Tratamiento Digital de Seal

Convolucin Discreta

Propiedades sobre la duracin de la convolucin discreta.

El ndice del comienzo de la convolucin es la suma de los ndices de


comienzo de las respectivas seales. Si las dos seales comienzan en
n=n0 y n=n1, la convolucin comienza en n=n0+n1.
Para dos secuencias de duracin M y N, su convolucin se extiende
durante M+N-1 muestreos.

Propiedades de la convolucin discreta (x[n]*h[n]=y[n])


y[n] =

x[k ]h[n k ]

k =

[ Ax1 + Bx 2 ] h = y1 + y2
x[n] h[n ] = x[n ] h[n] = y[n ]
x[n ] h[n ] = y[n ]

17/11/99

Captulo 2: Convolucin 14

5 Curso-Tratamiento Digital de Seal

Convolucin Discreta

[ n] h[ n] = h[n]

h[ n] = [ n] h[n] = {u[ n] u[ n 1]} h[n] = yu [ n] yu [ n 1]


u[ n] x[ n] =

x[ k ]

k =

{x[n] x[n 1]} h[n] = y[n] y[n 1]


Correlacin discreta : Se definen de igual manera que en el
caso continuo, as como la autocorrelacin.

Rxy [n] =

x[k ]y[k n]

para n = 0,1,2,3,

k =

Ryx [n] =

y[k ]x[k n]

para n = 0,1,2,3,

k =

17/11/99

Captulo 2: Convolucin 15

5 Curso-Tratamiento Digital de Seal

Convolucin y Correlacin en MATLAB

MATLAB dispone de dos funciones para el clculo de convoluciones y


correlaciones.
>> y = conv(x,h)
Hace la convolucin de los vectores x y h. El vector resultante y
tiene un tamao igual a length(x)+length(h)-1
>> rxy = xcorr(x,y)
Hace la correlacin de los vectores de M elementos x e y. Devuelve
un vector de 2M-1 elementos.
>> rxx = xcorr(x)
Hace la autocorrelacin del vector x de M elementos. Devuelve un
vector de 2M-1 elementos.

17/11/99

Captulo 2: Convolucin 16

5 Curso-Tratamiento Digital de Seal

Series y Transformada de Fourier

17/11/99

Series de Fourier
Transformada de Fourier

Captulo 3: Series y Transformada de Fourier

5 Curso-Tratamiento Digital de Seal

Series de Fourier

Las series de Fourier describen seales peridicas como una


combinacin de seales armnicas (sinusoides).
Con esta herramienta podemos analizar una seal peridica en
trminos de su contenido frecuencial o espectro.
Nos permitir establecer la dualidad entre tiempo y frecuencia,
de forma que operaciones realizadas en el dominio temporal
tienen su dual en el dominio frecuencial.
Forma trigonomtrica de las series de Fourier: se pretende
describir una funcin peridica xp(t) de periodo T (frecuencia
fundamental f0=1/T, 0=2 f0).
a0
+ a1 cos( 0t ) +  + ak cos(k 0t ) +  + b1 sin( 0t ) +  + bk sin(k 0t ) + 
2
a0
= + ak cos(k 0t ) + bk sin(k 0t )
2 k =1

x p (t ) =

17/11/99

Captulo 3: Series y Transformada de Fourier

5 Curso-Tratamiento Digital de Seal

Series de Fourier

En forma exponencial:

x p (t ) =

X [k ]exp( jk
s

t)

k =

Se ha empleado la ecuacin de Euler : e j = cos j sen


1
Se demuestra que
X s [k] = (ak jbk )
2
1
X S [k ] = xp (t )exp( jk0t)dt
Clculo de los coeficientes
TT

Relacin de Parseval

17/11/99

1
2
2
Px = x p (t )dt = Xs [k ]
T T
k =

La potencia contenida en una seal puede evaluarse a partir de los


coeficientes de su correspondiente serie de Fourier.

Captulo 3: Series y Transformada de Fourier

5 Curso-Tratamiento Digital de Seal

Series de Fourier

Espectro de seales peridicas : Los coeficientes Xs[k] son los


coeficientes espectrales de la seal xp(t).
La grfica de esos coeficientes en funcin del ndice armnico
k de las frecuencias k0, se denomina espectro.
Hay dos tipos de grficos, uno de magnitud con los coeficientes |Xs[k]| y otro de la fase de Xs[k].
La funcin |Xs[k]| as como la fase de Xs[k] son funciones
discretas de la frecuencia.
Es importante saber cuantos armnicos sern necesarios para
reconstruir una seal dada. Para ello utilizaremos la relacin
de Parseval.

17/11/99

Captulo 3: Series y Transformada de Fourier

5 Curso-Tratamiento Digital de Seal

Series de Fourier

Un parmetro importante en la reconstruccin de seales es la


velocidad de convergencia, o lo que es lo mismo la velocidad
a la cual los coeficientes de Fourier tienden a 0.
Propiedades Superposicion x (t ) + y (t ) X [k ] + Y [k ]
p

Derivada

x p (t ) jk 2f 0 X S [k ]
t

(k 0)

X [k ]
+C
jk 2f 0

Integral

Retraso

x p (t ) X S [k ] exp( jk 2f 0 )

Escalado

x p (t ) X S [k ] (armonicos en f = kf 0 )

x p (t )dt

(k 0 )

x p ( t ) X S [ k ] = X S* [k ]
1
{ X S [k m] + X S [k + m]}
2

Modulacion

cos( m 2f 0 t ) x p (t )

Convolucion

1
x p (t + ) + x p (t ) cos(2f0 ) X S [k ]
2
x p (t ) y p (t ) X S [k ] YS [k ]

x p (t ) y p (t ) X S [k ]YS [k ]
17/11/99

Captulo 3: Series y Transformada de Fourier

5 Curso-Tratamiento Digital de Seal

Series de Fourier

Respuesta de un sistema a entradas peridicas

Tenemos un sistema cuya respuesta a impulso es h(t). Si sometemos


esta sistema a una entrada armnica x(t)=exp(jt), la respuesta y(t)
ser la convolucin de h(t) con x(t):
y(t ) =

h( ) exp{ j (t )}d = exp( jt ) h( ) exp( j )d =x (t ) H ( )

Como toda seal xp(t) puede ser expresada como una suma infinita de
armnicos y aplicando el principio de superposicin:
x p (t ) =

k =

17/11/99

X S [k ] exp( jk 0 t ) y p (t ) =

X S [k ]H[k 0 ]exp( jk 0 t )

k =

La respuesta del sistema a una seal peridica es tambin una seal


peridica de la misma frecuencia que la seal de entrada, pero con
diferentes magnitudes y fases.
La respuesta de un sistema a entradas armnicas nos da la respuesta
estacionaria del sistema.
Captulo 3: Series y Transformada de Fourier

5 Curso-Tratamiento Digital de Seal

Series de Fourier

Efecto Gibbs

17/11/99

Para seales discontinuas, su reconstruccin a partir de las series de


Fourier produce el llamado efecto Gibbs, que consiste en la aparicin
de un pico del 9% en el punto de discontinuidad. Este efecto se da
incluso cuando se emplea un nmero grande de armmicos para la
reconstruccin.
Si queremos aproximar una funcin peridica con discontinuidades
que tiene infinitos armnicos, tendremos que truncar la funcin hasta
el armnico N. Esto nos va a producir el efecto Gibbs.
Para eliminarlo se utilizan las llamadas ventanas espectrales que
suavizan la reconstruccin de la funcin. Veremos ms acerca de estas
ventanas en captulos prximos.

Captulo 3: Series y Transformada de Fourier

5 Curso-Tratamiento Digital de Seal

Transformada de Fourier

Queremos ampliar el concepto de series de Fourier a seales


no peridicas. Podemos visualizar una seal no peridica
como una seal continua de periodo infinito :

El espaciado entre frecuencias se aproxima a 0 y es por tanto una


funcin continua.
La seal pasa a ser de potencia a seal de energa.
Los coeficientes Xs[k] son 0. Ya no es un indicador del contenido
espectral de la seal.

Se define la Transformada de Fourier de x(t) como


X ( f ) = lim T X [ k ] = x ( t ) exp( j 2 ft ) dt
Relacin entre las Series y la Transformada de Fourier:

17/11/99

X() es la funcin envolvente de Xs[k].


Si muestreamos X() a intervalos f0, la funcin resultante es el
espectro de una seal peridica de periodo T0=1/f0.
Captulo 3: Series y Transformada de Fourier

5 Curso-Tratamiento Digital de Seal

Transformada de Fourier

Es decir, muestrear en el dominio frecuencial se corresponde con


seales peridicas en el dominio temporal.
X ( f ) = T X S [k ] k f

X S [k ] =

X (f
T

0=

)
f =k f0

Transformada Inversa de Fourier para una funcin X() :


x (t ) =

X ( f ) exp( j 2 ft ) df

17/11/99

Captulo 3: Series y Transformada de Fourier

5 Curso-Tratamiento Digital de Seal

Transformada de Fourier

Propiedades de la Transformada de Fourier

Superposicion F {ax(t ) + by(t )} = aX( ) + bY ( )


Derivada

F {x (t )} = jX( )

F {x n (t )} = ( j ) n X( )
t

Desplazamiento F {x( t )} = e j X ( )
F {e j 2t x( t )} = X ( f )

Convolucion

F { j 2tx(t )} = 2X ( )

F { x(t ) y(t )} =

F {( j 2t ) n x(t )} = (2 ) n X n ( )
Integral
Escalado

17/11/99

t
1
F x(t )dt =
X( ) + X(0) (w)
j

F {x(t )} = X

F { x(t ) y( t )} = X ( )Y ( )

Parseval

1
[ X ( ) Y ( )]
2

1
2
(
)
(
)
x
t
dt
=
X
d

Teorema
del valorInicial x(0 + ) = lim [ jX ( )]

Captulo 3: Series y Transformada de Fourier

10

5 Curso-Tratamiento Digital de Seal

Transformada de Fourier

Podemos utilizar la Transformada de Fourier para analizar la


respuesta a sistemas LTI, valindonos del hecho de que
convolucin en el tiempo equivale al producto en el dominio
frecuencial.
Si la respuesta y(t) a un sistema con una respuesta a impulso
h(t) y entrada x(t) con condiciones iniciales cero es
y(t ) = x (t ) h(t )

Aplicando la Transformada de Fourier a ambos miembros,


Y ( w ) = X ( ) H ( )

H()=Y()/X() es la funcin de Transferencia del sistema. Esta


nos permite analizar la respuesta frecuencial del sistema.
Como se vi en las Series de Fourier, se puede analizar la respuesta en el
estado estacionario del sistema a partir de H().

17/11/99

Captulo 3: Series y Transformada de Fourier

11

5 Curso-Tratamiento Digital de Seal

Transformada de Fourier

Limitaciones de la Transformada de Fourier

El sistema debe tener condiciones iniciales cero.


Entradas que no son seales de energa requieren el uso de impulsos.

Por ello se extiende el concepto de la Transformada de


Fourier a la Transformada de Laplace.

17/11/99

Captulo 3: Series y Transformada de Fourier

12

5 Curso-Tratamiento Digital de Seal

Espectro de la seal x(t) = rect(t)


1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-15

17/11/99

-10

-5

0
5
Frecuencia (Hz)

10

15

Captulo 3: Series y Transformada de Fourier

13

5 Curso-Tratamiento Digital de Seal

Reconstruccin de x(t) (15 armnicos) a partir de muestreos en el espectro


Muestreos cada 0.25 Hz
1.2

1
0.8
x(t)
0.6
0.4
0.2
0

17/11/99

t (s)

Captulo 3: Series y Transformada de Fourier

14

5 Curso-Tratamiento Digital de Seal

Reconstruccin de x(t) (15 armnicos) a partir de muestreos en el espectro


Muestreos cada 0.5 Hz
1.2
1
0.8
0.6

x(t)
0.4
0.2
0
-0.2

17/11/99

t (s)

Captulo 3: Series y Transformada de Fourier

15

5 Curso-Tratamiento Digital de Seal

Magnitud vs ndice k

0.5
0.4
0.3
0.2
0.1
0
17/11/99

10

15

20

25

Captulo 3: Series y Transformada de Fourier

16

phase vs k

5 Curso-Tratamiento Digital de Seal

Fase vs k
150
100
50
0
-50
-100
-150
0
17/11/99

10

15

20

25

Captulo 3: Series y Transformada de Fourier

17

5 Curso-Tratamiento Digital de Seal

power(o) & cumulative power(*) vs k


0.25

0.2

0.15

0.1

0.05

0
17/11/99

10

15

20

25

Captulo 3: Series y Transformada de Fourier

18

5 Curso-Tratamiento Digital de Seal

Reconstrucciones de un periodo de x(t)


1.2
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4

17/11/99

Captulo 3: Series y Transformada de Fourier

19

5 Curso-Tratamiento Digital de Seal

Reconstruccin con 25 armnicos


1.2
1
0.8
0.6
0.4
0.2
0
-0.2

17/11/99

Captulo 3: Series y Transformada de Fourier

20

5 Curso-Tratamiento Digital de Seal

Reconstruccin real (--) y suavizada (--) con 25 armnicos


1.2
1
0.8
0.6
0.4
0.2
0
-0.2
17/11/99

Captulo 3: Series y Transformada de Fourier

21

5 Curso-Tratamiento Digital de Seal

Transformada de Laplace

17/11/99

Captulo 4: Transformada de Laplace 1

5 Curso-Tratamiento Digital de Seal

Transformada de Laplace

Se define la Transformada deLaplace de la seal x(t)


X ( s) = L{x (t )} =

x (t )exp( st )dt

La cantidad compleja s=+j. De esta forma se generaliza el


concepto de frecuencia en la Transformada de Fourier.
Se hace notar que el lmite inferior de la integral es 0, lo cual proporciona una misma Transformada para seales causales ya que x(t) y
x(t)u(t) son iguales.
La Transformada de Laplace existe si la integral que la define es finita.
Para ello se necesita que los valores de sean unos concretos, lo que
define una regin de convergencia de la Transformada de Laplace.

Con la Transformada de Laplace se generaliza el concepto de


funcin de Transferencia de un sistema a aquellos cuyas
condiciones iniciales son no nulas.

17/11/99

Captulo 4: Transformada de Laplace 2

5 Curso-Tratamiento Digital de Seal

Transformada de Laplace

Transformada Inversa de Laplace


Propiedades

1 + j
x( t ) =
X ( s )exp( st )ds

j
2j

Superposicion

L{x (t ) + y(t )} = X ( ) + Y ( )

exp

L{exp( t ) x (t )} = X ( s + )

cos

L{cos(t ) x (t )} =

sen
Escalado

17/11/99

1
[ X (s + j ) + X (s j )]
2
1
L{sin(t ) x (t )} = j [ X ( s + j ) X ( s j )]
2
s
1
>0
L{x (t )} = X

Captulo 4: Transformada de Laplace 3

5 Curso-Tratamiento Digital de Seal

Transformada de Laplace

Propiedades (Continuacin)
Desplazamiento

L{x (t )u(t )} = exp( s ) X ( s )

-t

dX ( s)
ds
n
n
n d X ( s)
L{t x (t )} = ( 1)
ds n
L{x (t )} = sX ( s) x ( 0 )

Derivada

>0

L{tx (t )} =

L{x n (t )} = s n X ( s) s n 1 x (0 ) x n 1 (0 )
Integral

17/11/99

t
X ( s) A[ x (t )]( ,0)
L x (t )dt =
+
s
s

Captulo 4: Transformada de Laplace 4

5 Curso-Tratamiento Digital de Seal

Transformada de Laplace

Propiedades (Continuacin)
Convolucion

L{x (t ) y(t )} = X ( s)Y ( s)

Multiplicacion

1
X ( s) Y ( s )
L{x (t ) y(t )} =
2j

Teorema del valor inicial


x (0 + ) = lim[sX ( s)]
s

Teorema del valor final


x (t ) t = lim[sX ( s )]
s 0

17/11/99

Captulo 4: Transformada de Laplace 5

5 Curso-Tratamiento Digital de Seal

Transformada de Laplace

De igual manera que en la Transformada de Fourier, podemos


obtener la respuesta de un sistema a un seal de entrada x(t) a
partir sus Transformadas de Laplace:
y( t ) = x( t ) h( t ) = L-1 { X ( s ) H ( s )}

H(s) es la funcin de transferencia del sistema. Podemos determinar la


funcin de transferencia a partir de la ecuacin diferencial que
describe el sistema
dN y
d N 1 y
dy
dMx
d M 1 x
dx
a
a
a
y
b
b
b


+
+
+
+
=
+
+
+
+ bM x
N 1
N
M 1
1
0
1
N
N 1
M
M 1
dt
dt
dt
dt
dt
dt

Haciendo la transformada de Laplace en ambos miembros y aplicando


la propiedad de la derivada para condiciones iniciales cero

(s

+ a1 s N 1 ++ a N 1 s + a N Y ( s ) = b0 s M + b1 s M 1 ++ bM 1 s + bM X ( s )

Y ( s ) b0 s M + b1 s M 1 ++ bM 1 s + bM
= N
H( s) =
X( s)
s + a1 s N 1 ++ a N 1 s + a N
17/11/99

Captulo 4: Transformada de Laplace 6

5Curso-Tratamiento Digital de Seal

Muestreo y Cuantizacin

17/11/99

Muestreo y Cuantizacin de seales


Convertidores Analgico-Digital

Captulo 5: Muestreo y Cuantizacin

5Curso-Tratamiento Digital de Seal

Muestreo

El muestreo digital de una seal analgica trae consigo una


discretizacin tanto en el dominio temporal como en el de la
amplitud.
Hay varias formas de describir matemticamente el proceso de
discretizacin temporal de una seal continua en el tiempo.
Nos centraremos en el muestreador ideal, que consiste en una
funcin que toma los valores de la seal xC(t) en los instantes
muestreos y el valor cero para el resto de puntos
x ( t ) = x ( t ) ( t nt ) = x (nt ) ( t nt ) = x ( t ) x ( t )

n =

n =

donde ts es el periodo de muestreo y xI(t) es la funcin de interpolacin.

El muestreo trae consigo una aparente prdida de informacin en


la seal xC(t). El Teorema del Muestreo establece en que
condiciones se puede muestrear sin prdida de informacin.

17/11/99

Captulo 5: Muestreo y Cuantizacin

5Curso-Tratamiento Digital de Seal

Muestreo

Teorema del muestreo: Una seal xc(t) con un espectro limi-tado a la


frecuencia fB (|f| fB) puede ser muestreada sin prdida de informacin si la
frecuencia de muestreo fS supera la cantidad 2fB , es decir fS 2fB.
Si no se muestrea como mnimo a esa frecuencia tiene lugar el fenmeno
denominado aliasing.

xS (t ) = xC (t ) (t nt s ) = xC (t ) xI (t )
n =

X S ( f ) = X C ( f ) X I ( f )
xI (t ) =

(t k t ) = C

k =

k =

e j 2k t t s

1 ts 2
1
1
Ck = (t ) e j 2 t t s dt = X I ( f ) =
t s t s 2
ts
ts

1
X S ( f ) = X I ( f ) X C ( f ) d =

ts

( f k t )
s

k =

( f k t ) X ( f ) d

k =

1
= X C ( f k ts )
t s k =
17/11/99

Captulo 5: Muestreo y Cuantizacin

5Curso-Tratamiento Digital de Seal

Muestreo
Es decir, el espectro de la seal muestreada se compone de una funcin
peridica de periodo 1/ts , replicndose en cada periodo el espectro de la
seal original. Se observa en la figura el porqu del teorema del muestreo.
Espectro de la seal x c (t)

fB

fB

Espectro de la seal muestreada x s (t)

H PB

f
fs

17/11/99

-f B

fB

fs

Captulo 5: Muestreo y Cuantizacin

5Curso-Tratamiento Digital de Seal

Muestreo

Para recuperar la seal original a partir de la muestrada no


tenemos ms que aplicar un filtro pasobajo con una frecuencia
de corte en f=fB y una amplificacin ts, es decir,
X C ( f ) = X S ( f ) H PB ( f ) xC (t ) = xS (t ) hPB (t )
f
hPB (t ) = t s 2 f B sinc(t 2 f B )
H PB ( f ) = t s rect
2 fB
xS (t ) =
xC (t ) =

k =

(kt s ) (t kt s ) =

x [k ]h

k =

PB

x [k ] (t kt )

k =

(t kt s ) = 2 t s f B

x [k ] sinc[2 f (t kt )]

k =

A la funcin sinc(t) se le denomina funcin de interpolacin cardinal.

17/11/99

Captulo 5: Muestreo y Cuantizacin

5Curso-Tratamiento Digital de Seal

Muestreo

Este tipo de reconstruccin de la seal original presenta varios


problemas:

El dominio de la funcin sinc(t) es infinito.


Requiere muestreos pasados y futuros.
Existe la posibilidad de truncar la funcin sinc(t), pero da lugar al
efecto Gibbs y adems requerira muchos puntos.
No pueden reconstruir funciones con discontinuidades.

Existen muchas funciones de interpolacin. La eleccin debe


hacerse en funcin de su estabilidad y de su realizacin fsica.
Veremos algunas realizaciones basadas en Transformadas
(FFT) y otras basadas en filtros FIR pasobajo.

17/11/99

Captulo 5: Muestreo y Cuantizacin

5Curso-Tratamiento Digital de Seal

Cuantizacin

Para procesar seales digitalmente no slo es necesario


muestrear la seal analgica sino tambin cuantizar la
amplitud de esas seales a un nmero finito de niveles.
El tipo ms usual de cuantizacin es la cuantizacin uniforme,
en el que los niveles son todos iguales. La mayora usan un
nmero de niveles que es una potencia de 2. Si L=2B, cada
uno de los niveles es codificado a un nmero binario de B
bits.
Veremos ms adelante que la cuantizacin (o el truncamiento
en operaciones mtematicas en un microprocesador) puede
producir problemas serios en el diseo de filtros digitales,
hasta el punto (en casos graves) de convertir filtros estables en
inestables.

17/11/99

Captulo 5: Muestreo y Cuantizacin

5Curso-Tratamiento Digital de Seal

Cuantizacin

Ruido de Cuantizacin: Llamaremos xS[n] a la seal discreta


y xQ[n] a la seal discreta cuantizada. El error es :
[n ] = x S [n ] x Q [n ]

Se define la relacin seal a ruido de cuantizacin (SNRQ) como la


relacin entre la potencia PS de la seal y la potencia PN del error [n],
medido en decibelios.
1 2
PS = xS [n]
N n=

1 2
PN = [n]
N n=

SNRQ (dB) = 10 log

x [n]
2
S

PS
= 10 log n=
PN
2 [n]
n=

17/11/99

Captulo 5: Muestreo y Cuantizacin

5Curso-Tratamiento Digital de Seal

Cuantizacin

Supongamos que tenemos una seal x(t) cuyo fondo de escala D est
dado por xmax-xmin. Si cuantizamos x(t) con L niveles, la distancia entre
dos niveles consecutivos o resolucin se define como =D/L.
Se denomina rango dinmico DR, a la relacin entre el fondo de escala
D y la resolucin, de forma que DR=2B. En decibelios,
DR(dB) = 20 log10 (2 B ) = 6 .02 B
Para una seal xS[n] cuantizada a xQ[n], el error estar entre -/2 y
/2. Si L es grande la distribucin de errores ser uniforme en ese
intervalo. Para este caso 2[n]=2=2/12. Sustituyendo
SNRQ (dB) = 10 log PS 10 log 2 + 10 log 12
= 10 log PS + 10.8 20 log D + 20 log L
= 10 log PS + 10.8 20 log D + 6 B

17/11/99

donde hemos utilizado el hecho que L=2B.


La ecuacin sugiere que por cada bit que aadimos al cuantizador, la
relacin seal a ruido de cuantizacin mejora en 6 dB.
Captulo 5: Muestreo y Cuantizacin

5Curso-Tratamiento Digital de Seal

Convertidores Analgico-Digital

Se componen de dos circuitos: el muestreador (llamado tambin Sample & Hold S/H o Track & Hold T/H) y el cuantizador digital.
La misin del S/H es mantener la seal analgica constante
durante el periodo de muestreo.
Tiempo de
adquisicin

Volts

Tiempo de asentamiento
o apertura

ts

ta

Vi
A1

Sw

Vo

Vo

Vi

CH

Hold
Sample

Hold
Sample

Sample

17/11/99

Captulo 5: Muestreo y Cuantizacin

10

5Curso-Tratamiento Digital de Seal

Convertidores Analgico-Digitales

Caractersticas estticas de un convertidor A/D

17/11/99

Error de Offset : Es un desplazamiento constante para todos los valores de la


curva caracterstica.
Error de Ganancia : Produce un valor de fondo de escala incorrecto. Un error
de ganancia positivo hace que el valor de fondo de escala analgico se obtenga
con un cdigo digital menor que el todo 1s. Un error de ganancia negativo
hace que el cdigo de todo 1 sea producido por un valor menor que el fondo
de escala.
Error diferencial no-lineal : Es la mxima diferencia entre dos valores de
entrada que producen cdigos de salida consecutivos.
Error integral no-lineal : Es la integral del rea limitada por la curva
caracterstica del convertidor y la curva ideal.
Error de monotonicidad : Especifica que la curva caracterstica del convertidor
no es creciente.

Captulo 5: Muestreo y Cuantizacin

11

5Curso-Tratamiento Digital de Seal

Convertidores Analgico-Digitales
Offset
111

Error de Ganancia

111

Salida Digital

101

Ideal

100
011

Salida Digital

110
110

101
100
011
010

010
001
001

000

000

Entrada Analgica
Entrada Analgica

111

111

110

110

Salida Digital

Salida Digital

Error Diferencial
No Lineal

101
100
011

100
011

010

010

001

001

000

000

Entrada Analgica

17/11/99

101

Entrada Analgica

Captulo 5: Muestreo y Cuantizacin

12

5Curso-Tratamiento Digital de Seal

Convertidores Analgico-Digitales

Caractersticas estticas de un convertidor A/D

17/11/99

Resolucin : La resolucin es altamente dependiente de las caractersticas del


amplificador operacional de entrada, tanto en el S/H como en el comparador.
Sabemos que las caractersticas de un AO (ganancia DC, ruido de entrada)
dependen de la frecuencia. Por ejemplo, la ganancia DC de un AO para un
error menor que 0.5 LSB, deber ser 2N+1. Esta ganancia disminuye con la
frecuencia, por lo que la resolucin tambin disminuye.

Captulo 5: Muestreo y Cuantizacin

13

5Curso-Tratamiento Digital de Seal

Convertidores Analgico-Digitales

Caractersticas dinmicas

Tiempo de Conversin: el tiempo desde que se aplica la seal de convertir


hasta que la seal digital est disponible en la salida.
Tiempo de Adquisicin (ta en el S/H): es el tiempo durante el cual el S/H debe
permanecer en estado de sample, para asegurarse que el consiguiente estado
hold est dentro de la banda de error especificada para la seal de entrada.
Tiempo de Asentamiento (ts en el S/H): es el intervalo de tiempo entre la seal
de hold y el definitivo asentamiento de la seal (dentro de la banda de error
especificada).
La frecuencia mxima de conversin del convertidor A/D ser por lo tanto,
fS =

17/11/99

1
1
=
TS t s + t a

Slew Rate : Es la velocidad a la cual el valor de la salida del S/H converge al


valor muestreado deseado (V/s).

Captulo 5: Muestreo y Cuantizacin

14

5Curso-Tratamiento Digital de Seal

Convertidores Analgico-Digital

Caractersticas de Estabilidad

17/11/99

Definen la inmunidad de las caractersticas mencionadas anteriormente con el tiempo, temperatura, fuentes de alimentacin y envejecimiento del componente.
Coeficientes de Temperatura para la linealidad, ganancia, offset.

Captulo 5: Muestreo y Cuantizacin

15

5Curso-Tratamiento Digital de Seal

Convertidores Analgico-Digital

Convertidor Analgico-Digital

Aproximaciones Sucesivas
V cmp

Convertidor
D/A

Comparador
-

V in

S/H

+
MSB

LSB

D0
D1
D2
D3
D4
D5
D6
D7

Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0

CLK

17/11/99

CLK

Registro
Aproximaciones
Sucesivas

Captulo 5: Muestreo y Cuantizacin

16

5Curso-Tratamiento Digital de Seal

Convertidores Analgico-Digital

Convertidor Flash
R

V REF

V in

S/H

+
-

7
6

5
+

Encoder
Prioridad

A0
A1

Salida
Digital

A2

2
1

EN

Pulsos
de
Muestreo

17/11/99

Captulo 5: Muestreo y Cuantizacin

17

5 Curso-Tratamiento Digital de Seal

Transformada Z

17/11/99

Definicin y Propiedades
Transformada Inversa
Funcin de Transferencia Discreta
Anlisis de Sistemas

Captulo 7: Transformada Z

5 Curso-Tratamiento Digital de Seal

Definicin y Propiedades

Se define la Transformada Z, X(z) de una secuencia x[n] :


X (z ) =

x[k ]z k

k =

La cantidad compleja z generaliza el concepto de frecuencia al


dominio complejo, z=|r|exp(j2fts)n=0
.
Para una secuencia x[n]={6 4 3 2 -3}, la Transformada Z es
X(z)=6z2+4z1+3z0+2z-1-3z-2. El valor z-1 es el operador de
retraso unidad.
Ya que X(z) es una series de potencias, podra no converger
para todo z. Los valores de z para los cuales X(z) converge
definen la regin de convergencia (ROC).
Toda X(z) lleva asociada una ROC, ya que podra ocurrir que
dos secuencias distintas produzcan una X(z) idntica con
diferentes ROCs.

17/11/99

Captulo 7: Transformada Z

5 Curso-Tratamiento Digital de Seal

Definicin y Propiedades

Para una secuencia x[n] de longitud finita, X(z) converge para


todo z, excepto para z=0 y/o z= (dependiendo de si X(z)
tiene trminos z-k y/o zk).
Transformadas Z de algunas secuencias
ImpulsoUnidad
PulsoRectangula
r

x[n] = [n]

X (z) = 1 ROC: z
x[n] = u[n] u[n N]

(1 z )
X (z) = z =
(1 z )
N 1

k =0

Escalon Un
idad

x[n] = u[n]

X (z) = zk =
k =0

Exponencia
l

z 1 ROC: z 0

x[n] = ku[n]

z
1
=
ROC: z > 1
1
(1 z ) (z 1)

k =0

k =0

X (z) = k zk = ( z) =
17/11/99

z
ROC: z >
(z )
Captulo 7: Transformada Z

5 Curso-Tratamiento Digital de Seal

Definicin y Propiedades

Transformadas Z de algunas secuencias (Continuacin)


Exponencial

x[n] = n u[ n 1], n = 1,2,...


X (z ) =

k =

17/11/99

=
m =1

z
(z )
=
[1 (z )] (z )

z = ( z )

m m

m =1

ROC: z <

En estos dos ltimos ejemplos se observa que la Transformada Z es


idntica para las dos secuencias. Sin embargo la ROC es distinta. Para
la secuencia causal, la ROC es |z|>||, mientras que para la anticausal
|z|<||. La ROC depender de si la seal es causal (definida en el eje
positivo), anticausal (eje negativo) o no causal (dos ejes).

Captulo 7: Transformada Z

5 Curso-Tratamiento Digital de Seal

Definicin y Propiedades

Propiedades de la Transformada Z
Superposicion
Desplazamiento

ax[n] + by[n] aX (z ) + bY (z )
x[n 1] z 1 X (z ) + x[1]
x[n N ] z N X (z ) + z ( N 1) x[1]++ x[ N ]
x[n + N ] z N X (z ) z N x[0] z N 1 x[1] zx[ N 1]

Escalado

n x[n] X (z / )
dX (z )
dz
d
dX (z )
n 2 x[n] z z

dz
dz
nx[n] z

n
n 2
cos
sin

17/11/99

[ X{z exp( j T )} + X{z exp( j T )}]


sin(n T )x[n] j [ X {z exp( j T )} X {z exp( j T )}]

cos(n 0 T )x[n]
0

1
2

1
2

Captulo 7: Transformada Z

5 Curso-Tratamiento Digital de Seal

Definicin y Propiedades
x[n] y[n] X (z )Y (z )

Convolucion
Diferencia

x[0] = lim X (z )

Teorema Valor Inicial

Teorema del Valor Final

Secuencia

lim x[n] = lim(z 1) X (z )

z 1

Transformada Z

ROC
todo z

[n m], m > 0

1
z-m

[n + m], m > 0

zm

|z|<

u[n]

z
(z 1)
z
(z 1)

[n]

u[ n 1]

17/11/99

x[n] x[n 1] 1 z 1 X (z )

|z|>0
|z|>1
|z|<1
Captulo 7: Transformada Z

5 Curso-Tratamiento Digital de Seal

Definicin y Propiedades
Secuencia

Transformada Z

a u[n]

na nu[n]

z
(z a )
z
(z a )
az
(z a)2

[cos n T ]u[n]

z z (cos n 0 T )

a nu[ n 1]

[sin n 0T ]u[n]
r n [cos n 0 T ]u[n]
r n [sin n 0 T ]u[n]
17/11/99

z>|a|
z<|a|
z>|a|

z 2(cos n 0 T )z + 1
2

z sin n 0 T
z 2 2(cos n 0 T )z + 1

ROC

z z r(cos n 0 T )

|z|>1
|z|>1

z 2 2 r(cos n 0 T )z + r 2

|z|>|r|

z 2 2r(cos n 0 T )z + r 2

|z|>|r|

zr(cos n 0 T )

Captulo 7: Transformada Z

5 Curso-Tratamiento Digital de Seal

Transformada Z Inversa

Realizaremos la Transformada Z Inversa utilizando fracciones


parciales. La Transformada Z Inversa de cada una de estas
fracciones parciales puede ser identificada fcilmente en las
tablas de Transformadas Z.
Ejemplos
X (z ) =

(z 14 )(z 12 )

X (z ) = 8

X (z ) =

16 z
8z
1 n
1 n
x
n
n
u
n
+

8
16
8
[
]
[
]
[
]
(
)
(
4
2 ) u[n ]
(z 14 ) (z 12 )

[(z 1) (z 2)]
2

X (z )
1
8
16
8
=
=

z
z(z 14 )(z 12 ) z (z 14 ) (z 12 )

X (z )
A
B
C
1
=
=
+
=
2
2 +
z
(z 1) (z 2) (z 1) (z 1) (z 2)

1
z
z
z
1
1
X
z
)
(
+

+
(z 1) (z 1)2 (z 2)
(z 1) (z 1)2 (z 2)
x[n] = u[n] nu[n] + (2)n u[n]

17/11/99

Captulo 7: Transformada Z

5 Curso-Tratamiento Digital de Seal

Transformada Z Inversa
( z 3z ) X ( z ) =
A
Bz + C
(z 3)
=
+
X (z ) =
z
(z 2)(z 2 z + 2)
(z 2)(z 2 z + 2) (z 2) (z 2 z + 2)
2

1
1
1z
12
z +1
z(z + 2 )
X (z ) = 2 + 22
+ 22
(z 2 ) z 2 z + 2 )
(z 2 ) z 2 z + 2 )

5
1
12 z
z(z 1)
z
+ 22
+ 2 2

(z 2 ) z 2 z + 2 ) z 2 z + 2 )

x[n] = 12 (2)n u[n] + 12 ( 2 ) cos(n 4 )u[n] + 25 ( 2 ) sin(n 4 )u[n]


n

X (z ) =

(z

z2
2

16 z 16
3
5

X (z )
z
z
= 2
=
z
(z 12 )(z + 13 )
z 16 z 16

)
3
5

2
5

2
z
5z
=
+

=
+

X
z
(
)
(z 12 ) (z + 13 )
(z 12 ) (z + 13 )

x[n] =

17/11/99

( ) u[n] + 25 ( 13 )n u[n]

3 1 n
5 2

Captulo 7: Transformada Z

5 Curso-Tratamiento Digital de Seal

Funcin de Transferencia Discreta

Funcin de Transferencia Discreta

La funcin de transferencia se define slo para sistemas LTI con


condiciones iniciales nulas.
Si la respuesta al impulso es h[n], la respuesta y[n] a una entrada
arbitraria x[n] es la convolucin y[n]=x[n]*h[n]. Como la
convolucin se transforma en un producto,
Y (z )
Y ( z ) = X (z ) H ( z ) H ( z ) =
X (z )
Un sistema LTI tambin puede expresarse mediante una ecuacin
diferencia : y[n] + A1 y[n 1] + A2 y[n 2]++ AN y[n N ]
= B0 x[n] + B1 x[n 1]++ BM x[n M ]

Aplicando la Transformada Z a ambos miembros, tenemos la funcin


de Transferencia discreta del sistema H(z),
H (z ) =

17/11/99

B0 + B1 z 1 ++ BM z M
1 + A1 z 1 ++ AN z N
Captulo 7: Transformada Z

10

5 Curso-Tratamiento Digital de Seal

Funcin de Transferencia Discreta

Podemos expresar la funcin de Transferencia de forma factorizada,


H (z ) =

B0 + B1 z 1 ++ BM z M
1 + A1 z 1 ++ AN z N

z z1 )(z z M )
(
=K
(z p1 )(z p N )

Se denominan polos del sistema a los valores p1,p2,...,pN. Determinan


la forma de la respuesta del sistema (modos naturales del sistema). Los
ceros del sistema (z1,z2,...,zM) determinan las frecuencias bloqueadas
por el sistema.

El plano z y Estabilidad del Sistema

17/11/99

La estabilidad de un sistema LTI discreto requiere que la respuesta al


impulso h[n] sea absolutamente sumable (integrable en continuo).
Esto quiere decir que h[n]=0 en n=. Para ello es necesario que los
polos de la funcin de transferencia H(z) estn todos dentro del crculo
unidad en el plano z (|pi|<1). Esto evita que la respuesta tenga
exponenciales crecientes.

Captulo 7: Transformada Z

11

5 Curso-Tratamiento Digital de Seal

Funcin de Transferencia Discreta

La estabilidad de una funcin de Transferencia puede determinarse


simplemente inspeccionando los coeficientes del denominador de la
funcin de Transferencia. Para ello, debe estar en forma de trminos
L 1
de 2 Orden,
1 + 1i z 1 + 2i z 2
N (z )
N + 1
H (z ) =

D(z )

,
= a0
1
2
z
z
1

+
+
i =0
1i
2i

Para cada uno de los trminos de 2 Orden podemos calcular las races
(1i y 2i) del denominador de la siguiente forma,

)(

Di (z ) = 1 + 1i z 1 + 2i z 2 = 1 1i z 1 1 2i z 1

17/11/99

L=
2 int

Para las races del polinomio y los coeficientes se cumple,


1i = (1i + 2i )
2i = 1i 2i
La races deben estar dentro del crculo unidad, por lo que | 1i| <1 y
|2i| <1. Esto implica que el coeficiente |2i|<1.

Captulo 7: Transformada Z

12

5 Curso-Tratamiento Digital de Seal

Funcin de Transferencia Discreta

Las races del polinomio son,


1i + 12i 4 2i
,
1i =
2

1i 12i 4 2i
2 i =
2

1i + 12i 4 2i
< 1 12i 4 2i < 2 1i
2
12i 4 2i < 4 4 1i + 12i 1i < 1 + 2i
2i

1i
-2

-1

-1

17/11/99

Captulo 7: Transformada Z

13

5 Curso-Tratamiento Digital de Seal

Funcin de Transferencia Discreta

Respuesta a sistemas con condiciones iniciales nulas

Consideramos el sistema descrito por


y[n]=y[n-1]+x[n]

(1)

El sistema es causal (depende de valores pasados o presentes). Queremos conocer la respuesta del sistema a una entrada
(2)
x[n]=nu[n]
Aplicamos la Transformada Z a ambos miembros de (1):

Y ( z ) 1 z 1 = X ( z ) H ( z ) =

Y (z ) = X (z )H (z ) =
Y (z ) =
17/11/99

( z )2

z
(z )

Y (z )
z
1

=
=
+

z
( z )2 ( z ) ( z )2

X (z ) = Z {x[n]} = Z n u[n] =
z2

z
Y (z )
1
=
=
X ( z ) 1 z 1
(z )

z
z
n
n
n
+
2 y[n] = u[n] + n u[n] = (n + 1) u[n]
(z ) (z )
Captulo 7: Transformada Z

14

5 Curso-Tratamiento Digital de Seal

Funcin de Transferencia Discreta

Respuesta a sistemas con condiciones iniciales no nulas

Considerar el sistema anterior en el que las condiciones iniciales son


y[-1]=2

Aplicando el principio de superposicin podemos calcular la respuesta


de un sistema con condiciones iniciales no nulas (ycin[n]), sumando la
respuesta del sistema con condiciones iniciales nulas ms la respuesta
del sistema a entrada cero (x[n]=0) y condiciones iniciales
especificadas (yec[n]).
En el apartado anterior hemos calculado ycin[n]
ycin [n] = (n + 1) n u[n ]
La respuesta al estado cero es:
y[n] = y[n 1]

Yec (z ) = z 1Yec [z ] + y[1] Yec (z ) =

y[1] y[1]z
=

1
(1 z ) (z )

yec [n] = y[1] n u[n] = 2 n+1u[n]


17/11/99

Captulo 7: Transformada Z

15

5 Curso-Tratamiento Digital de Seal

Funcin de Transferencia Discreta

17/11/99

La respuesta total del sistema es


y[n] = ycin [n] + yec [n ] = (n + 1) n u[n ] + 2 n +1u[n] = (n + 1 + 2 ) n u[n]

(3)

Comprobacin
x[n]
1

y[n] (1)

y[n] (3)

n=0

y[n-1]
2

2+1

2+1

n=1

2+1

(2+2)

(2+2)

n=2

(2+2)

(2+3)2

(2+3)2

n=3

(2+3)2

(2+4)3

(2+4)3

n=4

(2+4)3

2
3
4

(2+5)4

(2+5)4

Captulo 7: Transformada Z

16

5 Curso-Tratamiento Digital de Seal

Funcin de Transferencia Discreta

Funcin de Transferencia en el estado estacionario

Si la funcin de Transferencia se evala para los valores de


z=exp(j2fts), es decir, en el crculo unidad, se obtiene la funcin de
transferencia en el estado estacionario o la respuesta frecuencial del
sistema, H(f). Esta funcin H(f) es peridica con periodo ts=1/fs y es la
DTFT de h[n] (ver Tema 6, Transparencia n 3).
Para calcular la respuesta frecuencial de y[n]=y[n-1]+x[n],
sustituimos z por exp(j2fts), de forma que

H (z ) =

1
1
1
H
f

=
=
)
(
1 exp( j 2ft s ) 1 cos(2ft s ) + j sin(2ft s )
(1 z 1 )

1
H( f ) =
2
ft
1
2
2
cos

+
( s )

17/11/99

12

1 cos(2ft s )
( f ) = tan

sin(2ft s )
1

Captulo 7: Transformada Z

17

5 Curso-Tratamiento Digital de Seal

Funcin de Transferencia Discreta


Crculo unidad en el plano z
1
z=j
= 0 . 5
f=0.25f s

z=exp(j2 ft s )

0.5

z=-1
=
f=0.5f s

z=1
= 0
f=0

= 2 ft s

-0.5
abs(z)=1
-1

z=-j
= - 0 . 5
f=-0.25f s

-1

17/11/99

-0.5

0.5

Captulo 7: Transformada Z

18

5 Curso-Tratamiento Digital de Seal

Funcin de Transferencia Discreta

5.5

magnitude vs digital frequency F=f/fs =0.8

100

phase in degrees vs digital frequency F=f/fs =0.8

5
4.5

50

4
3.5
0
3
2.5
2

-50

1.5
1
-100
0.5
-0.5

17/11/99

0.5

-0.5

0.5

Captulo 7: Transformada Z

19

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros Digitales


(Parte 1)

Terminologa y Clasificacin
Filtros IIR

17/11/99

Diseo Filtros Analgicos (Butterworth, Chebyshev I


y Chebyshev II).
Mtodos de Transformacin del plano s al plano z.
Diseo de Filtros IIR con MATLAB.
Captulo 8: Diseo de Filtros Digitales (Parte 1)

5 Curso-Tratamiento Digital de Seal

Terminologa y Clasificacin

El trmino filtro digital lo entenderemos como cualquier procesamiento realizado en una seal de entrada digital.
Un filtro digital es la implementacin en hardware o software
de una ecuacin diferencia.
Ventajas de los filtros digitales

Alta inmunidad al ruido


Alta precisin (limitada por los errores de redondeo en la aritmtica
empleada
Fcil modificacin de las caractersticas del filtro
Muy bajo coste (y bajando)

Por estas razones, los filtros digitales estn reemplazando


rpidamente a los filtros analgicos.

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

5 Curso-Tratamiento Digital de Seal

Terminologa y Clasificacin

Clasificacin de los Filtros Digitales


Filtros FIR (Finite Impulse Response)

17/11/99

Un filtro FIR de orden M se describe por la siguiente ecuacin diferencia


y[n ] = B0 x[n ] + B1 x[n 1]++ BM x[n M ] , lo que da lugar a la funcin de
1
M
transferencia H (z ) = B0 + B1 z ++ BM z .
La secuencia {BK} son los coeficientes del filtro.
No hay recursin, es decir, la salida depende slo de la entrada y no de
valores pasados de la salida.
La respuesta es por tanto una suma ponderada de valores pasados y
prresentes de la entrada. De ah que se denomine Media en Movimiento
(Moving Average)
La funcin de Transferencia tiene un denominador constante y slo tiene
ceros.
La respuesta es de duracin finita ya que si la entrada se mantiene en cero
durante M periodos consecutivos, la salida ser tambin cero.

Captulo 8: Diseo de Filtros Digitales (Parte 1)

5 Curso-Tratamiento Digital de Seal

Terminologa y Clasificacin

Filtros IIR (Infinite Impulse Response)


Veremos dos variaciones de este tipo de filtros: AR y ARMA
Filtros AR (Autoregresivo)

La ecuacin diferencia que describe un filtro AR es


y[n ] + A1 y[n 1] + A2 y[n 2 ]++ AN y[n N ] = x[n] , lo que da lugar a una
funcin de transferencia
H (z ) =

17/11/99

1
1 + A1 z 1 + A2 z 2 ++ AN z N

La funcin de transferencia contiene solo polos.


El filtro es recursivo ya que la salida depende no solo de la entrada actual
sino adems de valores pasados de la salida (Filtros con realimentacin).
El trmino autoregresivo tiene un sentido estadstico en que la salida y[n]
tiene una regresin hacia sus valores pasados.
La respuesta al impulso es normalmente de duracin infinita, de ah su
nombre.
Captulo 8: Diseo de Filtros Digitales (Parte 1)

5 Curso-Tratamiento Digital de Seal

Terminologa y Clasificacin
Filtros ARMA (Autoregresivo y Media en Movimiento)

Es el filtro ms general y es una combinacin de los filtros MA y AR


descritos anteriormente. La ecuacin diferencia que descibe un filtro
ARMA de orden N es
y[n] + A1 y[n 1] + A2 y[n 2]++ AN y[n N ]
= B0 x[n] + B1 x[n 1]++ BM x[n M ]

Y la funcin de transferencia
B0 + B1 z 1 ++ BM z M
H (z ) =
1 + A1 z 1 ++ AN z N

17/11/99

Un filtro de este tipo se denota por ARMA(N,M), es decir es Autoregresivo de orden N y Media en Movimiento de orden M.
Su respuesta a impulso es tambin de duracin infinita y por tanto es un
filtro del tipo IIR.

Captulo 8: Diseo de Filtros Digitales (Parte 1)

5 Curso-Tratamiento Digital de Seal

Terminologa y Clasificacin
Clasificacin de los Filtros Digitales
Ecuacin Diferencia
y[n] = Bm x[n m]
m

Ak y[n k ] = x[n]
k

Ak y[n k ] = Bm x[n m]
k

17/11/99

Tipo de Filtro
FIR(Finite Impulse Response),
No Recursivo,
Moving Average (MA) orden M,
Todo ceros
IIR (Infinite Impulse Response),
Recursivo, Autoregresivo(AR) orden N,
Todo polos
IIR Recursivo, ARMA(N,M),
Polos y Ceros

Captulo 8: Diseo de Filtros Digitales (Parte 1)

5 Curso-Tratamiento Digital de Seal

Terminologa y Clasificacin
|H(s)|

Filtro Pasobajo (LP)

0 dB

0 dB

-3 dB

-3 dB

fc
|H(s)|

Filtro Pasabanda (BP)

|H(s)|
0 dB

-3 dB

-3 dB

f2

Filtro Parabanda (BS)

f1

0 dB

f1

17/11/99

|H(s)|

f2

Filtro Pasoalto (HP)

fc

Captulo 8: Diseo de Filtros Digitales (Parte 1)

5 Curso-Tratamiento Digital de Seal

Proceso de Diseo de Filtros Digitales

El proceso de diseo de un filtro digital requiere tres pasos

Establecer las especificaciones del filtro para unas determinadas


prestaciones. Estas especificaciones son las mismas que las requeridas
por un filtro analgico : frecuencias de parabanda y pasabanda,
atenuaciones, ganancia dc, etc.
Determinar la funcin de transferencia que cumpla las especificaciones.
Realizar la funcin de transferencia en hardware o software.

IIR o FIR?

Los filtros IIR producen en general distorsin de fase, es decir la fase


no es lineal con la frecuencia.
Los filtros FIR son de fase lineal.
El orden de un filtro IIR es mucho menor que el de un filtro FIR para
una misma aplicacin.
Los filtros FIR son siempre estables.

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I

Tcnicas de diseo de filtros IIR

Mediante mtodos de diseo analgico, seguido de una transformacin


del plano s al plano z (Mtodo I).
Disear un prototipo de filtro pasobajo digital y hacer las oportunas
transformaciones (Mtodo II)

Mtodo I

Discutiremos este mtodo para el diseo de filtros pasobajo. Empezaremos discutiendo el proceso de diseo de filtros analgicos para luego
transformarlo al dominio discreto.
El diseo analgico se realiza a partir de unas especificaciones como
las dadas en la figura.

17/11/99

1 es el rizado de pasabanda.
2 es el rizado de parabanda
fp es la frecuencia lmite de pasabanda.
fs es la frecuencia lmite de parabanda.
Captulo 8: Diseo de Filtros Digitales (Parte 1)

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I
|H(f)|

1
1 1
Banda de
Transicin

Pasabanda

Parabanda
2
fp

fs

Partimos de un prototipo de filtro pasobajo normalizado en el que usamos una


frecuencia normalizada. Para otro tipo de filtro se requerir la consiguiente
transformacin de frecuencia. Para ese filtro pasobajo normalizado la funcin
1
de Transferencia es
2
H ( ) =
1 + L2n ( )
donde Ln() es un polinomio de grado n.

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

10

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Butterworth

El objetivo del diseo de un filtro es encontrar Ln() que mejor cumple


las especificaciones. Para ello se utilizan algunas aproximaciones
(Butterworth, Chebyshev, etc).
Etapas del diseo
Normalizar la frecuencia de acuerdo a las especificaciones.
Determinar el orden del prototipo de filtro pasobajo.
Determinar la funcin de Transferencia normalizada.
Desnormalizar a travs de las transformacines de frecuencia en y .

Aproximacin de Butterworth

Consiste en hacer Ln()=n. Esta aproximacin es tal que


Ln (0 ) = 0 , Ln (0 ) = 0 , , Lnn1 (0 ) = 0
Por tanto,

1
1 + 2 2 n
Normalizamos las frecuencias por la frecuencia lmite de pasabanda fp, de
forma que p=1 y s=fs/fp.

17/11/99

H ( ) =
2

Captulo 8: Diseo de Filtros Digitales (Parte 1)

11

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Butterworth


A partir de 1 (en =1) y 2 (en =s), podemos calcular los valores de
y n.
1 = 10 log H ( ) =1 = 10 log
2

2 = 10 log H ( ) = s = 10 log
2

10
1

log 0.1
1
10
1
n=
log s
0 .1 2

1
2

1
= 10 log 1 + 2 2 = 10 0.1 1 1
2
1+

1
2 2n
log
10
1
=

s
1 + 2 2s n

|H(f)|

1
1 1
Banda de
Transicin

Pasabanda

Parabanda
2
fp

17/11/99

fs

Captulo 8: Diseo de Filtros Digitales (Parte 1)

12

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Butterworth

Ejemplo: Disear un filtro de Butterworth de pasobajo con las


siguientes especificaciones: una atenuacin de pasabanda que sea
menor que 1dB a f=0.6366 Hz, una atenuacin de parabanda que sea
mayor que 20dB para f=1.2732 Hz.

Frecuencia normalizada =f/fp=f/0.6366.


1
2 = 10 0 .1 1 = 1.2589 1 = 0.2589
En =1 1dB = 10 log
2
1
1+
2
10 1 2
En =1.2732/0.6366=2
20 dB = 10 log

1
1 + 0.2589 2 2 n

log

0
2589
.

n=
= 4.289
log 2

Tomamos como orden del filtro el entero ms cercano por arriba n=5.

Filtro de Butterworth Normalizado : se normaliza con respecto a la


frecuencia 3 (|H(3)|2= ).
H N ( ) = H ( 3 ) =
2

17/11/99

1 + ( 3 )

2n

1
1 + 2Nn

Captulo 8: Diseo de Filtros Digitales (Parte 1)

13

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Butterworth

Funcin de Transferencia Normalizada. Se trata de determinar HN(s) a


partir de |HN()|2.

H N ( N ) = H ( N ) H * ( N ) = H ( N ) H ( N ) H (s ) H ( s ) s = j = H ( N ) H ( N ) = H N ( N )
2

H (s )H ( s ) = H N ( N ) 2 =s 2 =
2

1 + ( s 2 )

Reemplazamos N2 por -s2.


Los polos los calculamos de

( )

1 + s 2

( )

= 0 s 2

= 1 (1)n pk2 n = 1

exp( jn) pk2 n = exp[ j (2 k 1) ] k = 1,2,,2 n

pk = exp j ( k + 2 )

donde k =

(2 k 1)
2n

k = 1,2,,2 N

pk = k + j k = cos( k + 2 ) + j sin( k + 2 ) = sin( k ) + j cos( k )

k = sin( k )

k = cos( k )

pk = ( 2k + 2k ) 2 = 1
1

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

14

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Butterworth

Estos resultados muestran que:


Los polos normalizados estn sobre un crculo de radio 1 en el plano s.
Los polos estn equiespaciados /n radianes con k=(2k-1)/2n, donde
k se mide con respecto al eje positivo del eje j.
Los polos nunca estarn sobre el eje j (2k-1 nunca puede ser par).
Si n es impar, siempre hay un par de polos reales en s=1.
Polos de Butterworth : n=4
j

0.5

0.5

-0.5

-1

-1
-0.5

0.5

-0.5

-1

17/11/99

Polos de Butterworth : n=5


j

-1

-0.5

0.5

Captulo 8: Diseo de Filtros Digitales (Parte 1)

15

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Butterworth

De los 2n polos de que consta H(s)H(-s) slo estamos interesados en


los polos de la parte izquierda del plano s, que son los que dan
estabilidad al filtro. De las figuras se puede observar que cada polo
tiene su conjugado, excepto en el caso de que n sea impar donde
tenemos un polo adicional en s=-1. Por tanto

(s + p )(s + p ) = [s sin( ) + j cos( )][s sin( ) j cos( )]


= s 2 sin( )s + 1
k

H N (s ) =

17/11/99

1
Q N (s )

( n 1)/ 2

2
n impar
(s + 1) s + s(2 sin k ) + 1
k =1
Q N (s ) =
n/2

s 2 + s(2 sin k ) + 1
n par

k =1

El polinomio QN(s) viene en tablas para cada valor de n, por lo que


solo tenemos que determinar el valor de n, ir a las tablas para obtener
HN(s) y desnormalizar para determinar la H(s) de nuestro filtro.
Captulo 8: Diseo de Filtros Digitales (Parte 1)

16

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Butterworth


Desnormalizacin : Si |H()|2=|HN(/3)|2, entonces H(s)=HN(s/3). Si
desnormalizamos H(s) a HA(s)=H(s/p), HA(s) cumple las especificaciones dadas. Estos es equivalente a desnormalizar directamente HN(s)
a HA(s)=HN(s/p3).
Ejemplo: Calcular la funcin de Transferencia del filtro del ejemplo
anterior.

En el ejemplo tenamos n=5, fp=0.6366, fs=1.2732 y 2=0.2589.


2
1
1
.
=
3 = 1145
Calculamos 3. H ( 3 ) =
1 + 0.2589 10
2
3
De las tablas se obtiene
1
H N (s ) =
2
3

1 + 3.236 s + 5.236 s + 5.236 s + 3.236 s 4 + s 5

HA(s)=HN(s/p3)= HN(s/4.578)

H A (s) = H N (s 4.578) =

17/11/99

1
2
3
4
5
1 + 3.236(s 4.578) + 5.236(s 4.578) + 5.236(s 4.578) + 3.236(s 4.578) + (s 4.578)

1
1 + 0.7068s + 0.2498s 2 + 0.0546 s 3 + 0.0074 s 4 + 4.973 10 4 s 5
Captulo 8: Diseo de Filtros Digitales (Parte 1)

17

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Butterworth


H A (s ) =

2010.84
2010.84 + 1421.26 s + 502.31s 2 + 109.79s 3 + 14.88s 4 + s 5

magnitude vs frequency in Hertz

phase in degrees vs frequency in Hertz

1.2

200
100

1
0
-100

0.8

-200
0.6

0.5

1.5

unwrapped phase in degrees vs frequency in Hertz


0

0.4

-100
-200

0.2

-300
0

0.5

1.5

-400

0.5

1.5

Filtro Pasoalto de Butterworth

17/11/99

Se hace la transformacin 1/, lo que da lugar a |HHP()|2=|HLP(1/)|2.


Tambin equivale a hacer 1-|HLP()|2
2n
2
2
1
1
H

1 H LP ( ) = 1
1
=
=
=
(
)
LP
1 + 2 n 1 + 2 n 1 + (1 )2 n
Captulo 8: Diseo de Filtros Digitales (Parte 1)

18

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev I

Aproximacin de Chebyshev I H ( ) 2 =

1
1
=
1 + L2n ( ) 1 + 2 Tn2 ( )

donde Tn() es el polinomio de Chebyshev de orden n.


Polinomios de Chebyshev
Tn(x)=cosh(ncosh-1x)
Orden n
Tn(x)
0
1
1
x
2
2x2-1
3
4x3-3x
4
8x4-8x2+1
5
16x5-20x3+5x
6
32x6-48x4+18x2-1
7
64x7-112x5+56x3-7x
8
128x8-256x6+160x4-32x2+1

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

19

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev I

Proceso de diseo de los filtros de Chebyshev I: Partiremos del filtro


prototipo de pasobajo mediante la apropiada transformacin de
frecuencia. Tendremos las especificaciones para el filtro en forma de
las frecuencias lmites de pasabanda y parabanda as como sus
respectivas atenuaciones.
En los filtros de Chebyshev I se especifica tambin para un
determinado rizado en la banda pasabanda (Figura).
Con esas especificaciones calculamos n y .
Determinamos la Funcin de Transferencia Normalizada en 3.
Desnormalizamos y obtenemos HA(s).
Ejemplo: Disear el filtro de Chebyshev para las siguientes especificaciones : Ap1dB para 4, As20dB para 8.

17/11/99

Normalizamos en p , p=1, s=s/p=2.

Captulo 8: Diseo de Filtros Digitales (Parte 1)

20

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev I


Ap = 10 log

1
0 .1 Ap
2
10

=
1 = 0.2589

2
1+

As = 10 log

1
1
log
10
=
1 + 2 cosh 2 n cosh 1 s
1 + 2 cosh 2 n cosh 1 s

cosh
n=

[(10

0 .1 As

) ]

1 /

cosh 1 s

1
2

3.6657
= 2.7834 n = 3
1.3169

1
1
=
3 = cosh 1n cosh 1 ( 1 ) = 1.0949
2
2
1
2 1 + cosh n cosh 3
1

= 0.1087
La magnitud del rizado en la pasabanda es 1
2
1+
La normalizacin de la funcin de transferencia se realiza en p=1.
Procedemos de la misma forma que en el filtro de Butterworth

H N (s )H N ( s ) = H ( ) = s =
2

17/11/99

1
1 + 2 Tn2 (s j )

Captulo 8: Diseo de Filtros Digitales (Parte 1)

21

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev I


Los polos de H N (s) se obtienen de

1 + 2 cos 2 n cos 1 (s j ) = 0 cos n cos 1 (s j ) = j


Llamamos z = + j = cos 1 (s j )
cos(nz ) = cos(n + jn ) = cos(n ) cosh(n ) j sin(n ) sinh (n ) = j
cos(n ) cosh(n ) = 0

(1)

sin(n ) sinh(n ) = 1

(2)

|H( )|

Ya que cosh(n)1 para todo n, la ecua1cin (1) nos dice que


cos(n ) = 0 k =

(2 k 1)
2n

Chebyshev
Tipo I

1
1
1+2

k = 1,2,,2 n

Para estos valores de k, sin(n)=1, por lo


que la ecuacin (2) queda
sinh(n ) = 1 = 1n sinh 1 ( 1 )
p

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

22

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev I


s j = cos z
s = j cos z = j cos( k + j ) = sin( k )sinh( ) + j cos( k ) cosh( )

Los polos estarn a la izquierda del plano s para garantizar la estabilidad del filtro
pk = sin( k )sinh( ) + j cos( k ) cosh( )

k = 1,2,, n

En el ejemplo anterior teniamos 2=0.2589, n=3


= n1 sinh 1 ( 1 ) = 13 sinh 1 (

k = ( 2 k2n1) = ( 2 k 61)

1
0 .2589

) = 0.476

k = 1,2,3

s1 = sinh(0.476) sin( 6 ) + j cosh(0.476) cos( 6 ) = 0.2471 + j 0.966


s2 = sinh(0.476) sin( 2 ) + j cosh(0.476) cos( 2 ) = 0.4942
s3 = sinh(0.476) sin( 56 ) + j cosh(0.476) cos( 56 ) = 0.2471 j 0.966

QN (s) = (s s1 )(s s2 )(s s3 ) = (s + 0.4942) s 2 + 0.4942 s + 0.9492)


17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

23

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev I


H N (s ) =

QN (0 )
0.4913
=
(s + 0.4942) s 2 + 0.4942 s + 0.9492 s 3 + 0.9883s 2 + 1.2384 s + 0.4913

H A ( s ) = H N (s 4 ) =

31.4436
31.4436 + 19.8145s + 3.9534 s 2 + s 3

magnitude vs frequency in Hertz

phase in degrees vs frequency in Hertz

200

0.9

100

0.8

0.7

-100

0.6

-200

0.5

0.5

1.5

unwrapped phase in degrees vs frequency in Hertz


0

0.4
0.3

-100

0.2
-200

0.1
0

17/11/99

0.5

1.5

-300

0.5

1.5

Captulo 8: Diseo de Filtros Digitales (Parte 1)

24

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev I

Ejemplo: Disear un filtro pasabanda de Chebyshev con las siguientes


caractersticas:
Bordes de las bandas : [1 2 3 4]=[0.89 1.019 2.221 6.155]
Mxima atenuacin en la pasabanda Ap=2dB.
Mnima atenuacin en la parabanda As=20dB.
x=(23)1/2= (1.019 2.221)1/2=1.5045
4=x2/1=2.54. Bw=3-2=1.202
Ap=1, As=(4-1)/Bw=1.3727

Con estas especificaciones para el prototipo de filtro pasobajo calculamos y n. 2 = 10 0.1 A 1 = 10 0.12 1 = 0.5849
p

10
1
cosh

0 .1 As

n=

cosh
p
1

17/11/99

1
2
1

99 2
1
cosh
0.5849
=
= 3.871 n = 4
cosh 1 (1.3754
1 )

Captulo 8: Diseo de Filtros Digitales (Parte 1)

25

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev I


De aqu obtenemos los polos del filtro aplicando las frmulas de los
polos vistas anteriormente.

= n1 sinh 1 ( 1 ) = 14 sinh 1 (
k =

( 2 k 1)
2n

( 2 k 1)
8

1
0 . 5849

) = 0.2707

k = 1,2,3,4

s1 = sinh(0.2707) sin ( 8 ) + j cosh(0.2707) cos( 8 ) = 0.1049 + j 0.958


s2 = sinh(0.2707) sin ( 38 ) + j cosh(0.2707) cos( 38 ) = 0.2532 + j 0.3968
s3 = sinh(0.2707) sin ( 58 ) + j cosh(0.2707) cos( 58 ) = 0.2532 j 0.3968
s 4 = sinh(0.2707) sin ( 78 ) + j cosh(0.2707) cos( 78 ) = 0.1049 j 0.958

)(

QN (s ) = (s s1 )(s s2 )(s s3 )(s s 4 ) = s 2 + 0.2098 s + 0.9287 s 2 + 0.5064 s + 0.2216

= s 4 + 0.7162 s 3 + 1.2565s 2 + 0.5167s + 0.2058


Como n es par
K=

17/11/99

QN (0 )
1+ 2

= 0.1634 H N (s ) =

0.1634
s 4 + 0.7162 s 3 + 1.2565s 2 + 0.5167s + 0.2058

Captulo 8: Diseo de Filtros Digitales (Parte 1)

26

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev I


Ahora hay que hacer la transformacin para el filtro pasabanda
s 2 + 2x

s
H A (s ) =

sBw

s 2 + 2.2635
1.202 s
0.1148
4

s + 2.2635
s + 2.2635
s + 2.2635
s + 2.2635

+ 0.7162
+ 1.2565
+ 0.5167
+ 0.2058
s
s
s
s
1
.
202
1
.
202
1
.
202
1
.
202

0.34 s 4
s 8 + 0.8604 s 7 + 10.87s 6 + 6.75s 5 + 39.39 s 4 + 15.27 s 3 + 55.69 s 2 + 9.99 s + 26.25
magnitude vs frequency in Hertz

phase in degrees vs frequency in Hertz

200

0.9

100

0.8

0.7

-100

0.6

-200

0.5

17/11/99

0.2

0.4

0.6

0.8

1.2

unwrapped phase in degrees vs frequency in Hertz

0.4

0.3

-200

0.2

-400

0.1

-600

0.2

0.4

0.6

0.8

1.2

-800

0.2

0.4

0.6

0.8

1.2

Captulo 8: Diseo de Filtros Digitales (Parte 1)

27

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II


Aproximacin de Chebyshev II

Se desea disponer de un filtro con una fuerte transicin como es el caso de


filtro de Chebyshev tipo I, pero que a la vez tenga una respuesta lo ms
plana posible en la pasabanda. Esto se logra transfiriendo el rizado del
pasabanda en el filtro de Chebyshev I al parabanda y viceversa. De esta
forma, mediante una transformacin de frecuencia, logramos un filtro con
unas caractersticas inversas a las del filtro Chebyshev I.
Hacemos la Transformacin 1/, partiendo del filtro de Chebyshev II.

17/11/99

|H()|2 1-|H()|2

|( )|2

|( )|2

1/

|( )|2

Captulo 8: Diseo de Filtros Digitales (Parte 1)

28

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II


1

Chebyshev I H ( ) =
Mediante la Transformacin 1/
1 + 2 Tn2 ( )
obtenemos
2

H (1 ) =
2

1
1 + 2 Tn2 (1 )

H ( ) = 1 H (1 ) =
2

2 Tn2 (1 )

1 + 2 Tn2 (1 )

1
1
=
2
1 + 1 2 Tn2 (1 ) 1 + Ln ( )

La funcin Ln2() es ahora una funcin racional y no polinomial.


4
1
1
1
1
2
L2 ( ) = 2 2
=
= 4 4 2 + 4 = 2
2 =
2
4
2 2
2
2
2
2

T2 (1 ) 2( 1 ) 1
2
4
4

+
(
)

17/11/99

[ ]
2

Captulo 8: Diseo de Filtros Digitales (Parte 1)

29

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II

Proceso de diseo para los filtros Chebyshev II

Partimos de las especificaciones que aplicaremos de acuerdo al prototipo de


filtro pasobajo.
Normalizacin de frecuencias a la frecuencia de parabanda s=1, p=p/s.
La atenuacin en parabanda As la utilizamos para calcular 2.
1
As = 10 log(1 + 1 2 ) 2 = 0.1 A
10

1 )|
|H(

Empleamos la atenuacin en la pasabanda Ap, para calcular el orden n del1


filtro.

Ap = 10 log 1 + 2 2 1 1 1

cosh n cosh p

cosh 1
0.1 Ap
2
10
1

n=
cosh 1 s p )

17/11/99

Chebyshev
Tipo II

1
2

1+2

Captulo 8: Diseo de Filtros Digitales (Parte 1)

30

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II

El valor de 2 est relacionado con el rizado en la parabanda. En esa zona


2
1
(s=1), el valor |H()|2 es
2
H(1) =
=
1+1 2 1+ 2
Al contrario que en el filtro Chebyshev I, |H(0)|2 es siempre igual a 1.
Funcin de Transferencia normalizada HN(s) :
2 Tn2 (1 )
2
H (s)H ( s) = H ( ) = s j =
1 + 2 Tn2 (1 ) s j
=
Esta vez no solo tendremos polos en HN(s) sino tambin ceros.
Los polos se calculan de forma parecida al filtro Chebyshev I,
= n1 sinh 1 ( 1 )
cos(n ) = 0 k =

(2 k 1)
2n

k = 1,2,,2 n

1 pk = sin( k ) sinh( ) + j cos( k ) cosh( )

17/11/99

k = 1,2,, n

Captulo 8: Diseo de Filtros Digitales (Parte 1)

31

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II

Los ceros se calculan a partir de los ceros del polinomio de Chebyshev


Tn(1/)=cos[ncos-1(1/)]. Haciendo el cambio de variable 1/=cos.
(2 k 1)
k = 1,2,, n
Tn ( ) = cos[n ] = 0 k =
2n

Los ceros estarn por tanto en 1 k = cos k k = sec k


Sustituyendo k por s/j, obtengo los ceros de la funcin de Transferencia.

zk = j seck k = 1,2,, n . Estos ceros tienen simetra conjugada,


por lo que zk = j sec k = jk k = 1,2,int(12 n)

La forma final de la funcin de Transferencia Normalizada HN(s) es


s 2 + 12 )(s 2 + 22 )(s 2 + 2m )
(
PN (s)
H N (s ) = K
m = int( 12 n)
=K
Q N (s )
( s p1 )(s p2 )(s pn )
K=

17/11/99

PN (0)
QN (0)

Captulo 8: Diseo de Filtros Digitales (Parte 1)

32

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II

Ejemplo: El mismo filtro pasabaja realizado anteriormente p=4,


Ap=1dB, s=8, Ap=20dB.
Normalizamos en s=8 de forma que s=1, p=0.5.

1
cosh 0.1 Ap

2
10
1

=
2

1
10 0.1 As 1

= 0.0101

n=

cosh 1

)
( )
s

1
2

= 2.78 n = 3

= ( 1n ) sinh 1 ( 1 ) = 0.9977
1 s1 = sinh(0.9977) sin( 6 ) + j cosh(0.9977) cos(6 ) = 0.5859 + j1.3341
.
1 s2 = sinh(0.9977) sin( 2 ) + j cosh(0.9977) cos(2 ) = 11717
1 s3 = sinh(0.9977) sin( 56 ) + j cosh(0.9977) cos( 56 ) = 0.5859 j1.3341
s1 = 0.276 j 0.6284

2
s2 = 0.8535
QN (s ) = (s + 0.8535) s + 0.552 s + 0.4711
s3 = 0.276 + j 0.6284

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

33

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II


z k = j sec k

k =1

z1 = j sec( 6 ) = j11547
.
PN (s) = s 2 + 1.3333

K=

QN (0) 0.8535 0.4711


=
= 0.3016
PN (0)
1.3333

s + 1.3333)
(
(s) = 0.3016
(s + 0.8535)(s + 0.552 s + 0.4711)
2

HN

Para desnormalizar esta funcin y obtener HA(s) hacemos la transformacin ss/s=s/8.


s + 85.3312)
(
(s) = 2.4128
(s + 6.828)(s + 4.416 s + 30.1504)
2.412 s + 205.867)
(
=
(s + 11.244s + 60.3s + 205.867)
2

HA

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

34

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II


magnitude vs frequency in Hertz

phase in degrees vs frequency in Hertz

1.2

200
100

1
0
-100

0.8

-200
0.6

0.5

1.5

unwrapped phase in degrees vs frequency in Hertz


0

0.4

-50
-100

0.2

-150
0

0.5

1.5

-200

0.5

1.5

Ejemplo: Haremos el ejemplo anterior del pasabanda con un filtro de


Chevishev II. [1 2 3 4]=[0.89 1.019 2.221 6.155], Ap=2dB, As=20dB.
Con estos datos y a partir de las tablas de transformacin de parabanda a
pasobajo :

x=(23)1/2= (1.019 2.221)1/2=1.5045


4=x2/1=2.54. Bw=3-2=1.202
Ap=1, As=(4-1)/Bw=1.3754

Como normalizamos en la frecuencia de parabanda :s=1, p=Ap/As=0.727


17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

35

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II


Con estos datos calculamos
=
2

1
10 0.1 As 1

1
2

1
cosh 0.1 Ap

2
1
10
n=
= 3.87 n = 4
cosh 1 ( s p )

yn:

= 0.0101

Y a partir de aqu el resto


= ( 1n ) sinh 1 ( 1 ) = 0.7483
1 s1 = sinh(0.7483) sin(8 ) + j cosh(0.7483) cos( 8 ) = 0.3138 + j11948
.
1 s2 = sinh(0.7483) sin( 38 ) + j cosh(0.7483) cos( 38 ) = 0.7577 + j 0.4949
1 s3 = sinh(0.7483) sin( 58 ) + j cosh(0.7483) cos( 58 ) = 0.7577 j 0.4949
1 s 4 = sinh(0.7483) sin( 78 ) + j cosh(0.7483) cos( 78 ) = 0.3138 j11948
.
s1 = 0.2056 j 0.7829

s2 = 0.9251 j 0.6042
2
2
QN (s ) = s + 0.4112 s + 0.6552 s + 1.8502 s + 1.2209
s3 = 0.9251 + j 0.6042
s4 = 0.2056 + j 0.7829

17/11/99

)(

Captulo 8: Diseo de Filtros Digitales (Parte 1)

36

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II


z k = j sec k

k = 1,2

z1 = j sec( 8 ) = j1.0824
2
.
)( s 2 + 6.8284)
PN (s) = ( s + 11716
3
z 2 = j sec( 8 ) = j 2.6131
K=

QN (0)
= 0.1
PN (0)

H N (s) = 0.1
= 0.1

(s

( s 2 + 11716
.
)( s 2 + 6.8284)
2

)(

+ 0.4112 s + 0.6552 s 2 + 1.8502 s + 1.2209


s 4 + 8s 2 + 8

s 4 + 2.2614s 3 + 2.6369s 2 + 1.7143s + 0.8

Haciendo la transformacin a pasabanda s


H A (s ) =

17/11/99

s 2 2x
sBw

s 2 2.1635
1.202 s

0.1s 8 + 2.0613s 6 + 9.9766 s 4 + 10.5609s 2 + 2.625


s 8 + 2.718s 7 + 12.864 s 6 + 21.435s 5 + 49.658s 4 + 48.519s 3 + 65.908s 2 + 31.524 s + 26.250

Captulo 8: Diseo de Filtros Digitales (Parte 1)

37

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-Aprox. Chebyshev II


magnitude vs frequency in Hertz

phase in degrees vs frequency in Hertz

1.2

200
100

1
0
-100

0.8

-200
0.6

0.2

0.4

0.6

0.8

1.2

unwrapped phase in degrees vs frequency in Hertz


400

0.4

200
0

0.2

-200
0

17/11/99

0.2

0.4

0.6

0.8

1.2

-400

0.2

0.4

0.6

0.8

1.2

Captulo 8: Diseo de Filtros Digitales (Parte 1)

38

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I

Una vez estudiadas las tcnicas de diseo de filtros analgicos retomamos el objetivo inicial de este tema, que era transformar las funciones de
Transferencia de los filtros del plano s al plano z. En esto consista el
Mtodo I de diseo de filtros digitales.
Hay varios mtodos para transformar una funcin de s en otra funcin de
z. Estamos interesados en transformaciones que hagan que la funcin en z
sea tambin racional. Esto hace que las transformaciones que vamos a ver
son slo aproximaciones.
Una transformacin s z debe cumplir dos condiciones fundamentales,

17/11/99

Estabilidad: la mitad izquierda del plano s debe transformarse dentro del


crculo unidad en el plano z.
A cada frecuencia analgica dentro del intervalo (-, ) le debe corresponder
una nica frecuencia digital en el intervalo (- fs/2, fs/2). Esto evita el problema
del aliasing.

Captulo 8: Diseo de Filtros Digitales (Parte 1)

39

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I

Los mtodos que vamos a ver son :

17/11/99

Igualar las respuestas temporales como un impuso, un escaln, una rampa,


etc. (Transformacin Invariante a la Respuesta).
Igualar trminos en una H(s) factorizada (Transformada Z Pareada).
Conversin de ecuaciones diferenciales a ecuaciones diferencia utilizando
operadores diferencia.
Integracin numrica de ecuaciones diferenciales usando algoritmos de
integracin.
Aproximaciones racionales a z exp(sts) o s (1/ts)ln(z).

Captulo 8: Diseo de Filtros Digitales (Parte 1)

40

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TIR

Transformacin Invariante a la Respuesta (TIR)


Se elige una entrada x(t) (impulso, escaln o rampa).
Determinar la respuesta y(t) como la L-1{H(s)X(s)}.

Muestrear y(t) a intervalos ts y obtener y[n] y su Transformada Z Y(z).

Muestrear x(t) para obtener x[n] y X(z).

Evaluar H(z) como Y(z)/X(z).

Este tipo de transformacin est limitada por la frecuencia de muestreo fs que


restringe su aplicacin a aquellos sistemas cuya respuesta est limitada por fs
por problemas de aliasing ya que la funcin de transferencia transformada es una
funcin peridica de periodo 1/ts. Esto hace que este tipo de transformacin es ms
apropiada para filtros pasobajos de Butterworth y Chebyshev I que para filtros de
Chebyshev II.
Una caso particular de este tipo es la Transformacin Invariante a Impulso.
Supongamos que tenemos H(s) en forma de fracciones parciales. Para cada
trmino podemos determinar su equivalente en z a travs de su respuesta a
impulso. Los trminos y sus equivalencias en z estn tabulados en la tabla adjunta.

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

41

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TIR


Transformaciones Invariantes al Impulso
Trmino

H(s)

H(z)
a=exp(-pts)

Unico
Complejo
Conjugado

Repetido

Repetido

Repetido

Modificado

Modificado

A
(s + p )

Az
(z a )

A exp( j) A exp( j)
+
(s + p + jq ) (s + p jq )

2 z 2 A cos() 2 Aaz cos( + qts )

A
(s + p ) M

A
d
z
d d
ts( M 1) z z  z

dz dz
dz z a
( M 1)!

z 2 2 az cos(qts ) + a 2

A
(s + p)2
A
(s + p)3
A
(s + p )
A exp( j) A exp( j)
+
(s + p + jq ) (s + p jq )

1
2

Ats2

az
(z a)2

Ats3

za(z + a)
(z a)3

Az
z+a
12 A = 12
(z a )
za

2 z 2 A cos() 2 Aaz cos( + qts )


z 2 2 az cos(qts ) + a 2

A cos()

Mo di

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

42

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TIR


Ejemplo: Determinar H(z) a partir de H(s) utilizando la Transformacin
Invariante al Impulso.
H (s ) =

4
2
1+ j
1 j
=
+
+
(s + 1) s 2 + 4s + 5 (s + 1) (s + 2 + j ) (s + 2 j )

2 exp( j 34 )
2 exp( j 34 )
2
=
+
+
(s + 1)
(s + 2 + j )
(s + 2 j )
H (z ) =

2z

(z e )
ts

2 z 2 2 cos( 34 ) 2 ze 2 ts 2 cos(t s 34 )
z 2 2e 2 ts z cos(t s ) + e 4 ts

0.0174 z 2 + 0.0137 z
2 z 2 + 1.4658z
2z
Si t s = 0.1 H (z ) =
+
=
z 0.9048 z 2 1.629 z + 0.67 (z 0.9048) z 2 1.629 z + 0.67

17/11/99

0.0174 z 2 + 0.0137 z
z 3 2.5338z 2 + 2.1439 z 0.6062

Captulo 8: Diseo de Filtros Digitales (Parte 1)

43

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TIR


H(z)-H(s)
magnitude vs digital frequency F

magnitude vs frequency in Hertz

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0.1

0.2

0.3

0.4

0.5

phase in degrees vs digital frequency F


200

100

100

-100

-100
0

0.1

0.2

0.3

0.4

0.5

unwrapped phase in degrees vs digital frequency F

17/11/99

-200

-100

-100

-200

-200

0.1

0.2

0.3

0.4

0.5

unwrapped phase in degrees vs frequency in Hertz

-300

phase in degrees vs frequency in Hertz

200

-200

-300

Captulo 8: Diseo de Filtros Digitales (Parte 1)

44

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TZP

Transformada Z Pareada (TZR)


Surge a partir de la Transformacin Invariante al Impulso de 1/(s+a).
z exp( at s )
z
1

(s + a )
s+a
z
z exp( at s )

Esta transformacin usa esta forma para sustituir cada trmino del
numerador y del denominador en una H(s) factorizada y generar el
consiguiente H(z) :
M

H (s ) = K 0

(s zi )
i =1
N

(s pk )

z exp(zi t s )]
[

( NM)
M

H (z ) = K z

i =1
N

[z exp( pk t s )]

k =1

La constante K se escoge para que las ganancias sean iguales a una


frecuencia determinada. En el caso de haber races complejas,
podemos hacer la siguiente transformacin :
(s + p jq)(s + p + jq)

17/11/99

k =1

z 2 2 ze pts cos(qt s ) + e 2 pts

z2
Captulo 8: Diseo de Filtros Digitales (Parte 1)

45

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TZP

Modificaciones al TZR: Hay que transformar tambin los ceros de


H(s) en s=, que equivale a z=-1. La razn de esta eleccin es que
f= en el dominio analgico equivale a f=fs en el dominio discreto o
z=-1. Haremos dos tipos de modificaciones:
1 Reemplazar todos los ceros en z=0 por z=-1 (o z(N-M) por (z+1)(N-M)).
2 Reemplazar todos los ceros excepto uno en z=0 por z=-1.

Ejemplo: Utilizar el mtodo TZR para transformar H(s) en H(z).


H (s ) =

4
1
3
H
z
Kz

=
(
)
(s + 1) s 2 + 4 s + 5
z e ts z 2 2 ze 2 ts cos(t s ) + e 4 ts

)(

Modificaciones ts = 0.1s
H1 (z ) =
H 2 (z ) =

17/11/99

K (z + 1)3

(z 0.9048)(z 2 1.6293z + 0.67)


Kz(z + 1)2

(z 0.9048) z 2 1.6293z + 0.67

=
=

390 10 6 (z + 1)3
z 3 2.5341z 2 + 2.1442 z 0.6062
780 10 6 z(z + 1)2
z 3 2.5341z 2 + 2.1442 z 0.6062

Captulo 8: Diseo de Filtros Digitales (Parte 1)

46

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TZP


magnitude vs frequency in Hertz

H(s)-H1(z)

magnitude vs digital frequency F

0.8

0.8

0.7

0.7

0.6

0.6

0.5

0.5

0.4

0.4

0.3

0.3

0.2

0.2

0.1

0.1

phase in degrees vs frequency in Hertz


200

100

100

-100

-100
0

unwrapped phase in degrees vs frequency in Hertz

17/11/99

-200

-100

-100

-200

-200

0.3

0.4

0.5

0.1

0.2

0.3

0.4

0.5

unwrapped phase in degrees vs digital frequency F

-300

0.2

phase in degrees vs digital frequency F

200

-200

0.1

-300

0.1

0.2

0.3

0.4

0.5

Captulo 8: Diseo de Filtros Digitales (Parte 1)

47

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TAD

Transformacin a travs de algoritmos diferencia (TAD)


Se trata de convertir una operacin de derivada en su correspondiente
ecuacin diferencia.
Existen varias formas de calcular la derivada a partir de datos discretos
(Tabla).
Algoritmos para la Diferenciacin Discreta
Diferencia
Hacia Atrs
Central
Hacia Adelante

17/11/99

Algoritmo

x[n] x[n 1]
ts
x[n + 1] x[n 1]
y[n] =
2ts
y[n] =

y[n] =

x[n + 1] x[n]
ts

Transformacin

s
s

z 1
zts
z2 1

2 zts
z 1
s
ts

El algoritmo que mejor se comporta en cuanto a la estabilidad es el


algoritmo hacia atrs. Por tanto, esta transformacin consistir en
sustituir el valor de s en H(s) por (z-1)/zts siendo el resultado H(z).
Captulo 8: Diseo de Filtros Digitales (Parte 1)

48

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TAD

Veamos lo que ocurre en esta transformacin en cuanto a la estabilidad.


s
z=
z=
Si

1 z 1
ts z

1
1 1 (1 + s t s )
= +
1 s t s 2 2 (1 s t s )

Slo estamos interesados en lo que ocurre


en el rgimen estacionario por lo que
sustituiremos s por j.

1 1 (1 + j t s )
1 1

z =
2 2 (1 j t s )
2 2
z = u + jv
2

1
1

2
u
v

+
=

2
4

Esta ecuacin representa una circunferencia de


radio 1/2 centrada en (1/2,0)

Esto significa que el plano izquierdo del plano s se transforma en un crculo de radio 1/2 que est dentro del circulo unidad. Ya que los polos de un
filtro pasobajo se encuentran aprox. en esa zona, esta transformacin es
ms adecuada para esos filtros.
17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

49

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TAI

Transformacin a travs de algoritmos de integracin numrica (TAI)


Aqu tenemos bastantes ms algoritmos para hacer una integracin
numrica. La Tabla muestra algunos algoritmos tpicos.

Algoritmo
Rectangular(1)
Trapezoidal(1)
Adams(2)
Adams(3)
Simpsom(2)
Tick(2)
17/11/99

Algortimos de Integracin numrica


Entre parntesis se indica el orden del algoritmo
Frmula para y[n]
y[n] = y[n 1] + x[n]ts
y[n] = y[n 1] +

{x[n] x[n 1]}ts

2
{5 x[n] + 8 x[n 1] x[n 2]}ts
y[n] = y[n 1] +
12
{9 x[n] + 19 x[n 1] 5 x[n 2] + x[n 3]}ts
y[n] = y[n 1] +
24
{x[n] + 4 x[n 1] + x[n 2]}ts
y[n] = y[n 2] +
3

y[n] = y[n 2] + {0.3584 x[n] + 1.2832 x[n 1] + 0.3584 x[n 2]}ts


Captulo 8: Diseo de Filtros Digitales (Parte 1)

50

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TAI

Las transformaciones para cada algoritmo son


Algoritmo
Rectangular (1)
Trapezoidal (1)
Adams (2)

17/11/99

Transformacin sz
Transformacin
1 z 1
s
ts z
2 z 1
s
ts z + 1
2
12 z z
s
ts 5z 2 + 8 z 1

Adams (3)

z3 z2
24
s
ts 9 z 3 + 19 z 2 5z + 1

Simpson (2)

2
3 z 1
s
ts z 2 + 4 z + 1

Tick (2)

z2 1
1
s
ts 0.3584 z 2 + 1.2832 z + 0.3584

Captulo 8: Diseo de Filtros Digitales (Parte 1)

51

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TBL


Excepto los algoritmos de Simpson y Tick, el resto producen H(z)
estables a partir de un H(s) estable para cualquier valor de ts.
Transformacin Bilineal
Es la Transformacin dada por el algoritmo trapezoidal

17/11/99

2 + st s
2 z 1
s
ts z + 1
2 st s

(1)

Tomamos ts=2, para simplificar las expresiones. Sustituimos s por j


1 + j
z=
en la expresin anterior :
1 j
Esta expresin nos dice que un punto del eje imaginario de s, se
transforma en un punto en el crculo unidad en el plano z.
(1 + ) 2 + 2
1 + ( + j ) (1 + ) + j
2
z =
=
Generalizando, para s=+j, z =
(1 ) 2 + 2
1 ( + j ) (1 ) j
lo que implica que un punto de la mitad del plano s donde < 0, se
transforma en un punto dentro del crculo unidad en el plano z. Por lo
tanto, un diseo estable en s, ser tambin estable en z bajo la
transformacin bilineal. Adems, no hay aliasing, ya que a cada
frecuencia analgica le corresponde una nica frecuencia digital.
Captulo 8: Diseo de Filtros Digitales (Parte 1)

52

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TBL

Nos interesa la relacin entre los puntos del eje imaginario de s con los
punto del crculo unidad en el plano z, de la ecuacin (1) :
2 e j D t s 1 2 e j D t s 1
2
Dts
j A =
= j tan
=

2
t s e j D t s + 1 t s e j D t s + 1
ts

A =

Estas expresiones nos indican que existe una distorsin en las frecuencias cuando se hace la Transformacin Bilineal. El rango entero de
frecuencias analgicas se mapea con frecuencias digitales entre -fs/2 y
fs/2. Hay una compresin de frecuencias o una distorsin frecuencial
(la relacin es no-lineal). Para compensarlo, lo que se hace es predistorsionar (prewarping) las especificaciones del filtro analgico original
mediante la ecuacin ( es la frecuencia digital, 2f/fs):
A =

17/11/99

2
2
t
t
tan D s D = tan 1 A s
2
2
ts
ts

2
2
t 2

tan D s = tan D = tan
2 ts
2
ts
2 f s ts

Captulo 8: Diseo de Filtros Digitales (Parte 1)

53

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TBL

Ejemplo 1: Dado el filtro H(s)=3/(s2+3s+3), disear un filtro digital cuya


magnitud a f0=3KHz sea igual a la magnitud de H(s) en A=4rad/s, siendo
la frecuencia de muestreo fs=12 KHz.
X = 2 fs tan(D / 2fs) = 24000 tan(23/24) = 24000 rad/s
Escalamos H(s) con X HX(s)=H(sA/X)=H(s/6000)
H(z)=HX(s)|s=24000 (z-1)/(z+1)= H(s/6000)|s=24000 (z-1)/(z+1) =
3(z+1)2/(31z2-26z+7)
Ejemplo 2 : El filtro H(s)=(s2+1)/(s2+4s+1) tiene una frecuencia de corte
de 1rad/s. Disear un filtro digital cuya respuesta a fD=60Hz sea igual a la
de H(s) en A=1 rad/s, siendo fs=240Hz.
X = 2 fs tan(D / 2fs) = 480 tan(260/480) = 480 rad/s

HX(s)=H(sA/X)=H(s/480)

H(z)=HX(s)|s=480(z-1)/(z+1)= (z2+1)/(3z2-1)

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

54

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TBL

En los ejemplos anteriores se observa que las operaciones a realizar son


transparentes al valor tomado para fs, de forma que podramos haber
utilizado la siguiente ecuacin para predistorsionar :
X = 2 tan(/2)

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

55

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TBL

Ejemplo 3 : El filtro de pasobajo de Chebyshev I obtenido en anteriores


ejemplos era del tipo H(s)=31.4436/(s3+3.9534s2+19.8145s+31.4436).
Utilizando la transformacin bilineal disear un filtro digital cuya
respuesta a fD=0.7Hz sea igual a la respuesta de H(s) en f=0.7Hz. La
frecuencia de muestreo es fs=20Hz.
X = 2 tan(/2)= 2 tan(2 0.7/(2 20))= 0.2208

HX(s)=H(sA/X)=H(19.919s)
H(z)=HX(s)|s=2(z-1)/(z+1)= H(19.919s)|s=2 (z-1)/(z+1)

H (z ) =

17/11/99

z 3 + 3z 2 + 3z + 1
2236.73z 3 6204.64 z 2 + 5811.52 z 1835.6

Captulo 8: Diseo de Filtros Digitales (Parte 1)

56

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TBL


magnitude vs digital frequency F

phase in degrees vs digital frequency F

200

0.9

100

0.8

0.7

-100

0.6

-200

0.1

0.2

0.3

0.4

0.5

0.5

unwrapped phase in degrees vs digital frequency F

0.4

0.3

-100

0.2

-200

0.1

-300

0.1

0.2

0.3

0.4

0.5

-400

magnitude vs frequency in Hertz

0.1

0.2

0.3

0.4

0.5

phase in degrees vs frequency in Hertz

200

0.9

100

0.8

0.7

-100

0.6

-200

0.5

10

unwrapped phase in degrees vs frequency in Hertz


0

0.4
0.3

-100

0.2
-200

0.1
0

17/11/99

10

-300

10

Captulo 8: Diseo de Filtros Digitales (Parte 1)

57

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I-TBL

Ejemplo : Disear un filtro digital de Chebyshev de Pasabanda con las


siguientes especificaciones : Frecuencias de pasabanda 1.8KHz y 3.2 KHz.
Frecuencias de Parabanda 1.6KHz y 4.8KHz. Atenuaciones Ap=2dB y
As=20dB. La frecuencia de muestreo es fs=12KHz.
Predistorsionamos las especificaciones:
. 24) = 0.89
1 = 2 tan(2 16

. 24) = 1019
.
2 = 2 tan(2 18

3 = 2 tan(2 3.2 24) = 2.221


.
4 = 2 tan(2 4.8 24) = 6155

Diseamos el filtro,

0.3411s 4
H ( s) = 8
s + 0.8608 s 7 + 10.89 s 6 + 6.74 s 5 + 39.38 s 4 + 15.26 s 3 + 55.67 s 2 + 9.98 s + 26.24

Se hace la transformacin s 2 (z-1)/(z+1)

H ( z) =

17/11/99

0.0024 z 8 0.0096z 6 + 0.0144 z 4 0.0096z 2 + 0.0024


z 8 1.938z 7 + 4.435z 6 5.073z 5 + 6.239 z 4 4.464 z 3 + 3.438z 2 1.304 z + 0.5928
Captulo 8: Diseo de Filtros Digitales (Parte 1)

58

5 Curso-Tratamiento Digital de Seal

Filtros IIR-Mtodo I
Analog(:) Predistorsin(-) and Sin Predistorsin(--) Spectrum vs f in Hz
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0

17/11/99

1000

2000

3000

4000

5000

6000

Captulo 8: Diseo de Filtros Digitales (Parte 1)

59

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

MATLAB dispone de funciones que facilitan el diseo de filtros, tanto


analgicos como digitales.
Funciones para determinar el orden necesario para implementar un
determinado filtro :
>> [N, Wn] = buttord(Wp, Ws, Rp, Rs)
Calcula el orden de un filtro pasobajo digital de Butterworth, con
Ws la frecuencia de pasabanda, Wp la parabanda, y Rp y Rs las atenuaciones respectivas de pasabanda y parabanda en decibelios. Wp y
Ws deben ser entre (0,1), siendo 1 la frecuencia de Nyquist (fs/2).
N es el orden del filtro y Wn la frecuencia de 3db.
>> [N, Wn] = buttord(Wp, Ws, Rp, Rs,'s')
Lo mismo que antes, pero para un filtro pasobajo analgico. Aqu
los valores de Wp y Ws pueden tomar cualquier valor en radianes.
Para calcular el orden de otros tipos de filtro (pasoalto, parabanda o pasabanda) deberemos aplicar primero las transformaciones al
prototipo de filtro pasobajo (Tabla 2).

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

60

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB


>> [N, Wn] = cheb1ord(Wp, Ws, Rp, Rs)
Clculo del orden necesario para un filtro digital pasobajo de
Chebyshev I, con las especificaciones dadas. Las mismas
consideraciones que en el caso del filtro de Butterworth.
>> [N, Wn] = cheb1ord(Wp, Ws, Rp, Rs, 's')
Lo mismo pero para el filtro analgico
>> [N, Wn] = cheb2ord(Wp, Ws, Rp, Rs)
Filtro digital de Chebyshev II
>> [N, Wn] = cheb2ord(Wp, Ws, Rp, Rs, 's')
Filtro analgico de Chebyshev II
>> [N, Wn] = ellipord(Wp, Ws, Rp, Rs)
Filtro digital elptico
>> [N, Wn] = ellipord(Wp, Ws, Rp, Rs, 's')
Filtro analgico elptico

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

61

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

Ejemplo 1: Determinar el orden necesario para un filtro analgico pasabanda con


las siguientes especificaciones y para todos los tipos de filtros estudiados :
Pasabanda 30-50 Hz , Parabanda < 5Hz y >200 Hz, Ap<2dB, As>40dB

Hacemos primero la transformacin de Pasabanda a Pasobajo, de acuerdo con la Tabla


2: Recalculo f1, f1 = f2 f3 / f4 = 7.5 Hz. La frecuencia de pasobajo es f3 - f2 = 20 Hz, y la
frecuencia de pasoalto es f4 - f1 = 192.5 Hz.

>> [N,Wn]=buttord(2*pi*20,2*pi*192.5,2,40,s)
N = 3
Wn = 2*pi*41.4736
>> [N,Wn]=cheb1ord(2*pi*20, 192.5,2,40,s)
N = 2
Wn = 2*pi*20
>> [N,Wn]=cheb2ord(2*pi*20, 2*pi*192.5,2,40,s)
N = 2
Wn = 2*pi*162.3265
>> [N,Wn]=ellipord(2*pi*20, 2*pi*192.5,2,40,s)
N = 2
Wn = 2*pi*20

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

62

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

Ejemplo 2: Lo mismo de antes, pero con filtros digitales. Elegir la frecuencia de


muestreo.

La frecuencia de muestreo deber ser > 2 fmx = 400 Hz. Tomo fs = 1000 Hz.
Normalizando las frecuencias con respecto a la frecuencia de Nyquist (fs/2) :
f1 = 0.01, f2 = 0.06, f3 = 0.1, f4 = 0.4.
Recalculamos f1 de acuerdo con Tabla 2, f1 = 0.015 y hacemos la Transformacin a
pasobajo,
>> [N,Wn]=buttord(0.04,0.385,2,40)
N = 3
Wn = 0.0941
>> [N,Wn]=cheb1ord(0.04,0.385,2,40)
N = 2
Wn = 0.04
>> [N,Wn]=cheb2ord(0.04,0.385,2,40)
N = 2
Wn = 0.3006
>> [N,Wn]=ellipord(0.04,0.385,2,40)
N = 2
Wn = 0.04

17/11/99

Se puede obtener un filtro de menor orden si utilizamos una frecuencia de muestreo


menor (por ejemplo, 500). El aliasing no ser tan significativo ya que el la respuesta de
filtro a esas frecuancias es muy pequea ( > 40 dB).

Captulo 8: Diseo de Filtros Digitales (Parte 1)

63

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

Funciones para determinar los coeficientes del filtro:


>> [B,A] = butter(N,Wn)
B y A son los coeficientes del numerador y del denominador respectivamente, en orden decreciente de un filtro de Butterworth digital. N es el orden del filtro (calculado previamente) y Wn es la
frecuencia de corte. El valor de Wn debe estar normalizado con la
frecuencia de Nyquist. Para disear un filtro pasobajo Wn es un
escalar entre (0,1). La pasabanda es (0,Wn) y la parabanda es
(Wn,1). Para disear un filtro de pasoalto, el comando a escribir
es:
>> [B,A] = butter(N,Wn,high)
donde Wn es un escalar.
Un filtro Parabanda se determina de la siguiente forma:
>> [B,A] = butter(N,[W1 W2])
Es decir, Wn es en este caso un vector que especifica las
frecuencias de pasabanda.
Finalmente, para un filtro Parabanda:
>> [B,A] = butter(N,[W1 W2],stop)
[W1 W2] son las frecuencias de Parabanda.

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

64

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB


>> [B,A] = cheby1(N,R,Wn)
Diseo de filtros digitales de Chebyshev I. Se deben especificar el
orden del filtro N, el rizado de pasabanda permitido R y la frecuencia de corte normalizada con respecto a la frecuencia de Nyquist. Para disear filtros de pasoalto, pasabanda y parabanda se
siguen las mismas reglas que en el diseo de filtros de Butterworth.
>> [B,A] = cheby2(N,R,Wn)
Lo mismo que antes, pero R es el rizado de parabanda.
>> [B,A] = ellip(N,Rp,Rs,Wn)
Rp y Rs son los rizados de pasabanda y parabanda.
Aadiendo a los comandos anterior la optin s, los vectores B y A son
los coeficientes del filtro analgico correspondiente. Sigue siendo
vlido lo que se mencion anteriormente acerca del diseo de filtros
pasoalto, pasabanda y parabanda, pero Wn puede tomar cualquier valor en
radianes (no est limitado entre (0,1)):
>> [B,A] = butter(N,Wn,s)
>> [B,A] = cheby1(N,R,Wn,s)
>> [B,A] = cheby2(N,R,Wn,s)
>> [B,A] = ellip(N,Rp,Rs,Wn,s)
17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

65

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

Ejemplo 1: Disear el filtro analgico con las especificaciones anteriores para


todos los tipos de filtros estudiados (Butterworth, Chebyshev I, Chevyshev II y
Elptico).

Utilizaremos los resultados del anterior ejercicio.

>> [B,A]=butter(3,2*pi*[30 50],s)


B = 1.0e+006 * [0 0.0000 0.0000 1.9844 0.0000 0.0000 0.0000]
A = 1.0e+014 * [0.0000 0.0000 0.0000 0.0000 0.0001 0.0088 2.0766]
>> [B,A]=cheby1(2,2,2*pi*[30 50],s)
B = 1.0e+004 * [0 0.0000 1.0324 0.0000 0.0000]
A = 1.0e+009 * [0.0000 0.0000 0.0001 0.0060 3.5067]
>> [B,A]=cheby2(2,40,2*pi*[30 50],s)
B = 1.0e+007 * [0.0000 0.0000 0.0002 0.0000 3.5067]
A = 1.0e+009 * [0.0000 0.0000 0.0001 0.0015 3.5067]
>> [B,A]=ellip(2,2,40,2*pi*[30 50],s)
B = 1.0e+007 * [0.0000 0.0000 0.0012 0.0000 3.5120]
A = 1.0e+009 * [0.0000 0.0000 0.0001 0.0059 3.5067]

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

66

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

Ejemplo 2: Disear el filtro digital con las especificaciones anteriores para todos
los tipos de filtros estudiados (Butterworth, Chebyshev I, Chevyshev II y Elptico).

La frecuencia de muestreo elegida es fs=1000 Hz.

>> [B,A]=butter(3,[0.06 0.1])


B = 1.0e-003 * [0.2196 0.0000 -0.6588 0.0000 0.6588 0.0000 -0.2196]
A = [1.0000 -5.5792 13.1338 -16.6913 12.0771 -4.7177 0.7776]
>> [B,A]=cheby1(2,2,[0.06 0.1])
B = [0.0025 0 -0.0049 0.0000 0.0025]
A = [1.0000 -3.7768 5.4667 -3.5906 0.9040]
>> [B,A]=cheby2(2,40,[0.06 0.1])
B = [0.0100 -0.0383 0.0568 -0.0383 0.0100]
A = [1.0000 -3.8577 5.6956 -3.8097 0.9753]
>> [B,A]=ellip(2,2,40,[0.06 0.1])
B = [0.0120 -0.0369 0.0499 -0.0369 0.0120]
A = [1.0000 -3.7773 5.4682 -3.5922 0.9046]

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

67

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

Funciones para hacer transformaciones de s a z :


>> [NUMd,DENd] = bilinear(NUM,DEN,Fs)
Hace la Transformacin bilineal entre la funcin de Transferencia
en s dada por los coeficientes NUM y DEN, a la funcin de
Transferencia en z dada por NUMd y DENd. Se debe especificar
tambin la frecuencia de muestreo Fs en Hz.
>> [Bz,Az] = impinvar(B,A,Fs)
Hace la transformacin invariante al impulso de la funcin de
Transferencia en s definida por los vectores de coeficientes B y A,
a una frecuencia de muestreo de Fs Hz.

Ejemplo: Transformar el filtro analgico de Butterworth diseado


anteriormente en un filtro digital (Fs=1000 KHz).
Predistorsionamos las frecuencias que nos piden
[5 30 50 200]Hz [0.03149 0.18904 0.31676 1.45308] rad
Diseamos el filtro analgico para estas frecuencias.
>> [N,Wn] = buttord(0.12772,1.41187,2,40,s)
N = 3
Wn = 0.3042
>> [B,A] = butter(N,[0.18904 0.31676],s)
B = [0 0.0000 0.0000 0.0021 0.0000 0.0000 0.0000]
A = [1.0000 0.2554 0.2123 0.0327 0.0127 0.0009 0.0002]

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

68

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB


>> [Bd,Ad] = bilinear(B,A,1)
Bd = 1e-3 *[0.2196 0.0000 -0.6589 0.0000 0.6589 0.0000 -0.2196]
Ad = [1.0000 -5.5792 13.1338 -16.6913 12.0770 -4.7177 0.7776]
Por la respuesta invariante al impulso, diseo el filtro analgico
(no hay predistorsin). Los coeficientes de este filtro fueron
calculados anteriormente y eran,
>> B = 1.0e+6 *[0 0.0000 0.0000 1.9844 0.0000 0.0000 0.0000];
>> A = 1.0e+14 *[0.0000 0.0000 0.0000 0.0000 0.0001 0.0088 2.0766];
>> [Bdi,Adi] = impinvar(B,A,1000);
Bdi = [-2.5839 2.8862 0.0333 -0.0160]
Adi = [1.0000 -1.8959 0.9158]

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

69

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

Como obtener la respuesta frecuencial del filtro diseado

Para los filtros analgicos


>> H = freqs(B,A,W)
Devuelve el vector H de nmeros complejos, que es la respuesta
frecuencial al filtro cuya funcin de transferencia en s viene
dada por B y A. La respuesta frecuencial se evala en los puntos
especificados por el vector W en radianes. Ms opciones en el
Help de MATLAB.
>> plot(W,abs(H))
Dibuja la magnitud de la respuesta frecuencial del filtro.
>> plot(W,unwrap(angle(H)))
Dibuja la fase de la respuesta frecuencial del filtro. La
funcin unwrap hace que no haya discontinuidad en la fase por el
paso de + a -.

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

70

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

Para los filtros digitales


>> H = freqz(B,A,F,Fs)
Devuelve el vector H de nmeros complejos, que es la respuesta
frecuencial al filtro cuya funcin de transferencia en z viene
dada por B y A. La respuesta frecuencial se evala en los puntos
especificados por el vector F en Hz, siendo la frecuencia de
mustreo Fs Hz. Ms opciones en el Help de MATLAB.
>> gd = grpdelay(B,A,F,Fs)
Calcula retraso de grupo (-d/dt) de la funcin de Transferencia formada por los polinomios B y A. Se evala en los puntos
especificados por W en radianes. Para ms opciones de esta
funcin ver el Help de MATLAB.
>> plot(F,abs(H))
Dibuja la magnitud de la respuesta frecuencial del filtro.
>> plot(F,unwrap(angle(H)))
Dibuja la fase de la respuesta frecuencial del filtro.
>> plot(F,gd)
Dibuja el retraso de grupo de la funcin de Transferencia
Discreta.

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

71

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

Tambin podemos disear filtros digitales mediante mtodos recursivos.


Uno de estos mtodos es el de Yule-Walker, que calcula los coeficientes del
filtro de orden N utilizando mnimos cuadrados. Para ello debemos
especificar la respuesta deseada para cada frecuencia. En MATLAB la
funcin se denonima yulewalk:
>> [B,A]=yulewalk(N,F,M)
N es el orden del filtro y F y M son dos vectores de igual longitud.
F es la frecuencia normalizada con respecto a la frecuencia de
Nyquist (0-1). Debe estar en orden creciente y el primer y ltimo
elemento del vector deben ser 0 y 1 respectivamente. M es el vector
que especifica la maginitud de la respuesta para cada elemento de F.

Ejemplo: Disear un filtro digital pasobajo de orden 5 con frecuencia de corte fc=1.3
KHz, por el mtodo de Yule-Walker. Calcular las atenuaciones a 1 KHz y 2 KHz.
Primero hay que elegir una frecuencia de muestreo. Tomamos fs=5 KHz.

>> [B,A]=yulewalk(5,[0 1 1.3 2 2.5]/2.5,[1 1 0.708 0 0])


B = [0.3155 0.8087 0.7811 0.4675 0.3284 0.1492]
A = [1.0000 0.6490 0.5046 0.5031 0.1355 0.0577]
>> H = 20*log10(abs(freqz(B,A,[1000 2000],5000)))
ans = -0.2422
-20.9538
% En decibelios

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

72

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB


>> F=0:10:2500;Fs=5000;
>> Hz = freqz(B,A,F,Fs);
>> semilogy(F,abs(Hz));
0 dB

Magnitud (dB)

-20 dB-1

-40 dB

-60 dB 0

500

1000

1500

2000

2500

Frecuencia (Hz)

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

73

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros IIR con MATLAB

Finalmente, cuando diseemos un filtro digital nos interesar poder aplicar ese
filtro a una seal temporal. Eso se consigue con la funcin de MATLAB filter.
>> y = filter(B,A,x)
El vector x es la entrada y el vector y es la salida filtrada. B y
A son los coeficientes del filtro digital.

Existe otra funcin llamada filtfilt, que funciona de la misma manera que
filter, pero hace dos filtrados. Primero filtra el vector x, y su respuesta la rota y
le vuelve a aplicar el mismo filtro. La respuesta final evita la distorsin de fase
propia de los filtros IIR. Ms detalles en el Help de MATLAB.
>> y = filtfilt(B,A,x)

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

74

5 Curso-Tratamiento Digital de Seal

Apndice
Tablas de Transformacin desde un Prototipo de
Filtro Pasobajo

17/11/99

Captulo 8: Diseo de Filtros Digitales (Parte 1)

75

5 Curso-Tratamiento Digital de Seal

Transformaciones desde un
Prototipo Pasobajo
Tabla 1
Transformacin
LP2LP
LP2HP
LP2BP
LP2SP

17/11/99

Regla
ss/x
s x/s
s 2 + 2x
s
sBw
sB
s 2 w 2
s +x

Comentarios
x= new/ old
x= new/ old
x=frecuencia central
Bw=2-1, 12=x2

x=frecuencia central
Bw=2-1, 12= x2

Captulo 8: Diseo de Filtros Digitales (Parte 1)

76

5 Curso-Tratamiento Digital de Seal

Transformaciones a un
Prototipo Pasobajo
Tabla 2
Transformacin de un Prototipo de Filtro Pasobajo a Filtros Pasabanda y Parabanda:
[1 2 3 4 ]=frecuencias en los bordes de las bandas. En los filtros Pasabanda, los bordes
pasabanda son 2 y 3 . En los filtros Parabanda, los bordes pasabanda son 1 y 4.

Requerimientos Frecuencia Central

17/11/99

Fijadas 2,3

x 2= 2 3

Fijadas 1,4

x 2= 1 4

Fijada x

Compromiso

x2= (1234)1/2

Eleccin de frecuenaias en los


bordes de la banda
Si 14< x2 , 1= x2/4
Si 14>x2 , 4= x2/1
Si 23<x2 , 3= x2/2
Si 23>x2 , 2= x2/3
Si 14< x2 , 1= x2/4
Si 14>x2 , 4= x2/1
Si 14>23 , 3=x2/2 4=x2/1
Si 14<23 , 2=x2/3 1=x2/4

Captulo 8: Diseo de Filtros Digitales (Parte 1)

77

5 Curso-Tratamiento Digital de Seal

Utilizacin de la funcin para calcular el orden de los filtros IIR analgicos


(buttord, cheb1ord y cheb2ord)
Parmetros de entrada Wp,Ws,Ap,As
Especificaciones: wp,ws (filtros PasoBajo y PasoAlto),
[wp1 wp2], [ws1 ws2] (filtros PasaBanda y Parabanda), ap y as
Salidas : [N Wn]

PasoBajo
PasoAlto
PasaBanda
ParaBanda

17/11/99

Wp=wp, Ws=ws, Ap=ap, As=as [B1,A1]=lp2lp(B,A,Wn)


Wp=wp, Ws=ws, Ap=ap, As=as [B1,A1]=lp2hp(B,A,Wn)
Wp=[wp1 wp2], Ws=[ws1 ws2], Ap=ap, As=as [B1,A1]=lp2bp(B,A,wx,Bw),
wx2 =wp1wp2, Bw=wp2-wp1
Wp=[wp1 wp2], Ws=[ws1 ws2], Ap=ap, As=as [B1,A1]=lp2bs(B,A,wx,Bw),
wx2 =wp1wp2, Bw=wp2-wp1

Captulo 8: Diseo de Filtros Digitales (Parte 1)

78

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros Digitales


(Parte 2)

Filtros FIR

Secuencias Simtricas
Tcnicas de Diseo de Filtros FIR

17/11/99

Mtodo de las Series de Fourier


Mtodo de Muestreo en Frecuencia
Mtodos Iterativos basados en condiciones ptimas

Diseo de Filtros FIR con MATLAB


Captulo 9: Diseo de Filtros Digitales (Parte 2)

5 Curso-Tratamiento Digital de Seal

Secuencias Simtricas

El diseo de filtros FIR requieren la seleccin de la secuencia que mejor


representa la respuesta a impulso de un filtro ideal.
Los filtros FIR son siempre estables y son capaces de tener una respuesta
de fase que es lineal, lo que equivale a decir que su respuesta tiene un
retraso constante.
El mayor problema de los filtros FIR es que para unas especificaciones
dadas requieren un filtro de orden mucho mayor que los filtros IIR.
Un filtro FIR de longitud M con entrada x[n] y salida y[n] se describe
mediante la ecuacin diferencia:

y[ n] = b0 x[ n] + b1 x[ n 1]++bM 1 x[ n M + 1] =

M 1

b x[n k ]
k =0

donde bk son los coeficientes del filtro.

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

5 Curso-Tratamiento Digital de Seal

Secuencias Simtricas

Por otra parte podemos expresar la salida del filtro y[n] como una
convolucin de la entrada x[n] con la respuesta a impulso del filtro h[n]:
y[ n] =

M 1

h[ k ] x[n k ]
k =0

Ya que estas dos ecuaciones son idnticas, y por tanto, los coeficientes
bk=h[k].
Se puede demostrar que la respuesta de un filtro FIR es de fase lineal si los
coeficientes h[n] cumplen :
h[ n ] = h[ M 1 n ]
n = 0,1, , M 1
Es decir los coeficientes tienen algn tipo de simetra.
La funcin de Transferencia Z del filtro FIR, aplicando esta condicin es :
M1

H(z) = h[k] zk = h[0]+ h[1] z1 + h[2] z2 ++ h[M 2] z(M2) + h[M 1] z(M1) =
k=0

(M1)/ 2 M 1 (M3)/ 2 (M12k )/ 2 (M12k )/ 2


+ h[k] z
z
h
M impar
z

2 k=0

=
(M1)/ 2

z(M1)/ 2 h[k] z(M12k )/ 2 z(M12k )/ 2


M par

k=0

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

5 Curso-Tratamiento Digital de Seal

Secuencias Simtricas

H (z ) = H ( z )
De esta ltima expresin se deduce que z
lo que significa que la races de H(z) son las mismas que las de H(z-1). Es
decir las races (en este caso, los ceros) ocurren en pares recprocos. Si z1
es un cero de H(z), 1/z1 es tambin un cero.
Adems, si z1 es un cero complejo, su conjugado z1* es tambin un cero,
2
*
as como 1/z1 .
( M 1)

1.5

0.5

-0.5

-1

-1.5

-2
-1

17/11/99

-0.5

0.5

1.5

2.5

Captulo 9: Diseo de Filtros Digitales (Parte 2)

5 Curso-Tratamiento Digital de Seal

Secuencias Simtricas

La longitud N de una secuencia simtrica puede ser par o impar. Esto


significa que el punto medio cae en un punto de la secuencia si N es impar
y entre dos puntos si N es par. Como tengo dos tipos de simetra (par o
impar), tendr cuatro posibles tipos de secuencias simtricas, las cuales se
muestran en la Tabla 1 junto con la DTFT de cada secuencia.

Secuencias Simtricas
L=(N-1), M=N, F es la frecuecia digital=f/fs, donde fs es la frecuencia de muestreo
Tipo Simetra
N
H(F)
|H(0)|
|H()|
L
L
L
h[0 ] + 2 k =1 h[k ]cos(2 kF )
h[0 ] + 2 k =1 h[k ] h[0 ] + 2 k =1 (1)k h[k ]
1
Par
Impar
2

Par

Par

Impar

Impar

Impar

Par

2 k =1 h [k ]cos [2 F (k
M

1
2

j 2 k =1 h[k ]sin(2 kF )

)]

2 k =1 h[k ]
L

2 k =1 (1)k h[k ]

j 2 k =1 h [k ]sin [2 F (k
M

1
2

)]

Tabla 1: Secuencias Simtricas

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

5 Curso-Tratamiento Digital de Seal

Secuencias Simtricas

De esta tabla se pueden sacar las siguientes conclusiones acerca de la


aplicabilidad de cada una de los tipos de secuencia.
Para las secuencias del tipo 2 |H()|=0, por lo que slo pueden ser
utilizadas para filtros pasabaja y pasabanda.
Las secuencias del tipo 3 (|H(0)|=0=|H()|) slo pueden ser utilizadas
para filtros pasabanda.
Las secuencias tipo 4 (|H(0)|=0) son apropiadas para filtros pasaalta y
pasabanda.
La secuencia tipo 1 puede implementar cualquier tipo de filtro. Es el
nico tipo capaz de realizar filtros parabanda.
Aplicaciones de las Secuencias Simtricas
Tipo
|H(F)|
Aplicacin
1
Todo tipo de filtros
2
|H()=0|
Slo LP y BP
3
|H(0)|=0=|H()|
Slo BP
4
|H(0)=0|
Slo HP y BP

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

Hay tres mtodos de diseo de filtros FIR:

Mtodo de las Series de Fourier.


Mtodo del Muestreo en Frecuencia.
Mtodos Iterativos basados en condiciones ptimas de diseo.

Mtodo de las Series de Fourier

El mtodo se basa en seleccionar la respuesta a impulso hN[n] como


una versin truncada de la respuesta a impulso h[n] de un filtro ideal
con repuesta frecuencial H(F).
Proceso de Diseo de Filtros FIR por este mtodo:

17/11/99

Normalizacin de frecuencias por la frecuencia de muestreo.


Conversin de especificaciones a la de un Prototipo de Filtro Pasobajo.
Truncamiento de la respuesta a impulso de un filtro ideal h[n]=2FCsinc(2nFC) a
hN[n] de longitud N. El orden del filtro es N-1.
Selecionar una ventana w[n] de N puntos para obtener hw[n]=hN[n] w[n] .
Convertir del Protipo de Filtro Pasobajo al Filtro deseado hF[n].
Retrasar hF[n] para asegurarse que el filtro es causal.
Captulo 9: Diseo de Filtros Digitales (Parte 2)

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

Nos planteamos realizar un filtro pasobajo ideal (digital) con una frecuencia de corte Fc, tal y
como indica la figura.
|H(F)|

Si expresamos matemticamente la respuesta frecuencial


deseada:
j 2 F ( N 1)/ 2

e
Hd ( F ) =
0

F
0.5

Fc

-F c

1
h[ n] =
Fs

12

1 2

F Fc

F > Fc

Haciendo la Transformada inversa de Fourier discreta en


el tiempo de esta funcin Hd(F), nos queda:

0.5

Hd ( F ) e j 2 Fn dF = e
Fc

Fc

N 1
j 2 F
n
2

j 2F N21 n c
1
dF =
e
=
N 1
Fc
j 2
n
2

N 1
n
sin 2Fc
2

2j

N 1

sin 2Fc
n = 2 Fc
=
=

N
1
2
N 1

n
j 2
n
2Fc
2

N 1
= 2 Fc sinc 2 Fc
n

2
17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

La funcin sinc(x) est definida para todo valor de x, y adems decae muy
lentamente. Utilizar los valores de h[n] definidos por la ecuacin anterior como
coeficientes del filtro FIR, dar lugar a sobreimpulsos en la respuesta frecuencial
del filtro. Debido a la lentitud de la funcin sinc(x), necesitar un filtro de elevado
orden (gran nmero de puntos) para disear filtros con transiciones rpidas entre
bandas.
0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
0

17/11/99

10

15

20

25

Captulo 9: Diseo de Filtros Digitales (Parte 2)

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

Necesidad de utilizar ventanas espectrales : El truncamiento de h[n] equivale a


multiplicar h[n] por una ventana rectangular w[n] de longitud N. El espectro
de hN[n]=h[n]w[n] es la convolucin de H(F) y W(F). La funcin W(F) va a
producir rizados y sobreimpulsos en la seal de salida, de la misma forma que
se produca el efecto Gibbs al reconstruir una seal discontinua con un nmero
finito de coeficientes espectrales. Aqu el efecto Gibbs se da en el dominio
frecuencial al usar un truncamineto de la respuesta a impulso. Para reducir los
efectos de un truncamiento abrupto se utilizan ventanas espectrales que
tienden a suavizar esos efectos.
Por ejemplo, en el caso de una ventana rectangular, en la que w[n]=1, para
n=0,...,N-1, la DTFT es,
N 1

W (F ) = w[k ] e
k =0

j 2Fk

N 1

= e
k =0

j 2Fk

N 1

= e
k =0

j 2F k

1 e j 2FN
=
=
j 2F
1 e

e j 2F N 2 e j 2F N 2 e j 2F N 2
sin (FN )
= j 2 F 2 j 2 F 2 j 2 F 2 = e j 2F ( N 1) 2
e
e
e
sin (F )
17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

10

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

17/11/99

El mdulo de esta funcin (llamada funcin de Dirichlet) se muestra en la


figura de la pgina siguiente.
Las ventanas ms comunmente utilizadas en el diseo de filtros FIR estn
listadas en la Tabla 2. Sus caractersticas espectrales principales se especifican
en la Tabla 3.
De los espectros de las ventanas se hacen notar dos cosas:
El ancho del lbulo principal y el de transicin decrece al aumentar N.
La amplitud de los lbulos de los lados permanece constante con N.
Idealmente el espectro de una ventana debe estar confinado en el lbulo
principal, sin casi energa en los lbulos de los lados.

Captulo 9: Diseo de Filtros Digitales (Parte 2)

11

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


A continuacin se muestran algunas ventanas espectrales y sus espectros

0
-5
1

-10
-15

0.8

-20

Boxcar

0.6

-25
-30

0.4

-35
-40

0.2

-45
0

-10

-5

Indice n

-50
0

10

0.1

0.2

0.3

0.4

0.2

0.3

0.4

Frecuencia Digital f/fs

0.5

0
-10

-20
0.8
-30

Hamming

0.6

-40
-50

0.4

-60
0.2
-70
0

17/11/99

-10

-5

Indice n

10

-80
0

0.1

0.5

Frecuencia Digital f/fs

Captulo 9: Diseo de Filtros Digitales (Parte 2)

12

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


0
-10

-20
0.8
-30

vonHann

0.6

-40
-50

0.4

-60
0.2
-70
0

-10

-5

-80

10

0.1

Indice n

0.2

0.3

0.4

0.5

0.4

0.5

Frecuencia Digital f/fs

0
-10

-20
0.8
-30

Blackman

0.6

-40
-50

0.4

-60
0.2
-70
0

-10

-5

Indice n

17/11/99

10

-80

0.1

0.2

0.3

Frecuencia Digital f/fs

Captulo 9: Diseo de Filtros Digitales (Parte 2)

13

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


0
-10

-20
0.8
-30
0.6

Bartlett

-40
-50

0.4

-60
0.2
-70
0

-10

-5

-80

10

0.1

Indice n

0.2

0.3

0.4

0.5

0.4

0.5

Frecuencia Digital f/fs

0
-10

-20
0.8
-30

Papoulis

0.6

-40
-50

0.4

-60
0.2
-70
0

-10

-5

Indice n

17/11/99

10

-80

0.1

0.2

0.3

Frecuencia Digital f/fs

Captulo 9: Diseo de Filtros Digitales (Parte 2)

14

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


0
-10

-20
0.8
-30

Kaiser
=2

0.6

0.4

-40
-50
-60

0.2
-70
0

-10

-5

-80

10

0.1

Indice n

0.2

0.3

0.4

0.5

0.4

0.5

Frecuencia Digital f/fs

0
-10

-20
0.8
-30

Parzen-2

0.6

-40
-50

0.4

-60
0.2
-70
0

-10

-5

Indice n

17/11/99

10

-80

0.1

0.2

0.3

Frecuencia Digital f/fs

Captulo 9: Diseo de Filtros Digitales (Parte 2)

15

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

Las ventanas ms utilizadas son vonHann, Hamming y Kaiser.


A la hora de escoger la ventana adecuada tendremos un cuenta dos
criterios principales de diseo :
1

Asegurarse que el parmetro PS de la ventana est por encima de la


atenuacin As especificada para la parabanda del filtro. Como mucho
puede estar unos 8 dB por encima. Es decir Ps As-8.
Una transicin ms ancha permite utilizar un filtro de menor orden, pero a
costa de una menor atenuacin en los lbulos.

Ejemplo: Disear un filtro FIR pasobajo con una frecuencia de corte


de 5KHz y una frecuencia de muestreo de 20KHz.
hN[n]=2FCsinc(2nFC)=2(5/20)sinc(2n5/20)=0.5 sinc(0.5n).
(a) Con N=9, -4n4, y una ventana tipo Bartlett :
w[n] = 1

2n

{w[n]} =

1
{0,1,2,3,4,3,2,1,0}
N 1
4
hN [n] = {0,0.1061,0,0.3183,0.5,0.3183,0,0.1061,0}

{ }
{h [n]}= {h [n]w[n]}= {0,0.0265,0,0.2387,0.5,0.2387,0,0.0265,0}
W

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

16

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


Para que el filtro sea causal tendremos que retrasar 4 muestreos, por lo
que el filtro a aplicar es:
H (z ) = 0 0.0265z 1 + 0 + 0.2387z 3 + 0.5z 4 + 0.2387 z 5 + 0 0.0265z 7 + 0 =
= 0.0265z 1 + 0.2387z 3 + 0.5z 4 + 0.2387z 5 0.0265z 7

Como el primer muestreo de hW[n]=0, podemos hacer


H (z ) = 0.0265 + 0.2387z 2 + 0.5z 3 + 0.2387z 4 0.0265z 6

(b) Con N=6, -2.5 n 2.5 y una ventana vonHann


w[n] = 0.5 + 0.5 cos[2 n ( N 1)]

{w[n]} = {0,0.3455,0.9045,0.9045,0.3455,0}

{h
{h

[n]} = {0.09,0.1501,0.4502,0.4502,0.1501,0.09}

[n]} = {hN [n]w[n]} = {0,0.0518,0.4072,0.4072,0.0518,0}

H (z ) = 0.0518 + 0.4072 z 1 + 0.4072 z 2 + 0.0518z 3

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

17

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


magnitude vs digital frequency F

phase in degrees vs digital frequency F

200

0.9

100

0.8

0.7

-100

0.6

-200

Bartlett
N=9

0.5
0.4
0.3

0.1

0.2

0.3

0.4

0.5

unwrapped phase in degrees vs digital frequency F


0
-200

0.2
-400

0.1
0

0.1

0.2

0.3

0.4

-600

0.5

magnitude vs digital frequency F

0.1

0.2

0.3

0.4

0.5

phase in degrees vs digital frequency F

200

0.9

100

0.8

0.7

-100

vonHann
N=6

0.6
0.5
0.4
0.3

-200

0.1

0.2

0.3

0.4

0.5

unwrapped phase in degrees vs digital frequency F


0
-100

0.2
-200

0.1
0

17/11/99

0.1

0.2

0.3

0.4

0.5

-300

0.1

0.2

0.3

0.4

0.5

Captulo 9: Diseo de Filtros Digitales (Parte 2)

18

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


Caractersticas de algunas ventanas espectrales
Window
Atenuacin en lbulo Ancho de Banda de Mximo Rizado en
de los lados (dB)
la Transicin
Parabanda (dB)
Rectangular
-13
-21
2 0.9/N
Hanning
-44
-31
2 3.1/N
Hamming
-53
-41
2 3.3/N
Blackman
-57
-74
2 5.5/N
Caractersticas de la ventana Kaiser para distintos parmetros
Parmetro Atenuacin en lbulo Ancho de Banda de Mximo Rizado en
de los lados (dB)
la Transicin
Parabanda (dB
2.0
-19
-29
2 1.5/N
3.0
-24
-37
2 2.0/N
4.0
-30
-45
2 2.6/N
5.0
-54
-37
2 3.2/N
6.0
-44
-63
2 3.8/N
7.0
-51
-72
2 4.5/N
8.0
-59
-81
2 5.1/N
9.0
-90
-67
2 5.7/N
10.0
-74
-99
2 6.4/N
17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

19

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

Podemos estimar la longitud del filtro (N) a partir del ancho de banda en la
transicin (). Por ejemplo, si se pide un filtro con una transicin entre p y s,
llamamos banda de transicin a la diferencia normalizada por la frecuencia de
muestreo Fm, entre las frecuencias de parabanda y pasabanda (en rad/s),
( s p ) = 2k N 2k = k
=
Fm
N
F

Para el caso de un filtro de Kaiser hay que calcular la longitud del filtro y el valor
del parmetro . Esto se realiza mediantes las siguientes ecuaciones,
As 7.95
14.36 F
0.1102 (As 8.7 ),

=
0.4
0.5842 (As 21) + 0.07886 (As 21),
N

17/11/99

As 50
20 < As < 50

Captulo 9: Diseo de Filtros Digitales (Parte 2)

20

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

Otro criterio es tomar N de acuerdo a la siguiente frmula, donde WS


es la mitad de la anchura del lbulo principal (Tabla 2), y Fp y Fs la
frecuencias digitales de pasabanda y parabanda. N WS

(F

Fp

Transformaciones Espectrales : Se trata de convertir diseos de filtros


pasobajo a otras formas y viceversa. Las tablas 1 y 2 del apndice
muestran todas las posibles transformaciones.

Ejemplo : Disear un filtro pasobajo con las siguientes especificaciones


fp=1KHz, fs=2KHz, Sf=10KHz, Ap=2 dB y As=40dB.

17/11/99

Las frecuencias digitales son Fp=fp/Sf=0.1, Fs=fs/Sf=0.2. Aplicando este


ltimo criterio y acudiendo a las tablas vemos que de acuerdo a los valores de
PS, los filtros ms adecuados son vonHann, Hamming y Blackman. Aplicando
la frmula de N para cada uno de estos filtros obtenemos,

Captulo 9: Diseo de Filtros Digitales (Parte 2)

21

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


vonHann : N = 1.87 0.1 19
Hamming : N = 1.91 0.1 20
Blackman : N = 2.82 0.1 29

A partir de aqu procedemos por el cientfico mtodo de intentar y errar. De la Tabla 1, obtenemos
hN[n] para una frecuencia de corte que no se nos
especifica claramente. Slo se nos da las frecuencias en los bordes de la pasabanda y la parabanda. Por ello escogemos una frecuencia de corte un 20% superior a
fp, es decir fC=1.2 KHz. hN [n] = 2 FC sinc(2 nFC ) = 0.24sinc(0.24 n)
Ahora se intenta con cada uno de los filtros partiendo de la longitud calculada y
se observa si se cumplen las especificaciones. En caso de no cumplirse, debe aumentarse el orden del filtro o modificar la frecuencia de corte elegida y volver
comprobar las especificaciones. Este proceso ha sido utilizado en este problema
y hemos llegado a los siguientes resultados:
As=40dB
vonHann: N=23 FC=0.137 Ap=1.9 dB
Hamming: N=23 FC =0.132 Ap=1.58 dB As=40.1dB
Blackman: N=29 FC =0.128 Ap=1.98 dB As=40.1dB
El filtro Blackman tiene la mayor longitud y un mayor ancho de transicin pero
el nivel de los lbulos de los lados es el menor.
17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

22

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


vonhann - hamming - blackman

20

Magnitud (dB)

-20

-40

-60

-80

-100

-120

-140

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

Frecuencia Digital
17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

23

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


Ejemplo : Disear un filtro pasabanda con las siguientes especificaciones:
Pasabanda [4,8]KHz, Parabanda [2,12]KHz Ap=3dB As=45dB SF=25KHz
Calculamos primero la frecuencia central f0=6KHz. Para hacer que la Parabanda tenga una frecuencia central igual a la Pasabanda por lo que cambiamos la
frecuencia de 12KHz por una frecuancia de 10KHz. Normalizamos las frecuencias y aplicamos las frmulas de la Tabla 2, para pasarlo al protipo pasobajo :
PasaBanda[0.16,0.32] ParaBanda[0.08,0.4] F0=0.24
Fp=(Fp2-Fp1)/2=0.08 Fs=(Fs2-Fs1)/2=0.16
Utilizamos el filtro de Hamming, para el que N WS/(Fs-Fp) 24 y comenzamos
el proceso de intentar y errar hasta que llegamos a una solucin aceptable. Una
vez determinada la secuencia hw[n] que especifica el filtro, lo convertimos a un
filtro pasabanda a travs de la relacin de la Tabla 1:
hBP[n]=2cos(2nF0)hw[n]=2cos(0.48n)hw[n].
El resultado final obtenido es un filtro con N=27, FC=0.0956, Ap=3.01dB a
4 KHz y 8 KHz, As=45.01dB a 2KHz y 73.47 dB a 12 KHz.

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

24

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


Filtro Pasabanda usando una ventana de Hamming
0

-20

-40

-60

-80

-100

-120

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

Frecuencia Digital
17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

25

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

17/11/99

Filtros FIR de Media Banda : Veamos qu sucede si diseamos un


filtro pasabaja en el que la frecuencia de corte es FC=0.25. La respuesta a impulso es h[n]=2FCsinc(2nFC)=0.5sinc(0.5n), de forma que si el
orden N es impar, h[n]=0 para n par (ver ejemplo T11). En este caso
la frecuencia de muestreo debe ser SF=4fc (o 4f0). La funcin de
Transferencia H(F) tiene antisimetra respecto a F=0.25 :
H(F)=1-H(0.25-F)
Filtros de Media Banda usando la ventana Kaiser : Para esta ventana
con N=9 y =0.5,
w[n]={0.5818,0.7497,0.8838,0.9702,1,0.9702,0.8838,0.7497,0.5818},
y hN[n]w[n]={0,-0.0795,0,0.3088,0.5, 0.3088,0,-0.0795,0}=hw[n].
H(z)=-0.0795+0.3088z-2+0.5z-3+0.3088z-4-0.0795z-6.
Este tipo de filtros con la ventana Kaiser muestra un rizado tanto en la
pasabanda (p) como en la parabanda (s). Estos dependern de las
atenuaciones especificadas en las dos bandas. Con estos datos se
disea la ventana Kaiser con el parmetro ms adecuado.
Captulo 9: Diseo de Filtros Digitales (Parte 2)

26

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


1.2

1+p
1-p

0.8

0.6

0.4

0.2

s
s

-0.2

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

Frecuencia Digital

Dos importantes caractersticas de los filtros de media banda son :

17/11/99

Su implementacin requiere slo de aprox. N/2 multiplicadores debido a


los ceros de los coeficientes del filtro.
Se puede obtener un filtro pasoalto a partir del espectro complementario :
HHP(z)=z-(N-1)/2Hco(z).

Captulo 9: Diseo de Filtros Digitales (Parte 2)

27

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

17/11/99

Ejemplo : Disear un filtro parabanda de media banda con las siguientes


especificaciones : Parabanda [2 KHz-3 KHz], Pasabanda [1 KHz-4 KHz],
Ap=1dB y As=50dB.
Calculamos la frecuencia de muestreo necesaria para realizar el filtro.
SF=4f0=4(3+2)/2=10 KHz.
Ahora se determinar las frecuencias digitales Fp y Fs de acuerdo con la
Tabla 2, diseandose un prototipo de filtro pasabaja.
Una vez obtenido se transforma a un filtro parabanda con las expresiones de
la Tabla 1. El resultado final para un filtro de este tipo con una ventana
Kaiser es : N=31, Ap=0.046 dB a 2 KHz y 3 KHz y As=53.02 dB a 1 y 4
KHz.
Los pasos a realizar no se muestran explicitamente puesto que este tipo de diseo se realiza de forma automtica por mtodos de CAD. En concreto, haremos
estos diseos utilizando MATLAB. Especificaremos el tipo de filtro a realizar
(pasobajo, pasoalto, etc), la frecuencia de muestreo, las frecuancias de pasabanda y parabanda y sus respectivas atenuaciones, as como el tipo de ventana que
deseamos utilizar. Con estos datos el programa realiza el diseo del filtro proporcionando el orden, los coeficientes y las especificaciones reales del filtro.
Captulo 9: Diseo de Filtros Digitales (Parte 2)

28

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


kaiser window: n = 31 Fc = 0.1 ap = -0.04629 as = -53.02
0

-10

-20

-30

-40

-50

-60

-70

-80

-90

-100

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

Digital Freq F
17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

29

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

Mtodo del Muestreo Frecuencial

Se trata de reconstruir el espectro continuo X(F) de una seal discreta a


partir de los muestreos de la funcin X(F). El espectro reconstruido
XN(F) ser igual a X(F) slo en las frecuencias de muestreo.
Se puede considerar el DFT de la seal hN[n] de longitud N como N
muestreos de su DTFT (H(F)) en F=k/N, k=0,1,...,N-1.
N 1
1
H N ( F ) = hN [n] exp( j 2nF )dF
H N [k ] = h N [n]exp( j 2n k N )
0
k =0

La respuesta a impulso hN[n] se calcula con el IDFT,


1 N 1
hN [n] = H N [k ]exp( j 2n k N )
N k =0

Proceso de diseo

17/11/99

Los muestreos deben hacerse en un periodo (0,1) de la extensin peridica


de H(F).
La fase de H(F) es lineal y por tanto cada uno de los muestreos tiene una
fase dada por (k)=-k(N-1)/N, k=1,...,N.
Captulo 9: Diseo de Filtros Digitales (Parte 2)

30

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

Para minimizar el efecto Gibbs en las discontinuidades, permitimos que


los valores de muestreo varen lentamente en las discontinuidades.
Ejemplo : Disear un filtro pasobajo dado por la respuesta frecuencial de
la figura.
Tomamos 10 muestras. La fase de cada una de las muestras es -k(N-1)/N
H[0]=1 H[1]=exp(-j0.9) H[2]=exp(-j1.8) H[3]=0 H[4]=0 H[5]=0.
H[1]=-0.9511-j0.3090 H[2]=0.8090+j0.5878.
Los valores H[5] ... H[9] se calculan teniendo en cuenta que la respuesta
frecuencial debe ser simtrica en mdulo y asimtrica en fase: H[6]=0
H[7]=0 H[8]= 0.8090-j0.5878
H[9]=-0.9511+j0.3090.
Haciendo la IDFT de estos H[k] obtenemos la secuencia h[n],
h[n]={0.0716,-0.0794,-0.1,0.1558,0.452,0.452,0.1558,-0.1,-0.0794 ,0.0716}
En la respuesta frecuencial de este filtro se observa que efectivamente pasa
por los puntos de muestreo pero a costa de un sobreimpulso. Para suavizarlo,
se puede sustituir los muestreos H[3] por 0.5exp(-j2.7). Haciendo el IDFT
de la nueva secuencia de muestreos H[k] obtenemos el filtro,
h[n]={0.0128,0.0157,-0.1,0.0606,0.5108,0.5108,0.0606, -0.1,0.0157,0.0128}

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

31

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


Filtro Pasobajo usando Muestreo Frecuencial

1.2

0.8

0.6

0.4

0.2

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

Frecuencia Digital

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

32

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

Podemos combinar las ventajas del diseo con ventanas estudiado anteriormente y el mtodo de muestreo frecuencial para tener un mtodo
de diseo de filtros de respuesta frecuencial arbitraria.
Se muestrea la respuesta frecuencial deseada con un nmero alto de
puntos (M=512). Hacemos el IDFT y obtenemos la respuesta h[n].

h[n] es demasiado largo, as que debemos truncarlo a una secuencia ms


pequea con una ventana.
Si el diseo no cumple las especificaciones podemos cambiar N, el ancho
de pasabanda o ajustar los muestreos en la zona de transicin.

Mtodos Basados en criterios de optimizacin

17/11/99

Se trata de utilizar criterios para minimizar el mximo error en la aproximacin. Hay tres importantes conceptos en diseo ptimo,
El error entre la aprox. H(F) y la respuesta deseada D(F) debe tener
igual rizado.

Captulo 9: Diseo de Filtros Digitales (Parte 2)

33

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

La respuesta frecuencial H(F) de un filtro cuya respuesta a impulso h[n]


es una secuencia simtrica puede ponerse como
M

H ( F ) = n ( F ) cos(2nF )
k =0

El Teorema de la Alternancia : Aproximamos D(F) por una forma


polinomial de Chebyshev obteniendo H(F). Se define el error
ponderado en la aproximacin (F) como (F)=W(F)[D(F)-H(F)]
El teorema dice que se pueden encontrar al menos M+2 frecuencias
Fk, k=1,2,...,M+2 llamadas frecuencias extremas donde

17/11/99

donde M est relacionado con la longitud del filtro N. Esta forma es un


polinomio de Chebyshev. Debemos escogern para que el diseo se
ptimo.
El teorema de la alternancia ofrece una pista para seleccionarn.

El error vara entre dos mximos y mnimos iguales


k=1,2,...,M+1
(Fk) = -(Fk+1)
El error en la frecuencia Fk es igual al mximo error absoluto.
k=1,2,...,M+2
|(Fk)|=|(F)|max
Captulo 9: Diseo de Filtros Digitales (Parte 2)

34

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


Existe un algoritmo llamado Parks-McClellan (PM) para determinar
esas frecuencias. Este algoritmo necesita los siguientes datos: las
frecuencias Fp y Fs, la relacin 1/2 de los errores en la pasabanda y
en la parabanda y la longitud N del filtro. Devuelve los coeficientes n
y los valores reales de 1 y 2.
El filtro parabanda diseado anteriormente ha sido rediseado
utilizando este algoritmo. El resultado es un filtro de N=21,
1=0.2225dB y 2=56.79 dB.
La respuesta frecuencial se muestra en la figura.

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

35

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR


Length N = 21 PB/SB Attn from 0dB = [ 0.2225 56.79 ] dB
0

-10

-20

-30

-40

-50

-60

-70

-80
0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

Digital Frequency F

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

36

5 Curso-Tratamiento Digital de Seal

Tcnicas de Diseo de Filtros FIR

Filtros FIR de horizontalidad mxima

Se trata de disear un filtro cuyas 2L-1 derivadas en F=0 y sus 2K-1


derivadas en F=0.5 sean cero. La longitud del filtro viene dada por
N=2(K+L)-1 y es por tanto impar. Los enteros K y L se determinan a
partir de las frecuencias de pasabanda y parabanda que corresponden a
atenuaciones de 0.5 dB y 26 dB.
Por ejemplo, se pide un filtro pasobajo cuyas frecuencias digitales Fp=0.2
y Fs=0.4. Obtenemos un filtro de N=27.
Filtro Pasobajo de Horizontalidad Mxima

1.2

0.8

0.6

0.4

0.2

0
0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

Frecuencia Digital

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

37

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros FIR con MATLAB

Funciones de MATLAB para realizar filtros FIR:

Funcin FIR1
>> B = fir1(N,Wn,type,window);
Disea un filtro FIR pasobajo de orden N (longitud N+1) y
frecuencia de corte Wn (normalizada con respecto a la frecuencia
de Nyquists, 0 Wn 1). Se pueden especificar otro tipo de
filtros de la misma forma que con los filtros IIR mediante el
parmetro type. Por ejemplo, para un filtro parabanda:
>> B = fir1(N,[W1 W2],'stop');
Por defecto la funcin FIR usa la ventana de Hamming. Otro tipo
de ventanas pueden tambin especificarse:
>> B = fir1(N,Wn,bartlett(N+1));
>> B = fir1(N,Wn,'high',chebwin(N+1,R));

Funcin FIR2
>> B = fir2(N,F,M,window);
Disea un filtro FIR utilizando el mtodo del muestreo
frecuencial. Los parmetros de entrada es el orden del filtro N
(longitud N+1) y dos vectores F y M que especifican la
frecuencia y la magnitud, de forma que plot(F,M) es una
grfica de la respuesta deseada del filtro.

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

38

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros FIR con MATLAB


Se pueden indicar saltos bruscos en la respuesta frecuencial
duplicando el valor de la frecuencia de corte.
F debe estar entre 0 y 1, en orden creciente, siendo el primer
elemento igual a 0 y el ltimo 1. El parmetro window indica el
tipo de ventana a utilizar. Por defecto, usa la ventana de
Hamming.
>> B = fir2(N,F,M,bartlett(N+1));
Se pueden especificar ms parmetros en esta funcin,
>> B = fir2(N,F,M,npt,lap,window);
La funcin fir2 interpola la respuesta frecuencial deseada (F,M)
con npt puntos (por defecto, npt=512). Si dos valores sucesivos
de F son iguales, se crea una regin de lap puntos alrededor de
este punto (por defecto, lap=25).

Funcin FIRLS
>> B = firls(N,F,M);
Diseo de filtros FIR usando la minimizacin del error por
mnimos cuadrados. Los argumentos de entrada son el orden del
filtro N, y dos vectores F y M, cuyo formato difiere de los
anlogos en la funcin fir2. El filtro obtenido es la mejor
aproximacin a (F,M) por mnimos cuadrados.

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

39

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros FIR con MATLAB


F es un vector que indica los lmites de las bandas de
frecuencia en parejas (por tanto el tamao de F debe ser par), y
en orden ascendente entre 0 y 1. M es un vector del mismo tamao
que F que indica la magnitud deseada para cada banda de
frecuencias. La respuesta deseada es la lnea que conecta los
puntos (F(k),M(k)) y (F(k+1),M(k+1)) para k impar. Las bandas de
frecuencia entre F(k+1) y F(k+2) para k impar son tratadas por
firls como bandas de transicin.
Tambin existe un argumento opcional que consiste en un vector W
cuyo tamao es la mitad de F. W es un factor de ponderacin del
error para cada banda de frecuencias.
>> B = firls(N,F,M,W);
H(F)
Bandas de
Transicin
M(1)
M(5)

M(2)
M(4)

M(6)

M(3)

F
F(1)=0 F(2)

17/11/99

F(3)

F(4)

F(5)

F(6)=1

Captulo 9: Diseo de Filtros Digitales (Parte 2)

40

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros FIR con MATLAB

Algoritmo de Parks-McClellan
Hay dos funciones en MATLAB para realizar este algoritmo: remezord
y remez.
>> [N,Fo,Mo,W] = remezord(F,M,DEV,Fs)
Calcula el orden N, las bandas de frecuencia normalizadas Fo,
las magnitudes en esas bandas Mo y los factores de ponderacin W
que luego sern utilizados como argumentos de entrada de la
funcin remez. Estos valores cumplen las especificaciones dadas
por F, M, DEV. F es un vector de frecuencias de corte en Hz, en
orden ascendente entre 0 y Fs/2. Si no se especifica Fs, Fs=2
por defecto. El primer elemento de F es siempre 0 y el ltimo es
siempre Fs/2, pero no deben ser especificados en el vector F. El
vector M indica la respuesta deseada en cada banda. Por tanto,
el vector M tiene un tamao igual a (length(F)+2)/2. DEV es un
vector que indica el mximo rizado permitido en cada banda. Ver
la grfica de la pgina siguiente.
>> b = remez(N,Fo,Mo,W);
Con los valores obtenidos en la funcin remezord, podemos
implemantar el algoritmo de Parks-McClellan. Fo y Mo son dos
vectores de igual magnitud. Fo(k) y Fo(k+1) k impar especifica
bandas de frecuencia y Mo(k) y Mo(k+1) la correspondiente
magnitud para cada frecuencia. El filtro obtenido es la mejor
aproximacin por minimax.

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

41

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros FIR con MATLAB


H(F)
Bandas de
Transicin
M(1)
M(3)
M(2)

F
F=0

17/11/99

F(1)

F(2)

F(3)

F(4)

F = F s /2

Ejemplo 1: Disear un filtro FIR pasabanda a frecuencias de 30 Hz y 3500 Hz


por cada uno de los diferentes mtodos. Utilizar un mismo orden de filtro (por
ejemplo N=44) y comparar las respuestas frecuenciales.
>>
>>
>>
>>
>>

N=44;Fs=11020;Fny=Fs/2;
Bfir1 = fir1(N,[30 3500]/Fny);
Bfir2 = fir2(N,[0 10 30 3500 3600 Fny]/Fny,[0 0 1 1 0 0]);
Bfirls = firls(N,[0 10 30 3500 3600 Fny]/Fny,[0 0 1 1 0 0]);
Bremez = remez(N,[0 10 30 3500 3600 Fny]/Fny,[0 0 1 1 0 0]);

Captulo 9: Diseo de Filtros Digitales (Parte 2)

42

5 Curso-Tratamiento Digital de Seal

Diseo de Filtros FIR con MATLAB


>>
>>
>>
>>
>>
>>

F=0:10:5000;
Hfir1=abs(freqz(Bfir1,1,F,Fs);
Hfir2=abs(freqz(Bfir2,1,F,Fs);
Hfirls=abs(freqz(Bfirls,1,F,Fs);
Hremez=abs(freqz(Bremez,1,F,Fs);
semilogy(F,Hfir1,'r',F,Hfir2,'g',F,Hfirls,'y',F,Hremez,'m');
Respuesta frecuencial: -- fir1, -- fir2, -- firls, -- remez

10

10

-1

10

-2

10

-3

10

-4

10

-5

10

-6

10

17/11/99

500

1000 1500 2000 2500 3000 3500 4000 4500 5000

Captulo 9: Diseo de Filtros Digitales (Parte 2)

43

5 Curso-Tratamiento Digital de Seal

Apndice
Tablas de Transformaciones Espectrales

17/11/99

Captulo 9: Diseo de Filtros Digitales (Parte 2)

44

5 Curso-Tratamiento Digital de Seal

Tabla 1
Transformaciones de Filtros pasobajo
Tipo

H(F) ideal

Pasobajo

HLP ( F ) = rect(F 2 FC )

Pasoalto

HHP ( F ) = 1- HLP ( F )

Pasoalto

H HP ( F ) = H LP ( F 12 ) = rect ( F - 12 ) 2 FC

Pasabanda

HBP ( F ) =

[
]
rect[( F F ) 2 F ]

rect ( F + F0 ) 2 FC +
0

Parabanda

17/11/99

Respuesta a Impulso
h[n]
hLP [n] = 2 FC sinc(2nFC )

H BS ( F ) = 1 H BP ( F )

hHP [n] = [n] hLP [n]


(1)n hLP [n]

2 cos (2 nF 0 )h LP [n ]

[n] hBP [n]

Captulo 9: Diseo de Filtros Digitales (Parte 2)

45

5 Curso-Tratamiento Digital de Seal

Tabla 2

Transformaciones a Prototipos de Pasobajo


Fp1, Fp2, Fs1 y Fs2 = lmites de pasabanda y parabanda, F0 = Frecuencia Central
Para BS y BP se asume que tienen simetra respecto a F0
Lmite de
Lmite de
Transformacin
Frecuencia Central
Pasabanda
Parabanda
Si hHP[n]=[n]-hLP[n]
Fp = FsHP
Fs = FpHP
HP2LP
HP2LP
BP2LP
BS2LP

17/11/99

Fp =

1
FpHP
2

Fp = 12 ( Fp 2 Fp1 )

1
FsHP
2
Fs = 12 ( Fs 2 Fs1 )
Fs =

Fp = 12 (Fs 2 Fs1 ) Fs = 12 ( Fp 2 Fp1 )

Si hHP[n]=(1)nh[n]
F0 = 12 ( Fp 2 + Fp1 )
F0 = 12 ( Fp 2 + Fp1 )

Captulo 9: Diseo de Filtros Digitales (Parte 2)

46

5 Curso-Tratamiento Digital de Seal

Implementacin de Filtros Digitales

17/11/99

Realizacin de Filtros Digitales


Efectos de Cuantizacin
Implementacin Hardware de Filtros Digitales
Digital Signal Processors (DSP)

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Hay dos formas de realizar filtros digitales: Software o


Hardware. En los dos casos deberemos hacer un diagrama con
las operaciones a realizar. En software se habla de un
diagrama de flujo, mientras que en hardware es un diagrama
de bloques, que especifica los elementos del circuito y sus
interconexiones.
Una correcta eleccin del diagrama de bloques puede optimizar significativamente las prestaciones de la realizacin
(tiempo de computacin, memoria necesaria, minimizar los
efectos de cuantizacin, etc).

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Veamos algunas propiedades de los diagramas de bloques

17/11/99

Conexiones en cascada: La funcin de Transferencia global de una


conexin en cascada es el producto de las funciones de Transferencia
individuales.
Conexiones en paralelo: La funcin de Transferencia global de una
conexin en paralelo es la suma de las funciones de Transferencia
individuales.
Conexin en realimentacin: La salida se realimenta en la entrada
directamente o a travs de otros subsistema. La funcin de
Transferencia global viene dada por la relacin (ver figura):
G( z )
H T (z ) =
1 + G( z ) H ( z )

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


H1

H2

H 1H 2

Conexin de dos sistemas en Cascada

H1

H 1+ H 2

H2
Conexin en paralelo de dos sistemas

G
-

G
1+GH

H
Un sistema sencillo con realimentacin

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Los filtros digitales pueden realizarse usando elementos correspondientes a las operaciones de multiplicacin, adicin y
almacenaje de datos.
El almacenaje de un dato significa retrasar su uso una cantidad normalmente igual al periodo de muestreo. Este retraso se
representa mendiante z-1 (retraso de una unidad), z-2 (dos
unidades, etc).
x[n]

Ax[n]

Elemento Multiplicador

x[n]

z -1

x[n]

x[n-1]

Elemento Almacenador

x[n]y[n]

+
y[n]
Elemento Sumador

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Filtros FIR (MA): Son filtros no recursivos cuya funcin de Transferencia


HMA(z) y su correspondiente ecuacin diferencia y[n] son de la forma,
H MA (z ) = B0 + B1 z 1 ++ BM z M
y[n] = B0 x[n] + B1 x[n 1]++ BM x[n M ]
Este filtro puede realizarse utilizando el diagrama de la figura
x[n]

B0

y[n]
+

z -1
B1

z -1
B2

z -1
BM

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Filtros Autoregresivos: Son filtros recursivos cuya funcin de Transferencia HAR(z) y su correspondiente ecuacin diferencia y[n] son de la forma,
H AR (z ) =

1
1 + A1 z 1 ++ AN z N

y[n] = A1 y[n 1] AN y[n N ] + x[n]

Este filtro puede realizarse utilizando el diagrama de la figura,


x[n]

y[n]

z -1
+

-A1

z -1
+

-A2

z -1
-AN

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Filtros ARMA: Son la combinacin de los dos anteriores. Su funcin de


Transferencia y ecuacin
diferencia
son,
1
M
H (z ) =

B0 + B1 z ++ BM z

1 + A1 z 1 ++ AN z N

= H AR (z )H MA (z )

y[n] = A1 y[n 1] AN y[n N ] + B0 x[n]++ BM x[n M ]

El diagrama de filtro puede hacerse de varias formas,


x[n]

B0

+
+

y[n]

z -1

z -1
B1

+
+

-A 1

z -1

z -1
B2

+
+

-A 2

z -1

z -1
-A N

BM

HMA(z) HAR(z)
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


x[n]

B0

z -1
+

z -1

-A1

B1

z -1
+

y[n]

z -1

-A2

B2

z -1

z -1

-AN

BM

HAR(z)HMA(z)

Esta dos formas son lgicamente idnticas. Se denominan forma directa I.


Requieren el uso de (N+M) elementos de memoria, (N+M) sumadores y
(N+M+1) multiplicadores.
Esta ltima forma sugiere la eliminacin M elementos de memoria, ya que
estn repetidos. El diagrama resultante se denomina forma directa II.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


x[n]

B0

y[n]
+

z -1
+

-A 1

B1

z -1
+

-A 2

B2

Forma directa II

z -1

-A M

BM

z -1
-A N

De la forma directa II pasamos a la forma transpuesta o cannica. Consiste


en sustituir los nodos por sumas, las sumas por nodos, invertir el sentido
de las flechas y finalmente intercambiar los coeficientes y x[n] e y[n].

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

10

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


x[n]

B0

y[n]

z -1
B1

+
+

-A 1

-A 2

-A M

z -1
B2

+
+

Forma Transpuesta o
Cannica

z -1
BM

+
+

z -1
-A N

Esta forma da lugar a una realizacin con N elementos de memoria,


(N+M+1) multiplicadores y N sumadores.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

11

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Las funciones de Transferencia pueden representarse mediante sumas de


fracciones parciales (en paralelo), o mediante producto de factores (en
cascada).
Supongamos un funcin de Transferencia H(z), expresada como suma de
fracciones. Los pares de polos complejos conjugados deben ser combinaL
dos en trminos de 2 orden,
b1i z 1 + b0 i
N + 1
H (z ) = b0 +

2
+ a1i z 1 + 1
i =1 a2 i z

L = int
2

Esta funcin de Transferencia puede representarse a travs de la forma


directa II o de la forma Transpuesta, dando lugar a las formas Paralela II y
Paralela Transpuesta (Figura T13).
La funcin de Transferencia puede expresarse tambin como producto de
L
L z 2 + z 1 + 1
trminos,
2i
1i
H (z ) = 0 H i ( z ) = 0
i=0

i =0

2 i z 2 + 1i z 1 + 1

lo que da lugar a las formas en cascada, Cascada II y Cascada Transpuesta


(Figura T14).
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

12

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


b0

b0
b 01

b 01

z -1

z -1

x[n]
x[n]

+ -a 1 1

b 11

b 11

z -1

z -1

y[n]

-a 2 1

b 0L

b 0L

+ -a 1 L

z -1

z -1
b 1L

b 1L

-a 1 L

z -1
-a 2 L

17/11/99

y[n]

-a 2 1

-a 1 1

z -1

Paralelo II y Paralelo Transpuesta

-a 2 L

Captulo 10 : Implementacin de Filtros Digitales

13

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


0

x[n]

+ - 1 1

z -1
1 1

+ - 1 L

1 L

z -1
- 2 1

y[n]

z -1

z -1
1 1

- 2 L

1 L

Forma en Cascada II
x[n]

1 1

0 1

z -1

z -1

- 1 1

1 L

z -1

z -1

- 2 1

0 L

y[n]

- 1 L

- 2 L

Forma en Cascada Transpuesta


17/11/99

Captulo 10 : Implementacin de Filtros Digitales

14

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Cada una de estas formas tienen sus ventajas e inconvenientes en el


momento de realizar el filtro. Uno de los problemas ms importantes que
debe tener en cuenta una realizacin son los efectos de cuantizacin.
Los efectos de cuantizacin se producen al tener obligatoriamente que
truncar (o cuantizar) los coeficientes del filtro y las seales de entrada y
salida. Esta cuantizacin puede dar lugar a que las caractersticas del filtro
realizado difieran de las especificaciones del filtro diseado.
Los efectos de cuantizacin deben ser tenidos muy en cuenta cuando el
diseo se realiza en microprocesadores con aritmtica de punto fijo (por
ejemplo, DSPs). En caso de utilizar micros de 32 bits con aritmtica en
punto flotante, los efectos de cuantizacin pueden ser despreciados.
Dividiremos los efectos de cuantizacin en dos partes: los debidos a la
cuantizacin de las seales (de entrada x[n] o de salida y[n], que incluyen
los errores de redondeo o truncamiento en las operaciones aritmticas) y
los debidos a la cuantizacin de los coeficientes.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

15

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Cuantizacin de seales : El efecto de cuantizar la seal puede estudiarse


como el efecto de aadir un error o una seal de ruido e[n] a la salida ideal
del filtro digital. Este ruido se considera como el efecto conjunto de varios
errores producidos en el procesamiento:
Error de cuantizacin en el convertidor A/D a la entrada del filtro.
Errores de redondeo o truncamiento en las operaciones (multiplicacio-nes,
sumas).
Error en la cuantizacin de la salida en el convertidor D/A (menos bits en la

salida que en las operaciones).


Errores de Truncamiento: Cuando se implementa un filtro en hardware (DSPs o
ASICs) suele ser habitual trabajar en un punto fijo ya que es considerablemente
ms barato en trminos de rea de silicio y complejidad en el diseo. Por ejemplo,
las variables del filtro (entradas, salidas y coeficientes) pueden estar cuantizadas en
16 bits. Al hacer una multiplicacin necesitaremos 32 bits, que es posteriormente
truncado de nuevo a 16 bits. Este tipo de error puede ser analizado mejor desde un
punto de vista estadstico. Supongamos que truncamos un nmero de (+1) bits a
(b+1) bits, tal y como indica la figura.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

16

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
s

a -1

a -2

a -1

a -2

...
...

a -b

a -

a -b

El error producido al truncar x es: t = Q(x)-x. El error es cero si todos los bits
rechazados son cero, y ser mximo si todos los bits rechazados son 1. El error

mximo es por tanto,


i
b

a
2
2
2
=
+
i
i =b +1

El error de truncamiento ser siempre negativo para nmeros en complemento de 2,


y su valor es -(2-b-2-) t 0 . Si suponemos que >>b,

2b t 0
A la hora de analizar los errores producidos por el truncamiento se recurre al
anlisis estadstico. Suponiendo una distribucin uniforme de los errores en el
rango (-2-b,0), la media del error es -2-(b+1) y su varianza es 2-b/12. Estos valores
son ciertos en caso de utilizar complemento de 2, lo cual es bastante habitual.
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

17

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

El anlisis se hace sumando una seal de ruido a la seal sin truncar. Esa seal de
error tiene la media y varianzas calculadas previamente.
u[n]

v[n]

v[n]

u[n]

v[n]

v[n]

e [n]

Los tipos de realizaciones estudiadas (en paralelo y cascada) tienen un impacto


parecido en los errores de truncamiento. Utilizando formas en cascada podemos
mejorar la varianza del ruido de truncamiento puede disminuirse emparejando
polos y ceros de acuerdo a ciertos criterios y modificando el orden al cual se
realizan las operaciones en cascada.
Una consecuencia de las operaciones aritmticas es el overflow, es decir cuando el
resultado de una operacin rebasa el mximo nmero admitido por una cierta
represenatacin digital. En tal caso la seal debe mantenerse en ese nivel mximo,
lo que produce fuertes distorsiones en las seales.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

18

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Una ventaja de la aritmtica de complemento de 2 es la mostrada en el siguiente


ejemplo. Se quiere hacer la suma 0.687510+0.812510-0.562510 con un cdigo
digital de 5 bits en complemento de 2. La suma de los dos primeros operando da
overflow. Sin embargo, si eliminamos el bit de signo y continuamos sumando el
resultado ser correcto:
01011+01101=11000 Eliminamos el bit de signo porque hay overflow 01000
01000+10111=01111 Lo que equivale a 0.9375, el resultado correcto.

Una forma de evitar el overflow multiplicar las operaciones por un factor que evite
el overflow. Este factor debe ser lgicamente menor que 1, lo que emperora
relacin seal ruido del filtro. Vimos en el captulo 5 que la relacin seal-ruido en
una seal cuantizada es, SNRQ = 10 log Ps + 10.8 20 log D + 6b
Ps es la potencia de la seal de entrada, D es el fondo de escala y b es el nmero de
bits. Ps es proporcional a la varianza de la seal, x2. Si multiplicamos la seal por
un factor A, la potencia de la seal ser A2x2. Sustituyendo en la ecuacin vemos
que si A>1, mejora la SNRQ, pero se corre el peligro de producir overflow. Por el
contrario, un valor de A<1, evita el overflow pero empeora la SNRQ.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

19

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Oscilaciones de ciclo lmite : Este tipo de inestabilidades se da en los


filtros IIR, debido a la realimentacin de la salida. Las oscilaciones de
ciclo lmite se denominan a menudo granulares, ya que dan lugar a
oscilaciones de pequea amplitud.
x[n]

y[n]
z -1

En el ejemplo del filtro de 1er orden de la figura. La ecuacin diferencia es


y [n] = Q( y [n 1]) + x[n]
Sin perder generalidad utilizamos una representacin digital de 5 bits con
signo y haremos redondeo en las operaciones en vez de truncamiento.
Veamos la respuesta del filtro a una entrada impulso x[0]=0.1101.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

20

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
=0.1011, y[-1] = 0

17/11/99

=1.1011, y[-1] = 0

y[n-1]

y[n]

y[n-1]

y[n]

0.1101

0.1101

0.10001111

0.1001

1.1000111

1.1001

0.01100011

0.0110

0.0110001

0.0110

0.01000010

0.0100

1.0100001

1.0100

0.00101100

0.0011

0.0010110

0.0011

0.00100001

0.0010

1.0010000

1.0010

0.00010110

0.0001

0.0001011

0.0001

0.00001011

0.0001

1.0000101

1.0001

0.00001011

0.0001

0.0000101

0.0001

Captulo 10 : Implementacin de Filtros Digitales

21

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Para los dos valores de se observa que cuando >0, la salida tiende a un valor
constante distinto de cero, mientras que si <0, la salida oscila entre dos valores.
Esto se debe a que el sistema tiene un polo efectivo en el crculo unidad. En este
caso el sistema tiene un polo en z=1 para >0, y en z=-1 para <0. Esto implica
y [n 1], > 0
Q ( y [n 1]) =
y [n 1], < 0
El error de cuantizacin debido al redondeo es
Q( y [n 1]) y [n 1]

, y sustituyendo la anterior expresin,


2

.
2(1 )
Con esta frmula tenemos delimitado el rango de variacin de los ciclos lmite. Por
tanto, utilizar un mayor nmero de bits de cuantizacin disminuye la amplitud del
ciclo lmite. Esto no es siempre posible, por lo que existen tcnicas de eliminacin
de los ciclos lmites basadas en realizaciones en espacio de estado.
y [n 1]

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

22

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
Cuantizacin de coeficientes : Trataremos de investigar el impacto de la
cuantizacin de los coeficientes del filtro en la funcin de Transferencia del
mismo.
Supongamos una funcin de Transferencia H(z)=1/(1+a1z -1+a2z -2), cuyos polos
complejos son p y p* cumplindose que a1= -2Re(p) y a2=|p|2. Por tanto,
cuantizar a1 significa cuantizar la parte real del polo, mientras que cuantizar a2
significa cuantizar el radio del polo. Esto se muestra en la figura.

Im(z)

-1
-1

R e (z)

17/11/99

El polo estar definido por la interseccin de las


lneas verticales y los crculos. Se pueden sacar dos
conclusiones:
En la vecindad de z= 1, los posibles polos estn
ms separados entre s. Se dice que estos polos son
muy sensibles a la cuantizacin.
Si muestreamos a una frecuencia mucho mayor
que la sealada por el teorema del muestreo, los
polos son empujados hacia z=1. Por tanto, aumentar la frecuencia de muestreo hace a los polos ms
sensibles a la cuantizacin.
Captulo 10 : Implementacin de Filtros Digitales

23

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

17/11/99

Para sistemas de mayor orden es previsible que la sensibilidad de los coeficientes vaya a peor, por lo que realizar filtros que contegan polos (filtros IIR)
de forma directa (formas directa I o II) no es aconsejable. Los coeficientes en
estas forman no nos dicen nada acerca de la situacin de sus polos y mucho
menos acerca de las consecuencias de su cuantizacin.
La solucin es, lgicamente, utilizar las formas Paralelo o Cascada para tener
un mayor control sobre la situacin de los polos al cuantizar.
Estudiamos ahora el efecto de la cuantizacin sobre los ceros. En el caso de
filtros FIR (compuesto exclusivamente por ceros), sabemos que se caracterizan por ser de fase lineal. Esto es debido a que los coeficientes son simtricos
(o asimtricos). Por tanto cuantizar los coeficientes no va a variar la linealidad
de fase del filtro.
Lo que si variar es la magnitud de la respuesta. Se puede demostrar que los
ceros de un filtro FIR o bien estn sobre la circunferencia de radio 1, o estn
en parejas con radios recprocos (ver figura T24). Por tanto, en los filtros FIR
lo normal es utilizar la forma directa (I o II). Tambin se podra utilizar la
forma en cascada pero se utiliza menos.
Captulo 10 : Implementacin de Filtros Digitales

24

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
4
3

El hecho de que los ceros en un filtro digital estn


sobre el crculo unidad, hace que los coeficientes
del numerador sean +1 -1, por lo que en las
formas en cascada se pueden ahorrar desde un 25 a
un 50% en multiplicaciones comparado con un
diseo en paralelo.

2
1
0
-1
-2
-3
-4
-4

-2

17/11/99

Los ceros en un filtro IIR son ms problemticos. Aqu no tenemos la seguridad


de que los coeficientes son simtricos, por lo que habr que tener las mismas
consideraciones que las explicadas en el caso de los polos. Aqu adems hay que
tener en cuenta el caso habitual en que varios ceros estn en z=1 (ver transformaciones bilineales), por lo que su cuantizacin no tendra efectos graves. Lo
ms normal es utilizar la forma en cascada, aunque se puede utilizar la forma en
paralelo siempre que no haya unas especificaciones demasiado exigentes.
Captulo 10 : Implementacin de Filtros Digitales

25

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Anlisis de cuantizacin de coeficientes en los filtros FIR.

M 1

La funcin de transferencia de un filtro FIR de orden M-1 es : H (z ) = h[n] z n


n =0
La cuantizacin de los coeficientes resulta en una nueva funcin de transferencia,
M 1

M 1

n =0

n =0

H (z ) = h[n] z n = (h[n]+ e[n]) z n = H (z ) + E (z )

Calculamos el lmite superior de la funcin de transferencia en el crculo unidad:

( ) = e[n] e

Ee

M 1
n =0

jn

M 1

e[n] e
n =0

jn

M 1

e[n]
n =0

En el peor caso en que todos los errores de redondeo sean mximos, el error del
filtro est acotado por
M
E e j
2
Este lmite es bastante pesimista. Un lmite ms realista se obtiene si suponemos
que la seal e[n] es una variable aleatoria con varianza e2. La varianza de E(ej)
se puede demostrar que es (e2 = 2/12),
sin M 2
sin M
2M 1
2
2
E ( ) = e M 1 +
E ( )
=
M 1 +
sin 12
sin
12

( )

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

26

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Haremos ahora un anlisis de sensibilidad de los polos y ceros de la


funcin de Transferencia H(z) a pequeas variaciones en los
coeficientes i y j del filtro diseado.
H (z ) =

m z m + m1 z m1 ++1 z + 0

n z n + n 1 z n 1 ++ 1 z + 0

Los polos vienen dados por las races del denominador y los polos por
las races del numerador:
N ( z ) = m z m + m1 z m1 ++1 z + 0 = 0
D( z ) = n z n + n 1 z n 1 + 1 z + 0 = 0
Desarrollaremos la sensibilidad de las races a la cuantizacin de los
coeficientes. El mtodo es aplicable tambin a los ceros. Los polos de
D(z) sonj, j=1,2,...,n, pero si uno de los coeficientes k vara en una
cantidad k, habr un cambio j en las races del polinomio.

D z , k = n z n + n 1 z n 1 ++ k z k ++ 1 z + 0 = 0
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

27

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Desarrollamos esta ltima expresin en una serie de Taylor alrededor


de los valores nominales j0 y k0:
D(z , k ) = D(k , k 0 ) +

D(z , k )
z

Particularizando para z=j0,


0 = 0+

D (z , k )
z

z = k
k = k 0

j +

z= j0

k +

D(z , k )
k

D(z , k )
k

k = k 0

z= j 0

z = k
k = k 0

k +

k = k 0

Determinamos la variacin de la raiz j debido a un cambio en k.

D z , k
j =

D z , k
z

j =

)
z = j 0

kj 0

( j 0 i )
n

i =1,i k

k = k 0

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

28

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

De la ecuacin anterior se puede sacar como conclusin

17/11/99

El coeficiente ms sensitivo ser siempre 0 (0).


La sensibilidad aumenta cuando las races se encuentran muy agrupadas,
incrementndose fuertemente si el orden del sistema n es grande.

Captulo 10 : Implementacin de Filtros Digitales

29

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Ejemplos en MATLAB
Dado el filtro digital IIR con Fs=25 KHz, cuyos coeficientes B y A son
>> B = [0.0280 -0.0850 0.1037 -0.0942 0.0782 0 -0.0782 0.0942 -0.1037 0.0850 0.0280]
>> A = [1.0000 -5.0041 12.5162 -20.3913 23.8604 -20.8072 13.6498 -6.6537 2.3175 0.5229 0.0594]
Analog(:) Prewarped(-) and Unwarped(--) Spectrum vs f in Hz
1.2

0.8

0.6

0.4

0.2

0
0

17/11/99

2000

4000

6000

8000

10000

12000

14000

Captulo 10 : Implementacin de Filtros Digitales

30

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
>> Bq = round(B*1000)/1000;
>> Aq = round(A*1000)/1000;
>> [H F]=freqz(Bq,Aq,500,25000);plot(F,abs(H));grid;
Respuesta del filtro cuantizado a 3 dgitos decimales

1.2

0.8

0.6

0.4

0.2

0
0

2000

4000

6000

8000

10000

12000

14000

Frecuencia (Hz)

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

31

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
>> [Z P K]=tf2zp(B,A);
>> SOS = zp2sos(Z,P,K,down);SOSq=round(SOS*1000)/1000;M=size(SOS,1);
>> Ht=ones(500,1);for i=1:M;Bsosq=SOSq(i,1:3);Asosq=SOSq(i,4:6);[H
F]=freqz(Bsosq,Asosq,500,25000);Ht=H.*Ht;end;
>> plot(F,abs(Ht));grid;
Realizacin de filtro con Secciones de 2 Orden y
coeficientes cuantizados con 3 decimales
1.2

0.8

0.6

0.4

0.2

17/11/99

2000

4000

6000
8000
Frecuencia (Hz)

10000

12000

14000

Captulo 10 : Implementacin de Filtros Digitales

32

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Las estructuras ms simples para sumar y restar son las estructuras en serie. El tamao
del circuito es mnimo pero requiere de N ciclos de reloj para producir el resultado (N es
el tamao de los datos en bits). Sin embargo, un circuito tan pequeo (retrasos pequeos)
permite utilizar un reloj de muy alta frecuencia, lo cual compensa el hecho de necesitar
N ciclos.
CLR

CLR

CARRY
IN1
IN2

Full
Adder

Sumador Serie
17/11/99

CARRY
IN1
SUM

IN2

Full
Adder

DIFF

Restador Serie
Captulo 10 : Implementacin de Filtros Digitales

33

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Los sumadores (restadores) en paralelo ms sencillos son los que propagan las llevadas (carry
propagate o ripple carry) de un bit a otro. Como
contrapartida producen los retrasos ms largos.
B3

A3

B2

Ci

Full
Adder
Co

A2

B1

Ci

Full
Adder
Co

A1

B0

Ci

Full
Adder
Co

A0

B3 B2 B1 B0

5V

B3 B2 B1 B0

A3 A2 A1 A0

Ci

Sumador
4 bits

Half
Adder
Co

A3 A2 A1 A0

Co

S3 S2 S1 S0

C
S3

S2

S1

Sumador Paralelo (Carry Propagate)


17/11/99

S0

R3 R2 R1 R0

Restador Paralelo (Carry Propagate)


Captulo 10 : Implementacin de Filtros Digitales

34

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Existen varias formas de acelerar la realizacin de una suma de varios bits.


La ms conocida es el carry look-ahead. Aqu la llevada es de alguna
forma precalculada a partir de los bits de entrada, lo que acelera el clculo
de la suma pero aade ms transistores ( N2). Esto hace que para valores
grandes de N, el carry look-ahead no sea eficiente.
Co0 = Cg0
Co1 = Cg1 + Ci1 Cp1 = Cg1 + Co0 Cp1 = Cg1 + Cg0 Cp1

Co = A B + Ci ( A + B)
Cg = A B; Cp = A + B
Co = Cg + Ci Cp

Co2 = Cg2 + Ci2 Cp2 = Cg2 + Co1 Cp2 =

= Cg2 + Cg1 + Cg0 Cp1 Cp2


= Cg2 + Cg1 Cp2 + Cg0 Cp1 Cp2
Co3 = Cg3 + Ci3 Cp3 = Cg3 + Co2 Cp3 =

= Cg3 + Cg2 + Cg1 + Cg0 Cp1 Cp2 Cp3 =


= Cg3 + Cg2 Cp3 + Cg1 Cp2 Cp3 + Cg0 Cp1 Cp2 Cp3
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

35

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
B3 A3

B2 A2
C g2

C g1

C p2

B1 A1

B0 A0
C g0

C p1

S3

S2

S1

S0

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

36

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Carry Select Adders: Los datos se dividen en grupos de bits y se realizan


las sumas para cada uno de esos grupos en las dos condiciones posibles:
llevada inicial C=0 y C=1. Una vez obtenido el resultado de C, se elige el
resultado correcto mediante un multiplexor.
B[7:4]

A[7:4]

ADDER 4

B[3:0]

A[3:0]

ADDER 4

Co

ADDER 4

S[7:4]

17/11/99

S[3:0]

Captulo 10 : Implementacin de Filtros Digitales

37

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Una generalizacin de la estructura anterior se muestra en la siguiente


figura. Los bloques CS es un circuito combinatorial que realiza la funcin
c(k+1)m = c(k+1)m(0) + c(k+1)m(1) ckm
lgica,
donde c(k+1)m(0) es la llevada resultante cuando ckm=0, y c(k+1)m(1) es la
llevada resultante cuando ckm=1.
A[11:8]

c 12 (1)

B[11:8]

A[7:4]

c 8 (1)

ADDER 4

c 12 (0)

B[7:4]

A[3:0]

c 4 (1)

ADDER 4

c 8 (0)

c 8 (0)
c 4 (1)
c 4 (0)

c0

CS2

c0

ADDER 4

c 4 (0)

c 4 (1)
c 4 (0)
c0

c 8 (1)

B[3:0]

CS1

CS3
c4

c8

c 12

17/11/99

S[11:8]

S[7:4]

c0

S[3:0]

Captulo 10 : Implementacin de Filtros Digitales

38

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Carry Save Adder (CSA): Se utilizan para sumar un gran nmero de


operandos. La estructura bsica del CSA est formada por N FAs :
u n-1

vn-1

w n-1

FA
cn

s n-1

u1

v1

w1

FA
c2

u0

v0

w0

FA
s1

c1

s0

La suma de tres operandos queda convertida en la suma de dos. Lo nico


que hay que hacer es multiplicar por 2 el vector C (desplazar un bit a la
izda):
U+V+W=S+2C
Cuando hay ms de tres operandos se utilizan los CSA hasta que solo
queden dos operandos. En este momento se hace una suma normal por
cualquiera de los procedimientos descritos anteriormente.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

39

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
A8

A7

A6

A5

A4

A3

CSA

A1

CSA

CSA
C

A2

CSA
S

CSA
C

CSA
C

CPA

Los retrasos son mucho menores


ya que en los CSA no hay propagacin de la llevada.
Al hacer el desplazamiento hacia
la izquierda con valores negativos
en complemento de 2 debe hacerse la extensin de signo para
producir resultados correctos.
Otras formas de hacer sumas de
varios operandos se muestra en
las figuras de la pgina siguiente.

SA

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

40

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Ak

Ak

CSA

CPA
CLK
CLR

CLK
CLR

REG

REG
CPA
SA
SA

La figura de la izquierda muestra el circuito ms sencillo formado por un sumador


carry propagate y un registro. El hardware es mnimo pero las prestaciones
tambin (la frecuencia del reloj debe ser pequea para permitir que el CPA termine
la suma). La otra figura muestra un circuito ms complejo pero ms rpido. Consta
de un CSA, un registro de 2N bits y un CPA. La frecuencia del reloj podr ser
bastante alta ya que el CSA solo tiene los retrasos debidos a un sumador completo
de un bit.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

41

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Multiplicadores de nmeros positivos

P7

A3 B3
P6

A3 B2
A2 B3
P5

A3B1
A2B2
A1B3
P4

A3
B3
A3B0
A2B1
A1B2
A0B3
p3

A2
B2
A2B0
A1B1
A0B2

A1
B1
A1 B0
A0 B1

A0
B0
A0B0

P2

P1

P0

El Multiplicador ms sencillo es el llamado Ripple Carry Multiplier, que se deriva de


la figura anterior. La estructura a que da lugar es bastante regular (formada por la repeticin de una celda compuesta por una puerta AND y un FA) pero requiere la propagacin de la llevada y de las sumas parciales a travs de todo el circuito. Las zonas sombreadas de la figura son las correspondientes a las celdas que no tienen porqu ser FA.
Para una multiplicacin de dos nmeros de N y M bits respectivamente se necesitan NM
puertas AND, (N+M-2) semisumadores (HA) y (NM-N-M+1) FAs. El retraso en el
clculo de la multiplicacin es aproximadamente 4 veces el retraso de un sumador de N
bits.
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

42

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Ripple Carry Multiplier
s'

s'

A3

A2

A1
0

A0
0

B0

B
c'
c

c'
s

FA
c

B1
s
0

B2
0

B3
0

P7

17/11/99

P6

P5

P4

P3

P2

P1

P0

Captulo 10 : Implementacin de Filtros Digitales

43

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Carry Save Multipliers
A3

La propagacin de la llevada se realiza desde


una fila a otra posterior y no entre celdas de la
misma fila, por lo que hay que hacer una suma
final. El retraso en el clculo es ~ 3 veces el 0
retraso de un sumador de N bits.

A2
0

A1
0

A0
0

0
B0

B1

0
B2

0
B3

ADDER
P7

17/11/99

P6

P5

P4

P3

P2

P1

P0

Captulo 10 : Implementacin de Filtros Digitales

44

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Wallace Tree
Los productos parciales se calculan todos a la vez en la primera etapa. Luego esos
productos parciales se suman con una carry save adder. Se utilizan para valores
grandes de N y el retraso depende del logaritmo de N.
A

Multiply Modules

CSA Array

CPA
P

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

45

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Arquitecturas Standard de Multiplicadores
Multiplicand
Shift Left
64 bits

64-bit ALU

Multiplier
Shift Right
32 bits

Control

Product
Write
64 bits

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

46

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Arquitecturas Standard de Multiplicadores

Multiplicand
32 bits

32-bit ALU

Multiplier
Shift Right
32 bits

Product

Shift Right

Control

Write

64 bits

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

47

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Arquitecturas Standard de Multiplicadores

Multiplicand
32 bits

32-bit ALU

Product

Shift Right

Control

Write

64 bits

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

48

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Multiplicadores de nmeros con signo
Algoritmo de Booth
El algoritmo de Booth est basado en una representacin digital denominada
Signed Digit (SD). Para nmeros en base 2, la representacin SD de un dgito
tiene 3 posibles valores (0, 1 y -1), por lo que existe una redundancia (los nmeros
se pueden representar de varias formas). Por ejemplo, el valor -9 (10111), se puede
representar de las siguientes formas con SD de 5 bits:
0
0
0
1
1
1
1

1
1
1
0
1
1
1

0
0
1
1
0
0
1

0
1
1
1
0
1
1

1
1
1
1
1
1
1

=
=
=
=
=
=
=

8
8
8
16
16
16
16

1
2
4
+4
+8
+8
+8

+1
A=
+ 2 +1
+ 2 +1
1
2 +1
4 + 2 +1

an 1 2

n 1

n2

+ ai 2i
i =0

De todas estas representaciones, existe una con el menor nmero de valores


distintos de 0 (forma cannica).

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

49

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Un nmero digital se convierte a SD en forma cannica (CSD) observando


cadenas de 1s en la representacin digital normal (complemento de 2).
Una cadena de 1s puede convertirse a CSD de la siguiente forma:
0 0 1 1 1 1 1 1 0 0 --> 0 1 0 0 0 0 0 1 0 0
1 1 1 1 1 0 0 --> 0 0 0 0 1 0 0

Utilizando esta recodificacin, podemos modificar la forma de multiplicar.


Supongamos que queremos multiplicar A (an-1,,a0) por B, los pasos a
realizar son los siguientes:

17/11/99

Si ai=0 y ai-1=0, sumar 0 a P


Si ai=0 y ai-1=1, sumar B a P
Si ai=1 y ai-1=0, resta B de P
Si ai=1 y ai-1=1, suma 0 a P

Captulo 10 : Implementacin de Filtros Digitales

50

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Ejemplo: Multiplicar -6 (1010) por -5 (1011)

P
0000
0000
0000
+0101
0101
0010
+1011
1101
1110
+0101
0011
0001

17/11/99

A
1010
1010
0101
0101
1010

a0=a-1=0, sumar 0
Desplazar un bit a la izquierda
a0=0,a-1=1, restar B (1011)
Desplazar un bit a la izquierda
a0=1,a-1=0, sumar B (1011)

1010
1101

Desplazar un bit a la izquierda (extensin de signo)


a0=0,a-1=1, restar B (1011)

1101
1110

Desplazar un bit a la izquierda

Captulo 10 : Implementacin de Filtros Digitales

51

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


Qu distingue a un DSP de otros micros de propsito general?

17/11/99

ALU flexible y rpida: las operaciones estandard (bit a bit, suma, etc),
multiplicaciones, multiplicaciones con acumulacin y desplazamientos
arbitrarios deben ser realizados en un ciclo de reloj.
Rango dinmico extendido para multiplicaciones+acumulacin, de
forma que no ocurra overflow.
Carga de operandos en un ciclo de reloj, lo que significa un direccionamiento flexible para varias memorias de datos.
Hardware especfico que permita el almacenamiento circular.
No son necesarias instrucciones adicionales (condiciones, comparaciones) para bucles y saltos.

Captulo 10 : Implementacin de Filtros Digitales

52

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors

6WDWXV

2SFRGH

3URFHVVLQJ
8QLW

&RQWURO
8QLW

5HVXOWV
2SHUDQGV

'DWD
%XV
,QVWUXFWLRQV

'DWD

$GGUHVV

'DWDDQG
3URJUDP
0HPRU\

$UTXLWHFWXUDGH9RQ1HXPDQQ
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

53

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


Arquitectura Harvard

6WDWXV

2SFRGH

$ULWKPHWLF
8QLW

'DWD

'DWD$GGUHVV

'DWD
0HPRU\

,QVWUXFWLRQ

&RQWURO
8QLW

17/11/99

,QVWUXFWLRQ$GGUHVV

3URJUDP
0HPRU\

Captulo 10 : Implementacin de Filtros Digitales

54

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors

,QVWUXFWLRQ6HTXHQFHU

$GGUHVV*HQHUDWLRQ8QLW

,QVWUXFWLRQ0HPRU\

'DWD0HPRU\

,QVWUXFWLRQ5HJLVWHU

'DWD3DWK
3URFHVVLQJ8QLW

,QVWUXFWLRQ'HFRGHU

,QVWUXFWLRQ6WUHDP

17/11/99

'DWD6WUHDP

Captulo 10 : Implementacin de Filtros Digitales

55

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


$*8

$*8

$*8

'DWD
0HPRU\

'DWD
0HPRU\

'DWD
0HPRU\

'DWD %XV

'DWDSDWK

'DWDSDWK

3URFHVDPLHQWRFRQXQR\GRVEXVHV

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

56

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


'DWD;

'DWD<

6KLIW

6KLIW

'DWD<

'DWD;

$UUD\0XOWLSOLHU

$UUD\0XOWLSOLHU
6KLIW

$/8

$/8

6KLIW

6KLIW

08;

08;

5HJLVWHU
$/8

6KLIW

6KLIW

5HJLVWHU

'DWDSDWKFRQ0$& 0XOWLSO\DQG$&FXPXODWH \$/8

6KLIW

'DWDSDWKEDVDGRHQXQDFRPELQDFLyQGH0XOWLSOLFDGRU
\$/8
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

57

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


*OREDO%XV

08;
/HQJWK5HJLVWHU

0RGXOR5HJLVWHU

$GGUHVV5HJLVWHU

$/8
0RGXOR/RJLF

%LW5HYHUVH

$GGUHVV

*HQHUDFLyQGHGLUHFFLRQHVHQXQ'63

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

58

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


Arquitectura del ADSP2101
,QVWUXFWLRQ
5HJLVWHU

$GGUHVV
*HQHUDWRU
 

3URJUDP
&RXQWHU

3URJUDP
0HPRU\
65$0 RU
520

'DWD
0HPRU\
65$0

$GGUHVV
,QVWUXFWLRQV
&DFKH 0HPRU\ "

'DWD

17/11/99

5HJLVWHU

5HJLVWHU

5HJLVWHU

$/8

0$&

6+,)7

5HJLVWHU

5HJLVWHU

5HJLVWHU

,2

,2
%XV

Captulo 10 : Implementacin de Filtros Digitales

59

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


3URJUDP
0HPRU\
3URJUDP
6HTXHQFHU

520

3URJUDP
'DWD
0HPRU\
65$0

'DWD
0HPRU\
65$0

([WHUQDO
$GGUHVV
%XV

$GGUHVV

$GGUHVV
*HQHUDWRU
,QVWUXFWLRQV

'DWDSDWK
$/808/$&&

'DWD

,2

([WHUQDO
'DWD
%XV

,2 %XV

'LDJUDPDGH%ORTXHVGHO706&
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

60

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

61

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

62

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

63

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales

17/11/99

Diferenciadores FIR.
Transformacin de Hilbert.
Interpolacin y Decimacin.
Filtros Peine.
Filtros Pasatodo.
Filtros Notch.

Captulo 11 : Aplicaciones de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Diseo de diferenciadores FIR
La respuesta frecuencial de un diferenciador es H(F)=j2F, para |F|FC. FC
es la frecuencia hasta la que queremos diferenciar. Ya que H(F) es
imaginario necesitamos secuencias de los tipos 3 y 4 (simetra impar). Si N es
adems impar h[0]=0.
Para determinar la secuencia h[n] hacemos la transformada inversa de H(F),
h[n] = j

FC

FC

2F exp( j 2nF )dF =

2nFC cos(2nFC ) sin (2nFC )


n 2

Una vez obtenida la secuencia podemos aplicarle una ventana para reducir
sobreimpulsos. Ntese que para secuencias con N impar, H(0.5)=0.

En la figura se muestran algunos diferenciadores FIR de distintos y tamaos


para FC=0.4 usando una ventana de Hamming.

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Diferenciadores FIR, Ventana Hamming, N=2, 10, 15, 20, 25
3.5

2.5

1.5

0.5

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

Frecuencia Digital

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Diseo de diferenciadores en MATLAB con las funciones firls y remez.
Por ejemplo para disear un diferenciador con una frecuencia de corte normalizada
FC=0.3, haremos
>> Fc=0.3;N=25;
>> B=firls(N,[0 0.3 0.4 0.5]*2,[0 0.3 0 0]*2*pi,differentiator);
>> [H,W]=freqz(B,1,500);plot(W/(2*pi),abs(H));
Diferenciadores FIR
2
1.8
N
N
N
N

Respuesta Frecuencial

1.6
1.4

=
=
=
=

25
20
15
10

1.2
1
0.8
0.6
0.4
0.2
0

17/11/99

0.1

0.2
0.3
Frecuencia Normalizada

0.4

0.5

Captulo 11 : Aplicaciones de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Utilizando ahora la funcin remez.
>> B=remez(25,[0 0.4 0.4 0.5]*2,[0 0.3 0 0]*2*pi,differentiator);
>> [H,W]=freqz(B,1,500);plot(W/(2*pi),abs(H));
Diferenciadores FIR con remez
2
1.8
1.6

N
N
N
N

1.4

=
=
=
=

25
20
15
10

1.2
1
0.8
0.6
0.4
0.2
0

17/11/99

0.1

0.2
0.3
Respuesta Frecuencial

0.4

0.5

Captulo 11 : Aplicaciones de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Diseo de Transformaciones de Hilbert
La transformacin de Hilbert ideal viene dado por
H(F)=-jsigno(F)

h[n]=[1-cos(n)]/n

h[0]=0

La transformacin de Hilbert desplaza la fase de una seal -90 (-/2).

En aplicaciones prcticas se requerir este desplazamiento de fase hasta una


frecuencia FC , de forma que para calcular la secuencia h[n] hacemos la
transformada inversa,
F
1 cos (2 n F )
h [n ] =

FC

j signo (F ) exp ( j 2 n F )dF =

Ya que H(F) es imaginaria, las secuencias deben ser del tipo 3 4.


De igual forma que en el diseo de los diferenciadores, la h[n] obteni-da
debe ser truncada por una de la ventanas habituales.
En la figura se muestran las respuestas frecuenciales de varias Transformaciones de Hilbert para distintas longitudes de secuencia, y para FC=0.4.
Para secuencias de longitud impar, H(0.5) es siempre 0.
17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Transformacin de Hilbert: Ventana Hamming, N=10, 15, 20, 25
1.2

0.8

0.6

0.4

0.2

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

Frecuencia Digital

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Diseo de Transformadores de Hilbert con MATLAB
Usaremos las funciones firls y remez con una frecuencia de corte FC=0.05.
>>
>>
>>
>>

B=firls(25,[0.05 0.5]*2,[1 1],hilbert);


[H,W]=freqz(B,1,500); plot(W/(2*pi),abs(H),r);hold;
B=firls(25,[0.05 0.45 0.47 0.5]*2,[1 1 0 0],hilbert);
[H,W]=freqz(B,1,500);plot(W/(2*pi),abs(H),r);
Transformadores de Hilbert FIR con firls
1.2

Respuesta Frecuencial

0.8

N
N
N
N

0.6

=
=
=
=

25
20
15
10

0.4

0.2

17/11/99

0.1

0.2
0.3
Frecuencia Normalizada

0.4

0.5

Captulo 11 : Aplicaciones de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Con la funcin remez,
>>
>>
>>
>>

B=remez(20,[0.05 0.45 0.47 0.5]*2,[1 1 0 0],[100 1],'hilbert');


[H,W]=freqz(B,1,500);
B=remez(25,[0.05 0.5]*2,[1 1],'hilbert');
[H,W]=freqz(B,1,500);
Transformadores de Hilbert FIR con remez
1.2

Respuesta Frecuencial

0.8
N
N
N
N

0.6

=
=
=
=

25
20
15
10

0.4

0.2

17/11/99

0.1

0.2
0.3
Frecuencia Normalizada

0.4

0.5

Captulo 11 : Aplicaciones de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Aplicaciones de Alteracin de la Frecuencia de muestreo.
Interpolacin
Consiste en aumentar la frecuencia de muestreo, obteniendo muestreos de mayor
frecuencia a partir de datos muestreados a menor frecuencia.
Up-Sampler
Aumentar la frecuencia de una seal por un factor entero L > 1, se insertan L-1 ceros entre dos
muestreos consecutivos de la seal de entrada x[n], lo que produce una salida xu[n].
Matemticamente,

x[n / L], n = 0,L,2L,...,


xu [n] =
resto
0

La operacin de up-sampling es lineal, pero no es invariante en el tiempo.


Para realizar una verdadera interpolacin deberemos sustituir los ceros insertados por valores
apropiados de la seal. Eso se har introduciendo un filtro pasobajo, tal y como veremos ahora.
Funcin de Transferencia del Up-Sampler

X u (z ) =
17/11/99

x [n] z

n =

x[n / L] z

n =

x[m] z

m =

mL

( )

= X zL

Captulo 11 : Aplicaciones de Filtros Digitales

10

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


En el crculo unidad, la relacin anterior se convierte en,

( ) ( )
(e ) = X (e )

X u e j t s = X e j t s L
Xu

j L

Es decir, un aumento por un factor L de la frecuencia de muestreo conlleva una repeticin L


del espectro de la seal x[n]. La figura muestra los efectos de doblar la frecuen-cia de muestreo.
En general, aumentar la frecuencia de muestreo por un factor L introduce L-1 imgenes del
espectro original.
j W

X(e

Imagen
j W
X

(e

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

11

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Filtro de Interpolacin
Para interpolar la seal de entrada no tenemos ms que aplicar un filtro pasobajo a la salida del
up-sampler. De esta forma los ceros que habamos insertado en el up-sampler se convierten
ahora en valores interpolados.
xu[n]

x[n]

H(z)

y[n]

Podemos obtener las especificaciones del filtro pasobajo necesario.Supongamos que x[n] ha
sido obtenido muestreando una seal continua xa(t) cuyo espectro viene dado por Xa(j). El
espectro de x[n] es X(ej). Estas dos transformadas estn relacionadas por la siguiente
expresin:

X (f )=

1
T0

X (f k T )

k =

donde T0 es el periodo de muestreo. Si muestreamos xa(t) a una frecuencia mayor de forma que
T=T0/L, obtenemos y[n], cuya transformada de Fourier es Y(ej), de forma que,

L
k
1

Y ( f ) = X a ( f k T ) = X a f
T k =
T0 k =
T0 L

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

12

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


De las ecuaciones anteriores se deduce que si pasamos xu[n] a travs de un filtro pasobajo ideal
de frecuencia de corte c = /L y ganancia L, la salida del filtro es precisamente y[n].
|X(f)|

- 2 / T0

- 1 / T0

1 / T0

2 / T0

2p

4p

1/T

4p

|X(f)|

- 4p

- 2p

-p

|Y(f)|

T = T0 /L
L=2

-1/T

|Y(f)|

- 4p

17/11/99

- 2p

-p

2p

Captulo 11 : Aplicaciones de Filtros Digitales

13

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Filtros de Nyquist
Son una generalizacin de los filtros de media banda que vimos en el captulo dedicado a filtros
FIR. All se vi que este tipo de filtros contiene coeficientes de valor cero, que hace que su
computacin sea ms sencilla. Adems, cuando se utilizan como filtros de interpolacin,
preservan el valor original del muestreo a la salida del filtro. Estos filtros tambin se denominan
filtros de L bandas. Los filtros de media banda son aquellos en los que L=2.
El diseo un filtro FIR de L bandas con una frecuencia de corte c=/L lo haremos por el
mtodo de las series de Fourier. En este mtodo los coeficientes del filtros vienen dados por,

h[ n ] = h LP [ n ] w[ n ]

donde hLP[n] es la respuesta a impulso de un filtro pasobajo ideal con una frecuencia de corte
/L y w[n] es una ventana espectral. Aplicando el mtodo de las series de Fourier para una
frecuancia de corte /L,

hLP [n] =

sin (n L )
,
n

Esto nos garantiza que los valores de muestreo son preservados despus de hacer el upsampling.

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

14

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Decimacin: disminucin de la frecuencia de muestreo en un factor entero.
Down-Sampler
Hacer un down-sampling de un factor entero M>1 consiste en guardar uno de cada M valores
muestreados y eliminando los M-1 muestreos intermedios, generando una seal de salida xd[n] de
acuerdo con la siguiente relacin: xd[n]=x[nM]. Al igual que la operacin de up-sampling, el downsampling es lineal pero es variante en el tiempo. Disminuir la frecuencia puede tener implicaciones a
la hora de cumplir el teorema del muestreo, por lo que tendremos que introducir un filtro pasobajo
antes de hacer el down-sampling.
Funcin de Transferencia del Down-Sampler
x[n] n = 0,M ,2M ,...,
Creamos una funcin auxiliar xaux[n], que definimos, xaux [n] =

X d (z ) =

x[Mn ] z

n =

x [Mn ] z
aux

n =

otro

x [k ] z

k M

aux

= X aux z 1 M

k =

Relacionamos xaux[n] con x[n] mediante la siguiente ecuacin,


1 n = 0, M ,2 M ,...,
xaux [n ] = c[n ] x[n] donde c[n ] =
resto
0

1
Otra forma de expresar c[n ] es, c[n ] =
M
17/11/99

M 1

j 2kn M

k =0

Captulo 11 : Aplicaciones de Filtros Digitales

15

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


1 M 1
1 M 1
M 1 j 2kn M
n
j 2kn M
n
X aux (z ) = c[n ] x[n ] z
X z e j 2k M
z =
e
x[n ]e
x[n ] z =

M k =0 n =
n =
n = k = 0

M k =0
1 M 1
1 M 1
1M
j 2k M
X d (z ) =
X z e
X e j 2 ( f t s k ) M
Xd (f )=

M k =0
M k =0
Esto quiere decir que la funcin de transferencia del down-sampler es la suma de M versiones
ensanchadas (multiplicacin por ts) y desplazadas de la funcin de transferencia X(z), y multiplicadas
por el factor 1/M. Debido a que se ha disminuido la frecuencia de muestreo en un factor M, no
ocurrir aliasing si la seal x[n] tiene un espectro limitado entre /M. En la figura se observa que a
no ser que se introduzca un filtro pasobajo apropiado, se va a producir aliasing a la salida del downsampler. Este filtro deber colocarse antes del down-sampler para ser efectivo. Un filtro ideal deber
tener una frecuencia de corte igual a /M. En la prctica siempre tendremos una banda de transicin
por lo que las especificaciones de filtro sern:

Captulo 11 : Aplicaciones de Filtros Digitales

16

1
=
M

1,
c M
H (e j ) =
0, M

x[n]

17/11/99

H(z)

xd [ n ]

y[n]

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


|X(f)|

Decimacin sin
aliasing

|X d (f)|

|X(f)|

Decimacin con
aliasing

|X d (f)|

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

17

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Alteracin fraccional de la frecuencia de muestreo
Se consigue utilizando en cascada un decimador por M y un interpolador por L, donde M
y L son enteros. El sistema final es un decimador por M/L o bien un interpolador por L/M.
La figura muestra dos posibles configuraciones en cascada. De las dos, la ms eficiente es
la segunda ya que slo ser necesario realizar un filtro que cumpla las dos condiciones del
interpolador y del decimador. Esto se consigue con un filtro con la frecuencia de corte,


s = min ,
L M
Esta frecuencia suprime las imgenes causadas por el interpolador y al mismo tiempo
garantiza la ausencia de aliasing que causara el decimador.

H d (z)

17/11/99

H u (z)

H d (z)

H u (z)

H (z)

Captulo 11 : Aplicaciones de Filtros Digitales

18

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Propiedades de interpoladores y decimadores
x[n]

x u[n]

H ( zL)

y[n]

x[n]

H ( z)

( )
Y (z ) = H (z ) X (z ) = H (z ) X (z )
L

( )

H ( zM)

x 1 [n]

y[n]

x[n]

( )

X 1 (z ) = H z M X (z )
Y (z ) =

1
M

1
=
M

M 1

X 1 z1 M e j 2k M
k =0

M 1

) (

k =0

H (z ) M 1
X z1 M e j 2k M
=

M k =0

17/11/99

1
X d (z ) =
M

H z e j 2k X z1 M e j 2k M

( ) ( )

Y (z ) = X 1 z L = H z L X z L

x[n]

y[n]

X 1 (z ) = H (z ) X (z )

X u (z ) = X z L
L

x 1[n]

x d[n]

X (z

M 1
k =0

y[n]

H ( z)

1M

e j 2k

H (z ) M 1
Y (z ) = H (z ) X d (z ) =
X z1 M e j 2k

M k =0

)
Captulo 11 : Aplicaciones de Filtros Digitales

19

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales

Para los filtros de decimacin se utilizan filtros FIR, ya que slo deberemos calcular uno
de cada M puntos. Por el contrario, en los filtros IIR deberemos calcular todos y cada uno
de los puntos debido a que es un filtro recursivo.
Para reducir las ncesidades computacionales en la realizacin de estos filtros se suele recurrir a la realizacin de interpoladores (o decimadores) en cascada. Esto se ilustra en el
siguiente ejemplo, en el que se han utilizado las propiedades de interpoladores y decimadores.
G ( z1 5 )

F(z)
12 KHz

12 KHz

12 KHz

12 KHz

F(z)
12 KHz

17/11/99

12 KHz

G ( z1 5 )

F(z)

400 Hz

15
12 KHz

2
400 Hz

G ( z)

15
12 KHz

30

800 Hz

2
800 Hz

400 Hz

Captulo 11 : Aplicaciones de Filtros Digitales

20

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales

Para las operaciones en cascada es muy til la descomposicin en polifase de las


funciones de transferencia.
Veamos con un ejemplo la descomposicin en polifase de una funcin de transferencia,
H (z ) = h[0]+ h[1]z 1 + h[2]z 2 + h[3]z 3 + h[4]z 4 + h[5]z 5 + h[6]z 6 + h[7]z 7 + h[8]z 8

Descomponemos en trminos pares e impares,


H (z ) = h[0]+ h[2]z 2 + h[4]z 4 + h[6]z 6 + h[8]z 8 +

(
= E (z )+ z

+ z 1 h[1]+ h[3]z 2 + h[5]z 4 + h[7]z 6


2

( )

E1 z 2

Tambin se podra haber descompuesto en tres o en ms trminos. En general,


M 1

H (z ) = h[k ] z k

Sea

k =0

La descomposicin en polifase con L trminos es,


L 1

( )

H (z ) = z k Ek z L
k =0

Ek (z ) =
17/11/99

M L

h[nL + k ] z

n =0

Captulo 11 : Aplicaciones de Filtros Digitales

21

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


x[n]

E 0 (z L )

y[n]

x[n]

z -1

z -1

E 1(z L)

E 1 (z L )

z -1

z -1

E 2(z L)

E 2 (z L )

z -1

z -1

E L-1(z L)

17/11/99

y[n]

E 0(z L)

E L-1 (z L )

Captulo 11 : Aplicaciones de Filtros Digitales

22

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales

Si H(z) es un filtro de interpolacin L, y utilizo la descomposicin en polifase de la


pgina anterior,
x[n]

E 0 (z)

y[n]

L
z -1

E 1(z)

L
z -1

E 2(z)

z -1

E L-1(z)

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

23

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Interpolacin y Decimacin en MATLAB
>> N=50;n=0:N-1;L=6;M=L*N;
>> x = sin(2*pi*0.14*n)+ sin(2*pi*0.21*n);
% Generar la secuencia del up-sampler
>> xu = zeros(1,M);
>> n1 = 1:M;
>> xu([1:L:M]) = x;
>> figure;stem(n,x);
>> figure;stem(n1,xu);hold;
% Frecuencia de corte del filtro pasobajo = pi/6 --> 1/12
>> Nf=30;nf=Nf/2;
>> B = fir1(Nf,1/6);
>> y = filter(6*B,1,xu);
% Desplazar a la izquierda el vector 'y'
>> y(1:M-nf) = y(nf+1:M); y(M-nf+1:M) = zeros(1,nf);
>> plot(n1,y,'r');zoom;
>> [H,F] = freqz(B,1,250,6);
>> figure;semilogy(F,abs(H));zoom;

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

24

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


2
1.5
1
0.5
0
-0.5
-1
-1.5
-2

17/11/99

50

100

150

200

250

300

Captulo 11 : Aplicaciones de Filtros Digitales

25

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


10

10

10

10

10

10

17/11/99

-1

-2

-3

-4

-5

0.5

1.5

2.5

Captulo 11 : Aplicaciones de Filtros Digitales

26

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Decimacin
>> N=50;n=0:N-1;M=6;Nf=30;nf=Nf/2;
>> x = sin(2*pi*0.042*n) + sin(2*pi*0.033*n);
% Filtro pasobajo frecuencia de corte pi/6 --> 1/12
>> B=fir1(Nf,1/6);
>> [H,F]=freqz(B,1,250,1);
>> xd = filter(B,1,x);
% Eliminar el retraso
>> xd(1:N-nf) = xd(nf+1:N);xd(N-nf+1:N)=zeros(1,nf);
% Generar la secuencia de down-sampler
>> y = xd(1:M:N-1);lxd=length(y);
>> figure;plot(n,x,'r',n,xd,'g');
>> figure;stem([1:lxd],y);
>> figure;semilogy(F,abs(H));

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

27

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Seal original y filtrada

2
1.5

1.5

0.5

0.5

-0.5

-0.5

-1

-1

-1.5

-1.5

-2

17/11/99

10

20

30

Seal decimada 6

40

50

-2

Captulo 11 : Aplicaciones de Filtros Digitales

28

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


10

10

10

10

10

10

-1

-2

-3

-4

-5

0.1

0.2

0.3

0.4

0.5

Frecuencia (Hz)

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

29

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales

Existen funciones en MATLAB que realizan estas operaciones automticamente. Son


interp, decimate y resample. Ver el Help de MATLAB para ms detalles.

Comb Filters
Tenemos una seal sonora a la que queremos aadirle ecos. La forma ms simple de
hacerlo es: y[n]=x[n]+ x[n-R], ||<1
R es el retraso del eco. La funcin de transferencia es H(z)=1+ z-R
Filtro Peine H(z)=1+0.8 -8
z
1.8
1.6

Respuesta Frecuencial

1.4
1.2
1
0.8
0.6
0.4
0.2

17/11/99

0.2

0.4
0.6
Frecuencia Normalizada

0.8

Captulo 11 : Aplicaciones de Filtros Digitales

30

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales

-8
)

5.
5

-8
/(1

Fil

Podemos generar N ecos espaciados R periodos de muestreo y con sus amplitudes


decayendo exponencialmente, de forma que la funcin de transferencia es,
N
NR
( N 1) R ( N 1) 1 z
2
R
2 R
H (z ) = 1 + z + z +  +
, <1
z
=
R
1 z
z R
Cuando N tiende a infinito,
H (z ) =
<1
,
1 z R

Respuesta Frecuencial

5
4.
5
4
3.
5
3
2.
5
2
1.
5
1
0.
5 0

17/11/99

0.2

0.8
0.4
0.6
Frecuencia Normalizada

Captulo 11 : Aplicaciones de Filtros Digitales

31

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales

-8
)/(1

Fil

Un caso sencillo de un filtro pasatodo es

+ z R
H (z ) =
,
R
1+ z

<1

-8
)

All-pass Filters

Retraso de Grupo (muestreos)

80
70
60
50
40
30
20
10
0

17/11/99

0.2

0.4
0.6
0.8
Frecuencia Normalizada

Captulo 11 : Aplicaciones de Filtros Digitales

32

5 Curso-Tratamiento Digital de Seal

Aplicaciones de Filtros Digitales


Notch Filters
Es un filtro pasabanda cuya funcin de transferencia es del tipo,
1+
1 2 z 1 + z 2
H ( z) =
2 1 (1 + ) z 1 + z 2
La frecuencia a la cual la respuesta es cero tiene la siguiente expresin,

0 = cos 1 ( )
Y el ancho de frecuencias de corte a 3 dB,

2
3dB = cos1

1+ 2

17/11/99

Captulo 11 : Aplicaciones de Filtros Digitales

33

5 Curso-Tratamiento Digital de Seal

0.9

0.9

0.8

0.8

Respuesta Frecuencial

Respuesta Frecuencial

Aplicaciones de Filtros Digitales

0.7

=0.8 =0.5
=0.5 =0.5
=0.2 =0.5

0.6
0.5
0.4

0.7

=0.8 =0.2
=0.5 =0.5
=0.5 =0.8

0.6
0.5
0.4

0.3

0.3

0.2

0.2
0.1

0.1
0.5

0
0

17/11/99

0.05

0.1

0.15

0.2
0.25
0.3
0.35
Frecuencia Normalizada

0.4

0.45

0.05

0.1

0.15

0.2
0.25 0.3
0.35
Frecuencia Normalizada

0.4

Captulo 11 : Aplicaciones de Filtros Digitales

0.45

0.5

34

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej1.txt

function [] = fftej1(N,D)
% fftej1(N,D)
% Ejemplo de una FFT de una seal sinusoidal de 20Hz sumada una seal
% tipo chirp con un desplazamiento desde 5 hasta 40 Hz en un tiempo D.
% N es el nmero de puntos de la funcin. Elegir preferiblemente valores
% que sean potencias de 2
ts=D/N;
d=ts/2;
t=0:ts:D-d;
x=sin(2*pi*20*t)+chirp([5 40]*D/N,N);
X=fft(x);
%Reordenar X
M=N/2;
Xaux=X;X(M+1:N)=Xaux(1:M);
X(1:M)=Xaux(M+1:N);
Xm=abs(X)/N;
Xf=unwrap(angle(X))*180/pi;
%Reordenar los ndices k
faux(M+1:N)=0:M-1;faux(1:M)=-M:-1;
f=faux/D;
figure;plot(t,x,'-g');zoom;
xlabel('Tiempo (s)');ylabel('x(t)');
title('x(t)=sin(2Pi20t)+chirp(5-40)');
figure;lines(f,Xm,'oc5','-c5');zoom;
xlabel('Frecuencia (Hz)');ylabel('|X[k]|');
title('Mdulo de Coeficientes Espectrales |X[k]|');
figure;lines(f,Xf,'xc3','-c3');zoom;
xlabel('Frecuencia (Hz)');ylabel('Fase ()');
title('Fase de Coeficientes Espectrales X[k]');

% Reconstruccin de la seal a partir de los X[k]


% Utilizamos un mayor nmero de puntos fs=500 Hz
fs=500;
ts=1/fs;
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej1.txt (1 of 2)31/08/2013 11:17:55 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej1.txt

d=ts/2;
t=0:ts:D-d;
Ns=length(t);
x=sin(2*pi*20*t)+chirp([5 40]*ts,Ns);
xr=zeros(1,Ns);
for i=1:Ns
for k=1:N
xr(i)=xr(i)+X(k)*exp(j*2*pi*f(k)*ts*(i-1))/N;
end
end
figure;plot(t,x,'g-');hold on;plot(t,xr,'r--');zoom;
title('Comparacin entre x(t) y su reconstruccin a partir de X[k]');
xlabel('Tiempo (t)');ylabel('x(t)');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej1.txt (2 of 2)31/08/2013 11:17:55 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej2.txt

function [] = fftej2(N,D)
% Ejemplo de una FFT de una seal exponencial sumada a una seal
% tipo chirp con un desplazamiento desde 60 hasta 100 Hz en 1 segundos.
% N es el nmero de puntos de la funcin. Elegir preferiblemente valores
% que sean potencias de 2

ts=D/N;
d=ts/2;
t=0:ts:D-d;
df=100-60;
x=exp(-2*t)+0.2.*chirp([60 60+df*D]*ts,N);
X=fft(x);
%Reordenar Y
M=N/2;
Xaux=X;X(M+1:N)=Xaux(1:M);X(1:M)=Xaux(M+1:N);
Xm=abs(X)*ts;
Xf=unwrap(angle(X))*180/pi;
%Reordenar los ndices k
faux(M+1:N)=0:M-1;faux(1:M)=-M:-1;
f=faux/D;
figure;plot(t,x,'-r');zoom;
xlabel('Tiempo (s)');ylabel('x(t)');
title('x(t)=exp(-2t)+0.2chirp(60-100)');
figure;lines(f,Xm,'oc5','-c5');zoom;
xlabel('Frecuencia (Hz)');ylabel('|X[k]|');
title('Mdulo de los coeficientes espectrales |X[k]|');
figure;lines(f,Xf,'oc3','-c3');
xlabel('Frecuencia (Hz)');ylabel('Fase(X[k]) ()');
title('Fase de los coeficientes espectrales X[k]');
% Reconstruccin de la seal a partir de los X[k]
% Utilizamos un mayor nmero de puntos fs=500 Hz
fs=500;
ts=1/fs;
d=ts/2;
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej2.txt (1 of 2)31/08/2013 11:20:41 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej2.txt

t=0:ts:D-d;
Ns=length(t);
x=exp(-2*t)+0.2.*chirp([60 60+df*D]*ts,Ns);
xr=zeros(1,Ns);
for i=1:Ns
for k=1:N
xr(i)=xr(i)+X(k)*exp(j*2*pi*f(k)*ts*(i-1))/N;
end
end
figure;plot(t,x,'g-');hold on;plot(t,xr,'r--');zoom;
title('Comparacin entre x(t) y su reconstruccin a partir de X[k]');
xlabel('Tiempo (t)');ylabel('x(t)');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej2.txt (2 of 2)31/08/2013 11:20:41 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej3.txt

function [X,f] = fftej3(N,D)


% fftej3(N,D)
% Ejemplo de una FFT de una seal exponencial modulada en amplitud
% con una frecuencia portadora de 200Hz.
% N es el nmero de puntos de muestreo durante D seg. de seal.
% Elegir preferiblemente valores que sean potencias de 2
% Hacer notar que al ser la frecuencia portadora de 200Hz,
% necisitamos una frecuencia de muestreo de por lo menos
% 400Hz, por lo que N/D > 400
ts=D/N;
d=ts/2;
t=0:ts:D-d;
x=exp(-2*t).*sin(2*pi*200*t);
X=fft(x);
%Reordenar X
M=N/2;
Xaux=X;X(M+1:N)=Xaux(1:M);X(1:M)=Xaux(M+1:N);
Xm=abs(X)*ts;
Xf=unwrap(angle(X))*180/pi;
%Reordenar los ndices k
faux(M+1:N)=0:M-1;faux(1:M)=-M:-1;
f=faux/D;
figure;plot(t,x,'-g');zoom;
title('x(t)=exp(-2t)sin(2pi200t)');
xlabel('Tiempo (t)');ylabel('x(t)');
figure;lines(f,Xm,'oc5','-c5');zoom;
title('Mdulo de los coeficientes espectrales de x(t)');
xlabel('Frecuencia (Hz)');ylabel('|X[k]|');
figure;lines(f,Xf,'oc3','-c3');zoom;
title('Fase de los coeficientes espectrales X[k]');
xlabel('Frecuencia (Hz)');ylabel('Fase X[k]');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej3.txt31/08/2013 11:21:19 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej4.txt

function [] = fftej4(N,D)
% fftej4(N,D)
% Ejemplo de una FFT de una seal sinusoidal de 2Hz modulada en
% frecuencia con una frecuencia portadora de 200Hz.
% N es el nmero de puntos de muestreo durante D seg de seal.
% Elegir preferiblemente valores que sean potencias de 2
% Hacer notar que al ser la frecuencia portadora de 200Hz,
% necisitamos una frecuencia de muestreo de por lo menos
% 400Hz, por lo que N/D > 400
ts=D/N;
d=ts/2;
t=0:ts:D-d;
x=sin(2*pi*200*t+5*sin(2*pi*2*t));
X=fft(x);
%Reordenar X
M=N/2;
Xaux=X;X(M+1:N)=Xaux(1:M);
X(1:M)=Xaux(M+1:N);
Xm=abs(X)*ts;
Xf=unwrap(angle(X))*180/pi;
%Reordenar los ndices k
faux(M+1:N)=0:M-1;faux(1:M)=-M:-1;
f=faux/D;

figure;plot(t,x,'-g');zoom;
title('x(t)=sin(2pi200t+10sin(2pi2t)');
xlabel('Tiempo (t)');ylabel('x(t)');
figure;lines(f,Xm,'oc3','-c3');zoom;
title('Mdulo de los coeficientes espectrales de x(t)');
xlabel('Frecuencia (Hz)');ylabel('|X[k]|');
figure;lines(f,Xf,'oc5','-c5');zoom;
title('Fase de los coeficientes espectrales X[k]');
xlabel('Frecuencia (Hz)');ylabel('Fase X[k]');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej4.txt31/08/2013 11:21:41 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej5.txt

function [X,f] = fftej5(N,D)


% fftej5(N,D)
% Ejemplo de una FFT de una seal exponencial modulada en
% frecuecia con una frecuencia portadora de 200Hz.
% N es el nmero de puntos de muestreo durante D s de seal.
% Elegir preferiblemente valores que sean potencias de 2
% Hacer notar que al ser la frecuencia portadora de 200Hz,
% necisitamos una frecuencia de muestreo de por lo menos
% 400Hz, por lo que N/D > 400
ts=D/N;
d=ts/2;
t=0:ts:D-d;
x=sin(2*pi*200*t-5*exp(-2*t));
X=fft(x);
%Reordenar X
M=N/2;
Xaux=X;X(M+1:N)=Xaux(1:M);
X(1:M)=Xaux(M+1:N);
Xm=abs(X)*ts;
Xf=unwrap(angle(X))*180/pi;
%Reordenar los ndices k
faux(M+1:N)=0:M-1;faux(1:M)=-M:-1;
f=faux/D;
figure;plot(t,x,'-g');zoom;
title('x(t)=sin(2pi200t-5exp(-2t))');
xlabel('Tiempo (t)');ylabel('x(t)');
figure;lines(f,Xm,'oc3','-c3');zoom;
title('Mdulo de los coeficientes espectrales de x(t)');
xlabel('Frecuencia (Hz)');ylabel('|X[k]|');
figure;lines(f,Xf,'oc3','-c3');zoom;
title('Fase de los coeficientes espectrales X[k]');
xlabel('Frecuencia (Hz)');ylabel('Fase X[k]');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej5.txt31/08/2013 11:22:16 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej7.txt

function []=fftej7(N,D)
% fftej7(N,d)
% x(t)=exp(-2*t)*sin(2*pi*3*t)
%
ts=D/N;
d=ts/10;
t=0:ts:D-d;
x=exp(-2*t).*sin(2*pi*3*t);
X=fft(x);
% Reordenar
M=N/2;
Xaux=X;X(M+1:N)=Xaux(1:M);X(1:M)=Xaux(M+1:N);
% Separar Modulo y Fase de los coeficientes X(k)
Xm=abs(X)*ts;
Xf=unwrap(angle(X))*180/pi; %En grados
% Transformar Indices k en frecuencias
faux(M+1:N)=0:M-1;faux(1:M)=-M:-1;
f=faux/D;
% Reconstruir los muestreos originales a partir de los X(k)
xr=zeros(1,N);
for i=1:N
for k=1:N
xr(i)=xr(i)+X(k)*exp(j*2*pi*f(k)*ts*(i-1));
end
end
xr=xr/N;

%Plots
figure;lines(t,x,'oc5','-c5');hold on;lines(t,xr,'xc3','-c3');zoom;
title('Puntos de muestreo (o) y Reconstruccin a partir de X[k] (x)');
xlabel('Tiempo (s)');ylabel('x(t)');
figure;lines(f,Xm,'oc5','-c5');zoom;
title('Mdulo de los coeficientes espectrales de x(t)');
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej7.txt (1 of 2)31/08/2013 11:22:49 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej7.txt

xlabel('Frecuencia (Hz)');
ylabel('|X[k]|');
figure;lines(f,Xf,'oc3','-c3');zoom;
title('Fase de los coeficientes espectrales X[k]');
xlabel('Frecuencia (Hz)');
ylabel('Fase X[k]');

%Reconstruccion de la seal original a partir de los X(k)


%Utilizamos un mayor nmero de puntos ts=ts/10
ts=1/64;
d=ts/2;
t=0:ts:2*D-d;
x=exp(-2*t).*sin(2*pi*3*t);
Ns=length(x);
xr=zeros(1,Ns);
for i=1:Ns
for k=1:N
xr(i)=xr(i)+X(k)*exp(j*2*pi*f(k)*ts*(i-1))/N;
end
end
%plots
figure;plot(t,x,'g-');hold on;plot(t,xr,'r--');zoom;
title('Comparacin entre x(t) y su reconstruccin a partir de X[k]');
xlabel('Tiempo (t)');
ylabel('x(t)');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej7.txt (2 of 2)31/08/2013 11:22:49 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej8.txt

function [] = fftej8(N,D)
% fftej8(N,D)
% N es el nmero de puntos de muestreo
% D es el periodo de tiempo sobre el que se muestrea
% Creamos una seal tipo chirp entre 0 y D con una transicin de
% frecuencias desde 20Hz hasta 60Hz
% Figuras : Coeficientes espectrales
%
Fase
%
Reconstruccin

df=60-20;
ts=D/N;
d=ts/2;
t=0:ts:D-d;
% El tamao de t es lgicamente N
% Creamos una seal tipo chirp entre 0 y D con una transicin de
% frecuencias desde 20Hz hasta 60Hz
x1=chirp([20 20+df*D]*D/N,N);
% Seal exponencial
x2=0.5*(1-exp(-0.3.*t));
% Seal senoidal con ;
x3=(1+0.5*t.^2).*sin(2*pi*5*t);
%Seal x(t)
x=x3+x1*0.2;

X=fft(x);
% Reordenar
M=N/2;
Xaux=X;X(M+1:N)=Xaux(1:M);X(1:M)=Xaux(M+1:N);
% Separar Modulo y Fase de los coeficientes X(k)
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej8.txt (1 of 3)31/08/2013 11:23:20 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej8.txt

Xm=abs(X)*ts;
Xf=unwrap(angle(X))*180/pi; %En radianes
% Transformar Indices k en frecuencias
faux(M+1:N)=0:M-1;faux(1:M)=-M:-1;
f=faux/D;
figure;lines(f,Xm,'oc5','-c5');zoom;
title('Mdulo de los coeficientes espectrales de x(t) |X[k]|');
xlabel('Frecuencia (Hz)');
ylabel('|X[k]|');

figure;lines(f,Xf,'oc3','-c3');zoom;
title('Fase de los coeficientes espectrales X[k]');
xlabel('Frecuencia (Hz)');
ylabel('Fase X[k]');

% Reconstruccin de la seal
D=1.5*D;
ts=1/250;
d=ts/2;
t=0:ts:D-d;
Ns =length(t);
x1=chirp([20 20+df*D]*ts,Ns);
x2=0.5*(1-exp(-0.3.*t));
x3=(1+0.5*t.^2).*sin(2*pi*5*t);
x=x3+x1*0.2;
xr=zeros(1,Ns);
for i=1:Ns
for k=1:N
xr(i)=xr(i)+X(k)*exp(j*2*pi*f(k)*ts*(i-1))/N;
end
end
figure;plot(t,x,'g-',t,xr,'r--');zoom;
title('Comparacin entre x(t) y su reconstruccin a partir de X[k]');
xlabel('Tiempo (t)');
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej8.txt (2 of 3)31/08/2013 11:23:20 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej8.txt

ylabel('x(t)');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(6)%20Programas%20Matlab/fftej8.txt (3 of 3)31/08/2013 11:23:20 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Highdig.txt

clear;
% Especificaciones del filtro digital
wp = 3000;Rp = 1;
ws = 2000;Rs = 60;
fm = 4000;
% Predistorsionar las especificaciones
wpx = 2*tan(wp/(2*fm));
wsx = 2*tan(ws/(2*fm));
% Se hace paso paso el filtro analgico
Wp = wsx;
Ws = wpx;
k1 = 10^(0.1*Rp)-1;
k2 = 10^(0.1*Rs)-1;
e2 = 1/k2;
n = ceil((acosh(sqrt(k2/k1)))/(acosh(Ws/Wp)));
[Z,P,K] = cheb2ap(n,Rs);
[Bp,Ap] = zp2tf(Z,P,K);
[Bs,As] = lp2hp(Bp,Ap,Wp);
[B,A] = bilinear(Bs,As,1);
F = [1:1000]/2000;
H = freqz(B,A,F*fm,fm);
H = 20*log10(abs(H));
Gd = grpdelay(B,A,F*fm,fm);
plot(F*fm,H,'b');hold;plot([wp ws]/(2*pi),-[Rp Rs],'*k');grid;zoom;
figure;plot(F*fm,Gd,'r');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Highdig.txt31/08/2013 11:24:43 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Highfilt.txt

clear;
% Especificaciones
wp = 8000;
ws = 5000;
Ap = 1;As = 60;
% Paso a especificaciones de pasobajo
% Tablas 1 y 2
Wp = ws;
Ws = wp;
k1 = 10^(0.1*Ap)-1;
k2 = 10^(0.1*As)-1;
% Filtro de Butterworth
e2b = k1;
nb = ceil((log10(sqrt(k2/k1)))/log10(Ws/Wp));
v3 = (1/k1)^(1/(2*nb));
% Filtro de Chebyshev I
e2c1 = k1;
nc1 = ceil((acosh(sqrt(k2/k1)))/acosh(Ws/Wp));
% Filtro de Chebyshev II
e2c2 = 1/k2;
nc2 = ceil((acosh(sqrt(k2/k1)))/(acosh(Ws/Wp)));
%Filtro elptico
[ne, Wn]=ellipord(Wp, Ws, Ap, As,'s');
% Diseo del prototipo de filtro filtro pasobajo
% Filtro de Butterworth
[Z,P,K] = buttap(nb);
[Bbp,Abp] = zp2tf(Z,P,K);
% Filtro de Chebyshev I
[Z,P,K] = cheb1ap(nc1,Ap);
[Bc1p,Ac1p] = zp2tf(Z,P,K);
% Filtro de Chebyshev II
[Z,P,K] = cheb2ap(nc2,As);
[Bc2p,Ac2p] = zp2tf(Z,P,K);
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Highfilt.txt (1 of 3)31/08/2013 11:25:07 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Highfilt.txt

%Filtro elptico
[Z,P,K] = ellipap(ne,Ap,As);
[Be,Ae] = zp2tf(Z,P,K);
% Convertir a Pasaalta
% Filtro de Butterworth
[Bb,Ab] = lp2hp(Bbp,Abp,Ws/v3);
% Filtro de Chebyshev I
[Bc1,Ac1] = lp2hp(Bc1p,Ac1p,Ws);
% Filtro de Chebyshev II
[Bc2,Ac2] = lp2hp(Bc2p,Ac2p,Wp);
%Filtro elptico
[Be,Ae] = lp2hp(Be,Ae,Ws);
fprintf(1,'Orden del filtro de Butterworth = %d\n',nb);
fprintf(1,'Orden del filtro de Chebyshev I = %d\n',nc1);
fprintf(1,'Orden del filtro de Chebyshev II = %d\n',nc2);
fprintf(1,'Orden del filtro elptico = %d\n',ne);

% Respuestas frecuenciales de los tres filtros obtenidos


W = 1:10:10000;
[Hb]=freqs(Bb,Ab,W);
Hb = 20*log10(abs(Hb));
[Hc1]=freqs(Bc1,Ac1,W);
Hc1 = 20*log10(abs(Hc1));
[Hc2]=freqs(Bc2,Ac2,W);
Hc2 = 20*log10(abs(Hc2));
[He]=freqs(Be,Ae,W);
He = 20*log10(abs(He));

plot(W,Hb,'r',W,Hc1,'g',W,Hc2,'m',W,He,'b');hold;
plot([wp ws],-[Ap As],'*y');grid;zoom;

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Highfilt.txt (2 of 3)31/08/2013 11:25:07 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Highfilt.txt

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Highfilt.txt (3 of 3)31/08/2013 11:25:07 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirafilt.txt

function [B,A,n] = iirafilt(type,fp,fs,Ap,As)


% [B,A] = function iirdfilt(type,fp,fs,Ap,As)
%
% type es el tipo de filtro, 'butter', 'cheby1', 'cheby2'
% fp es la/las frecuencia/s de pasabanda en Hz
% fs es la/las frecuencia/s de parabanda en Hz
% Ap y As son las atenuaciones respectivas en decibelios

if length(fp) ~= length(fs)
disp('Error en dimensiones de fp y/o fs');
return
end
if Ap > As,
disp('Error en los valores de Ap y/o As');
return;
end
% Determinar el tipo de filtro: pasabajo, pasoalto, paabanda o parabanda
if (length(fp) == 1)
if (fp < fs),
tipo = 'lp';
elseif (fp > fs)
tipo = 'hp';
else
disp('Frecuencia de pasabanda = Frecuencia de parabanda');
return;
end
elseif (length(fp) == 2)
aux = [fp fs];
[aux1,i]=sort(aux);
if (i==[3 1 2 4])
tipo = 'bp';
elseif (i==[1 3 4 2])
tipo = 'bs';
else
disp('Error: Compruebe que los valores de fp y fs estn en el orden correcto');
return;
end
end
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirafilt.txt (1 of 5)31/08/2013 11:25:43 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirafilt.txt

wp = 2*pi*fp;
ws = 2*pi*fs;
switch tipo
case 'lp',
switch type
case 'butter',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = log10(sqrt(aux/e2))/log10(ws/wp); n = ceil(n);
wc = (1/e2)^(1/(2*n));
[Z,P,K]=buttap(n);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2lp(Ban,Aan,wc*wp);
case 'cheby1',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = acosh(sqrt(aux/e2))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb1ap(n,Ap);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2lp(Ban,Aan,wp);
case 'cheby2',
e2 = 1/(10^(0.1*As)-1);
aux = 10^(0.1*Ap)-1;
n = acosh(sqrt(1/(aux*e2)))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb2ap(n,As);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2lp(Ban,Aan,ws);
end
case 'hp',
wp = 1/wp;
ws = 1/ws;
switch type
case 'butter',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = log10(sqrt(aux/e2))/log10(ws/wp); n = ceil(n);
wc = (1/e2)^(1/(2*n));
[Z,P,K]=buttap(n);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2hp(Ban,Aan,1/(wc*wp));
case 'cheby1',
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirafilt.txt (2 of 5)31/08/2013 11:25:43 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirafilt.txt

e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = acosh(sqrt(aux/e2))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb1ap(n,Ap);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2hp(Ban,Aan,1/wp);
case 'cheby2',
e2 = 1/(10^(0.1*As)-1);
aux = 10^(0.1*Ap)-1;
n = acosh(sqrt(1/(aux*e2)))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb2ap(n,As);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2hp(Ban,Aan,1/ws);
end
case 'bp' % Hay que pasar a pasobajo las especificaciones
wx2 = wp(1)*wp(2);wx = sqrt(wx2);
if (ws(1)*ws(2) < wx2),
ws(1) = wx2/ws(2);
else
ws(2) = wx2/ws(1);
end
wp = wp(2)-wp(1);
ws = ws(2)-ws(1);
switch type
case 'butter',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = log10(sqrt(aux/e2))/log10(ws/wp); n = ceil(n);
wc = (1/e2)^(1/(2*n));
[Z,P,K]=buttap(n);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bp(Ban,Aan,wx,wp*wc);
case 'cheby1',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = acosh(sqrt(aux/e2))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb1ap(n,Ap);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bp(Ban,Aan,wx,wp);
case 'cheby2',
e2 = 1/(10^(0.1*As)-1);
aux = 10^(0.1*Ap)-1;
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirafilt.txt (3 of 5)31/08/2013 11:25:43 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirafilt.txt

n = acosh(sqrt(1/(aux*e2)))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb2ap(n,As);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bp(Ban,Aan,wx,ws);
end
case 'bs',
wx2 = ws(1)*ws(2);wx = sqrt(wx2);
if (wp(1)*wp(2) < wx2),
wp(1) = wx2/wp(2);
else
wp(2) = wx2/wp(1);
end
wp = 1/(wp(2)-wp(1));
ws = 1/(ws(2)-ws(1));
switch type
case 'butter',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = log10(sqrt(aux/e2))/log10(ws/wp); n = ceil(n);
wc = (1/e2)^(1/(2*n));
[Z,P,K]=buttap(n);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bs(Ban,Aan,wx,1/(wp*wc));
case 'cheby1',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = acosh(sqrt(aux/e2))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb1ap(n,Ap);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bs(Ban,Aan,wx,1/wp);
case 'cheby2',
e2 = 1/(10^(0.1*As)-1);
aux = 10^(0.1*Ap)-1;
n = acosh(sqrt(1/(aux*e2)))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb2ap(n,As);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bs(Ban,Aan,wx,1/ws);
end
end

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirafilt.txt (4 of 5)31/08/2013 11:25:43 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirafilt.txt

[H2,W]=freqs(Ban,Aan,500);
H2db = 20*log10(abs(H2));
figure;
if (length(fp) == 1)
plot(W/(2*pi),H2db,[fp fs],-[Ap As],'*');grid;zoom;
else
plot(W/(2*pi),H2db,[fp fs],-[Ap Ap As As],'*');grid;zoom;
end
A=Aan;
B=Ban;
return;

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirafilt.txt (5 of 5)31/08/2013 11:25:43 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirdfilt.txt

function [Bd,Ad,n] = iirdfilt(type,fp,fs,Ap,As,fm)


% [B,A] = function iirdfilt(type,fp,fs,Ap,As,fm)
%
% type es el tipo de filtro, 'butter', 'cheby1', 'cheby2'
% fp es la/las frecuencia/s de pasabanda en Hz
% fs es la/las frecuencia/s de parabanda en Hz
% Ap y As son las atenuaciones respectivas en decibelios
% fm es la frecuencia de muestreo en Hz
if length(fp) ~= length(fs)
disp('Error en dimensiones de fp y/o fs');
return
end
if Ap > As,
disp('Error en los valores de Ap y/o As');
return;
end
% Determinar el tipo de filtro: pasabajo, pasoalto, paabanda o parabanda
if (length(fp) == 1)
if (fp < fs),
tipo = 'lp';
elseif (fp > fs)
tipo = 'hp';
else
disp('Frecuencia de pasabanda = Frecuencia de parabanda');
return;
end
elseif (length(fp) == 2)
aux = [fp fs];
[aux1,i]=sort(aux);
if (i==[3 1 2 4])
tipo = 'bp';
elseif (i==[1 3 4 2])
tipo = 'bs';
else
disp('Error: Compruebe que los valores de fp y fs estn en el orden correcto');
return;
end
end
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirdfilt.txt (1 of 5)31/08/2013 11:26:06 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirdfilt.txt

% Predistorsin para la Transformacin bilineal


wp = 2*tan(2*pi*fp/(2*fm));
ws = 2*tan(2*pi*fs/(2*fm));
switch tipo
case 'lp',
switch type
case 'butter',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = log10(sqrt(aux/e2))/log10(ws/wp); n = ceil(n);
wc = (1/e2)^(1/(2*n));
[Z,P,K]=buttap(n);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2lp(Ban,Aan,wc*wp);
[Bd,Ad]=bilinear(Ban,Aan,1);
case 'cheby1',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = acosh(sqrt(aux/e2))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb1ap(n,Ap);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2lp(Ban,Aan,wp);
[Bd,Ad]=bilinear(Ban,Aan,1);
case 'cheby2',
e2 = 1/(10^(0.1*As)-1);
aux = 10^(0.1*Ap)-1;
n = acosh(sqrt(1/(aux*e2)))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb2ap(n,As);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2lp(Ban,Aan,ws);
[Bd,Ad]=bilinear(Ban,Aan,1);
end
case 'hp',
wp = 1/wp;
ws = 1/ws;
switch type
case 'butter',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = log10(sqrt(aux/e2))/log10(ws/wp); n = ceil(n);
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirdfilt.txt (2 of 5)31/08/2013 11:26:06 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirdfilt.txt

wc = (1/e2)^(1/(2*n));
[Z,P,K]=buttap(n);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2hp(Ban,Aan,1/(wc*wp));
[Bd,Ad]=bilinear(Ban,Aan,1);
case 'cheby1',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = acosh(sqrt(aux/e2))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb1ap(n,Ap);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2hp(Ban,Aan,1/wp);
[Bd,Ad]=bilinear(Ban,Aan,1);
case 'cheby2',
e2 = 1/(10^(0.1*As)-1);
aux = 10^(0.1*Ap)-1;
n = acosh(sqrt(1/(aux*e2)))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb2ap(n,As);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2hp(Ban,Aan,1/ws);
[Bd,Ad]=bilinear(Ban,Aan,1);
end
case 'bp' % Hay que pasar a pasobajo las especificaciones
wx2 = wp(1)*wp(2);wx = sqrt(wx2);
if (ws(1)*ws(2) < wx2),
ws(1) = wx2/ws(2);
else
ws(2) = wx2/ws(1);
end
wp = wp(2)-wp(1);
ws = ws(2)-ws(1);
switch type
case 'butter',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = log10(sqrt(aux/e2))/log10(ws/wp); n = ceil(n);
wc = (1/e2)^(1/(2*n));
[Z,P,K]=buttap(n);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bp(Ban,Aan,wx,wp*wc);
[Bd,Ad]=bilinear(Ban,Aan,1);
case 'cheby1',
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirdfilt.txt (3 of 5)31/08/2013 11:26:06 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirdfilt.txt

e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = acosh(sqrt(aux/e2))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb1ap(n,Ap);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bp(Ban,Aan,wx,wp);
[Bd,Ad]=bilinear(Ban,Aan,1);
case 'cheby2',
e2 = 1/(10^(0.1*As)-1);
aux = 10^(0.1*Ap)-1;
n = acosh(sqrt(1/(aux*e2)))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb2ap(n,As);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bp(Ban,Aan,wx,ws);
[Bd,Ad]=bilinear(Ban,Aan,1);
end
case 'bs',
wx2 = ws(1)*ws(2);wx = sqrt(wx2);
if (wp(1)*wp(2) < wx2),
wp(1) = wx2/wp(2);
else
wp(2) = wx2/wp(1);
end
wp = 1/(wp(2)-wp(1));
ws = 1/(ws(2)-ws(1));
switch type
case 'butter',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = log10(sqrt(aux/e2))/log10(ws/wp); n = ceil(n);
wc = (1/e2)^(1/(2*n));
[Z,P,K]=buttap(n);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bs(Ban,Aan,wx,1/(wp*wc));
[Bd,Ad]=bilinear(Ban,Aan,1);
case 'cheby1',
e2 = 10^(0.1*Ap)-1;
aux = 10^(0.1*As)-1;
n = acosh(sqrt(aux/e2))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb1ap(n,Ap);
[Ban,Aan]=zp2tf(Z,P,K);
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirdfilt.txt (4 of 5)31/08/2013 11:26:06 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirdfilt.txt

[Ban,Aan] = lp2bs(Ban,Aan,wx,1/wp);
[Bd,Ad]=bilinear(Ban,Aan,1);
case 'cheby2',
e2 = 1/(10^(0.1*As)-1);
aux = 10^(0.1*Ap)-1;
n = acosh(sqrt(1/(aux*e2)))/acosh(ws/wp); n = ceil(n);
[Z,P,K]=cheb2ap(n,As);
[Ban,Aan]=zp2tf(Z,P,K);
[Ban,Aan] = lp2bs(Ban,Aan,wx,1/ws);
[Bd,Ad]=bilinear(Ban,Aan,1);
end
end

[H2,F]=freqz(Bd,Ad,500,fm);
H2db = 20*log10(abs(H2));

if (length(fp) == 1)
figure;plot(F,H2db,[fp fs],-[Ap As],'*');grid;zoom;
else
figure;plot(F,H2db,[fp fs],-[Ap Ap As As],'*');grid;zoom;
end

return;

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/iirdfilt.txt (5 of 5)31/08/2013 11:26:06 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/invar_lp.txt

clear;
% Especificaciones del filtro digital
wp = 4000;Rp = 2;
ws = 7000;Rs = 40;
fm = 22000;
%Transformacin bilineal
% Predistorsionar las especificaciones
wpx = 2*tan(wp/(2*fm));
wsx = 2*tan(ws/(2*fm));
% Hacemos paso paso el filtro analgico
Wp = wpx;
Ws = wsx;
k1 = 10^(0.1*Rp)-1;
k2 = 10^(0.1*Rs)-1;
e2 = 1/k2;
n = ceil((acosh(sqrt(k2/k1)))/(acosh(Ws/Wp)));
[Z,P,K] = cheb2ap(n,Rs);
[Bp,Ap] = zp2tf(Z,P,K);
[Bs,As] = lp2lp(Bp,Ap,Ws);

%Transformacin bilineal
[B,A] = bilinear(Bs,As,1);
[H F]= freqz(B,A,1000,1);
H = 20*log10(abs(H));
plot(F*fm,H,'r');hold on;plot([wp ws]/(2*pi),-[Rp Rs],'*k');grid;zoom;
title('Transformacin bilineal');
%Retardo de grupo
F = [1:1000]/3000;
Gd = grpdelay(B,A,F*fm,fm);
figure;plot(F*fm,Gd,'b');zoom;
title('retardo de grupo');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Transformacin invariante a impulso
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/invar_lp.txt (1 of 2)31/08/2013 11:27:11 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/invar_lp.txt

Wp = wp;
Ws = ws;
k1 = 10^(0.1*Rp)-1;
k2 = 10^(0.1*Rs)-1;
e2 = 1/k2;
n = ceil((acosh(sqrt(k2/k1)))/(acosh(Ws/Wp)));
[Z,P,K] = cheb2ap(n,Rs);
[Bp,Ap] = zp2tf(Z,P,K);
[Bs,As] = lp2lp(Bp,Ap,Ws);
%Transformacin invariante a impulso
[Bz,Az]=impinvar(Bs,As, fm);
%Hay que normalizar para que H(0)=1
k=sum(real(Az))/sum(real(Bz));
Bz=k*Bz;
[Hz Fz]=freqz(Bz,Az,1000,fm);
Hz = 20*log10(abs(Hz));
figure;plot(Fz,Hz,'r');hold;plot([wp ws]/(2*pi),-[Rp Rs],'*k');grid;zoom;
title('Transformacin invariante a impulso');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/invar_lp.txt (2 of 2)31/08/2013 11:27:11 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/lowdig.txt

clear;
% Especificaciones del filtro digital
wp = 4000;Rp = 2;
ws = 7000;Rs = 40;
fm = 22000;
%Transformacin bilineal
% Predistorsionar las especificaciones
wpx = 2*tan(wp/(2*fm));
wsx = 2*tan(ws/(2*fm));
% Hacemos paso paso el filtro analgico
Wp = wpx;
Ws = wsx;
k1 = 10^(0.1*Rp)-1;
k2 = 10^(0.1*Rs)-1;
e2 = 1/k2;
n = ceil((acosh(sqrt(k2/k1)))/(acosh(Ws/Wp)));
[Z,P,K] = cheb2ap(n,Rs);
[Bp,Ap] = zp2tf(Z,P,K);
[Bs,As] = lp2lp(Bp,Ap,Ws);

%Transformacin bilineal
[B,A] = bilinear(Bs,As,1);
[H F]= freqz(B,A,1000,1);
H = 20*log10(abs(H));
plot(F*fm,H,'r');hold on;plot([wp ws]/(2*pi),-[Rp Rs],'*k');grid;zoom;
title('Transformacin bilineal');
%Retardo de grupo
F = [1:1000]/3000;
Gd = grpdelay(B,A,F*fm,fm);
figure;plot(F*fm,Gd,'b');zoom;
title('retardo de grupo');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/lowdig.txt (1 of 2)31/08/2013 11:27:39 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/lowdig.txt

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/lowdig.txt (2 of 2)31/08/2013 11:27:39 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Lowfilt.txt

clear;
% Especificaciones
wp = 5000;
ws = 8000;
Ap = 1;As = 60;
% Paso a especificaciones de pasobajo
% Tablas 1 y 2
Wp = wp;
Ws = ws;
k1 = 10^(0.1*Ap)-1;
k2 = 10^(0.1*As)-1;
% Filtro de Butterworth
e2b = k1;
nb = ceil((log10(sqrt(k2/k1)))/log10(Ws/Wp));
v3 = (1/k1)^(1/(2*nb));
% Filtro de Chebyshev I
e2c1 = k1;
nc1 = ceil((acosh(sqrt(k2/k1)))/acosh(Ws/Wp));
% Filtro de Chebyshev II
e2c2 = 1/k2;
nc2 = ceil((acosh(sqrt(k2/k1)))/(acosh(Ws/Wp)));
%Filtro elptico
[ne, Wn]=ellipord(wp, ws, Ap, As,'s');

% Diseo del prototipo de filtro filtro pasobajo


% Filtro de Butterworth
[Z,P,K] = buttap(nb);
[Bbp,Abp] = zp2tf(Z,P,K);
% Filtro de Chebyshev I
[Z,P,K] = cheb1ap(nc1,Ap);
[Bc1p,Ac1p] = zp2tf(Z,P,K);
% Filtro de Chebyshev II
[Z,P,K] = cheb2ap(nc2,As);
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Lowfilt.txt (1 of 3)31/08/2013 11:28:27 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Lowfilt.txt

[Bc2p,Ac2p] = zp2tf(Z,P,K);
%Filtro elptico
[Z,P,K] = ellipap(ne,Ap,As);
[Be,Ae] = zp2tf(Z,P,K);
% Convertir a Pasabajo
% Filtro de Butterworth
[Bb,Ab] = lp2lp(Bbp,Abp,Wp*v3);
% Filtro de Chebyshev I
[Bc1,Ac1] = lp2lp(Bc1p,Ac1p,Wp);
% Filtro de Chebyshev II
[Bc2,Ac2] = lp2lp(Bc2p,Ac2p,Ws);
%Filtro elptico
[Be,Ae] = lp2lp(Be,Ae,Wp);

fprintf(1,'Orden del filtro de Butterworth = %d\n',nb);


fprintf(1,'Orden del filtro de Chebyshev I = %d\n',nc1);
fprintf(1,'Orden del filtro de Chebyshev II = %d\n',nc2);
fprintf(1,'Orden del filtro elptico = %d\n',ne);

% Respuestas frecuenciales de los tres filtros obtenidos


W = 1:10:10000;
[Hb]=freqs(Bb,Ab,W);
Hb = 20*log10(abs(Hb));
[Hc1]=freqs(Bc1,Ac1,W);
Hc1 = 20*log10(abs(Hc1));
[Hc2]=freqs(Bc2,Ac2,W);
Hc2 = 20*log10(abs(Hc2));
[He]=freqs(Be,Ae,W);
He = 20*log10(abs(He));

plot(W,Hb,'r',W,Hc1,'g',W,Hc2,'m',W,He,'b');hold;
plot([wp ws],-[Ap As],'*y');grid;zoom;

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Lowfilt.txt (2 of 3)31/08/2013 11:28:27 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Lowfilt.txt

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Lowfilt.txt (3 of 3)31/08/2013 11:28:27 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Paradig.txt

clear all;
close all;
% Especificaciones del filtro digital
wp = [1000 3000];Rp = 3;
ws = [2000 2500];Rs = 40;
fm = 10000;
% Predistorsionar las especificaciones
wpx = 2*tan(wp/(2*fm));
wsx = 2*tan(ws/(2*fm));
% Paso a especificaciones de pasobajo
% Tablas 1 y 2
Bw1 = wsx(2)-wsx(1);
% Fijamos las frecuencias de parabanda
wx2 = wsx(1)*wsx(2);wx=sqrt(wx2);
if wpx(1)*wpx(2) < wx2,
wpx(1) = wx2/wpx(2);
else
wpx(2) = wx2/wpx(1);
end
Bw2 = wpx(2)-wpx(1);
% Criterio de MATLAB
% Bw1 = 1;
% Bw2 = (wsx*(wpx(2)-wpx(1)))./(wsx.^2-wx2);
% Bw2 = min(abs(Bw2));

% Especificiones de pasobajo
Wp = Bw1;
Ws = Bw2;
k1 = 10^(0.1*Rp)-1;
k2 = 10^(0.1*Rs)-1;
% Filtro de Cheby1
e2 = k1;
n = ceil((acosh(sqrt(k2/k1)))/acosh(Ws/Wp));
v3 = (1/k1)^(1/(2*n));

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Paradig.txt (1 of 2)31/08/2013 11:30:04 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Paradig.txt

[Z,P,K] = cheb1ap(n,Rp);
[Bp,Ap] = zp2tf(Z,P,K);
[Bs,As] = lp2bs(Bp,Ap,wx,Ws);
[B,A] = bilinear(Bs,As,1);
F = [0:499];F= F*2*wp(2)/(2*pi*500);
H = freqz(B,A,F,fm);
H = 20*log10(abs(H));
figure;plot(F,H,'r',[wp ws]/(2*pi),-[Rp Rp Rs Rs],'*k');grid;zoom;
% Hacer el mismo filtro pero utilizando funciones de Matlab

[N,Wn] = cheb1ord(2*wp/(2*pi*fm),2*ws/(2*pi*fm),Rp,Rs);
[B,A] = cheby1(N,Rp,Wn,'stop');
H = freqz(B,A,F,fm);
Hdb = 20*log10(abs(H));
hold;
plot(F,Hdb,'b',[wp ws]/(2*pi),-[Rp Rp Rs Rs],'*k');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Paradig.txt (2 of 2)31/08/2013 11:30:04 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Parafilt.txt

clear;
% Especificaciones
wp = [1000 8000];
ws = [1500 5000];
Ap = 1;As = 60;
% Paso a especificaciones de pasobajo
% Tablas 1 y 2
Bw1 = wp(2)-wp(1);
% Fijamos las frecuencias de pasabanda
wx2 = wp(1)*wp(2);wx=sqrt(wx2);
if ws(1)*ws(2) < wx2,
ws(2) = wx2/ws(1);
else
ws(1) = wx2/ws(2);
end
Bw2 = ws(2)-ws(1);
% Especificiones de pasobajo
Wp = Bw2;
Ws = Bw1;
k1 = 10^(0.1*Ap)-1;
k2 = 10^(0.1*As)-1;
% Filtro de Butterworth
e2b = k1;
nb = ceil((log10(sqrt(k2/k1)))/log10(Ws/Wp));
v3 = (1/k1)^(1/(2*nb));
% Filtro de Chebyshev I
e2c1 = k1;
nc1 = ceil((acosh(sqrt(k2/k1)))/acosh(Ws/Wp));
% Filtro de Chebyshev II
e2c2 = 1/k2;
nc2 = ceil((acosh(sqrt(k2/k1)))/(acosh(Ws/Wp)));
%Filtro elptico
[ne, Wn]=ellipord(wp, ws, Ap, As,'s');
% Diseo del prototipo de filtro filtro pasobajo
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Parafilt.txt (1 of 3)31/08/2013 11:31:04 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Parafilt.txt

% Filtro de Butterworth
[Z,P,K] = buttap(nb);
[Bbp,Abp] = zp2tf(Z,P,K);
% Filtro de Chebyshev I
[Z,P,K] = cheb1ap(nc1,Ap);
[Bc1p,Ac1p] = zp2tf(Z,P,K);
% Filtro de Chebyshev I
[Z,P,K] = cheb2ap(nc2,As);
[Bc2p,Ac2p] = zp2tf(Z,P,K);
% Filtro elptico
[Z,P,K] = ellipap(ne,Ap,As);
[Be,Ae] = zp2tf(Z,P,K);

% Convertir a Parabanda
% Filtro de Butterworth
[Bb,Ab] = lp2bs(Bbp,Abp,wx,Bw1/v3);
% Filtro de Chebyshev I
[Bc1,Ac1] = lp2bs(Bc1p,Ac1p,wx,Bw1);
% Filtro de Chebyshev II
[Bc2,Ac2] = lp2bs(Bc2p,Ac2p,wx,Bw2);
%Filtro elptico
[Be,Ae] = lp2bs(Be,Ae,wx,Bw1);

fprintf(1,'Orden del filtro de Butterworth = %d\n',nb);


fprintf(1,'Orden del filtro de Chebyshev I = %d\n',nc1);
fprintf(1,'Orden del filtro de Chebyshev II = %d\n',nc2);
fprintf(1,'Orden del filtro elptico = %d\n',ne);

% Respuestas frecuenciales de los tres filtros obtenidos


W = 1:10:10000;
[Hb]=freqs(Bb,Ab,W);
Hb = 20*log10(abs(Hb));
[Hc1]=freqs(Bc1,Ac1,W);
Hc1 = 20*log10(abs(Hc1));
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Parafilt.txt (2 of 3)31/08/2013 11:31:04 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Parafilt.txt

[Hc2]=freqs(Bc2,Ac2,W);
Hc2 = 20*log10(abs(Hc2));
[He]=freqs(Be,Ae,W);
He = 20*log10(abs(He));

plot(W,Hb,'r',W,Hc1,'g',W,Hc2,'m',W,He,'b');hold;
plot([wp ws],-[Ap Ap As As],'*y');grid;zoom;

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Parafilt.txt (3 of 3)31/08/2013 11:31:04 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Pasadig.txt

clear;
close all;
% Especificaciones del filtro digital
wp = [3000 5000];Rp = 1;
ws = [2000 7500];Rs = 60;
fm = 5000;
% Predistorsionar las especificaciones
wpx = 2*tan(wp/(2*fm));
wsx = 2*tan(ws/(2*fm));
% Paso a especificaciones de pasobajo
% Tablas 1 y 2
Bw1 = wpx(2)-wpx(1);
% Fijamos las frecuencias de pasabanda
wx2 = wpx(1)*wpx(2);wx=sqrt(wx2);
if wsx(1)*wsx(2) < wx2,
wsx(2) = wx2/wsx(1);
else
wsx(1) = wx2/wsx(2);
end
Bw2 = wsx(2)-wsx(1);
% Criterio de MATLAB
% Bw1 = 1;
% Bw2 = (wsx.^2-wx2)/(wsx*(wpx(2)-wpx(1)));
% Bw2 = min(abs(Bw2));

% Especificiones de pasobajo
Wp = Bw1;
Ws = Bw2;
k1 = 10^(0.1*Rp)-1;
k2 = 10^(0.1*Rs)-1;
% Filtro de Butterworth
e2 = k1;
n = ceil((log10(sqrt(k2/k1)))/log10(Ws/Wp));
v3 = (1/k1)^(1/(2*n));

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Pasadig.txt (1 of 2)31/08/2013 11:31:38 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Pasadig.txt

[Z,P,K] = buttap(n);
[Bp,Ap] = zp2tf(Z,P,K);
[Bs,As] = lp2bp(Bp,Ap,wx,Wp*v3);
[B,A] = bilinear(Bs,As,1);
F = [1:1000]/2000;
H = freqz(B,A,F*fm,fm);
H = 20*log10(abs(H));
Gd = grpdelay(B,A,F*fm,fm);
plot(F*fm,H,'r');hold;plot([wp ws]/(2*pi),-[Rp Rp Rs Rs],'*k');grid;zoom;
figure;plot(F*fm,Gd);zoom;grid;
% Hacer el mismo filtro pero utilizando funciones de Matlab
% wpx = 2*tan(wp/(2*fm));
% wsx = 2*tan(ws/(2*fm));
% [N,Wn] = buttord(wpx,wsx,Rp,Rs,'s');
% [Bs,As] = butter(N,Wn,'s');
% [B,A] = bilinear(Bs,As,1);
% H = freqz(B,A,F*fm,fm);
% H = 20*log10(abs(H));
% plot(F*fm,H,'b');hold off;

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Pasadig.txt (2 of 2)31/08/2013 11:31:38 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Pasafilt.txt

clear;
% Especificaciones
ws = [1000 8000];
wp = [1500 5000];
Ap = 1;As = 60;
% Paso a especificaciones de pasobajo
% Tablas 1 y 2
Bw1 = wp(2)-wp(1);
% Fijamos las frecuencias de pasabanda
wx2 = wp(1)*wp(2);wx=sqrt(wx2);
if ws(1)*ws(2) < wx2,
ws(2) = wx2/ws(1);
else
ws(1) = wx2/ws(2);
end
Bw2 = ws(2)-ws(1);
% Especificiones de pasobajo
Wp = Bw1;
Ws = Bw2;
k1 = 10^(0.1*Ap)-1;
k2 = 10^(0.1*As)-1;
% Filtro de Butterworth
e2b = k1;
nb = ceil((log10(sqrt(k2/k1)))/log10(Ws/Wp));
v3 = (1/k1)^(1/(2*nb));
% Filtro de Chebyshev I
e2c1 = k1;
nc1 = ceil((acosh(sqrt(k2/k1)))/acosh(Ws/Wp));
% Filtro de Chebyshev II
e2c2 = 1/k2;
nc2 = ceil((acosh(sqrt(k2/k1)))/(acosh(Ws/Wp)));
% Filtro elptico
[ne, Wn]=ellipord(Wp, Ws, Ap, As,'s');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Pasafilt.txt (1 of 3)31/08/2013 11:32:03 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Pasafilt.txt

% Diseo del prototipo de filtro filtro pasobajo


% Filtro de Butterworth
[Z,P,K] = buttap(nb);
[Bbp,Abp] = zp2tf(Z,P,K);
% Filtro de Chebyshev I
[Z,P,K] = cheb1ap(nc1,Ap);
[Bc1p,Ac1p] = zp2tf(Z,P,K);
% Filtro de Chebyshev I
[Z,P,K] = cheb2ap(nc2,As);
[Bc2p,Ac2p] = zp2tf(Z,P,K);
%Filtro elptico
[Z,P,K] = ellipap(ne,Ap,As);
[Be,Ae] = zp2tf(Z,P,K);

% Convertir a Pasabanda
% Filtro de Butterworth
[Bb,Ab] = lp2bp(Bbp,Abp,wx,Bw1*v3);
% Filtro de Chebyshev I
[Bc1,Ac1] = lp2bp(Bc1p,Ac1p,wx,Bw1);
% Filtro de Chebyshev II
[Bc2,Ac2] = lp2bp(Bc2p,Ac2p,wx,Bw2);
%Filtro elptico
[Be,Ae] = lp2bp(Be,Ae,wx,Bw1);
fprintf(1,'Orden del filtro de Butterworth = %d\n',nb);
fprintf(1,'Orden del filtro de Chebyshev I = %d\n',nc1);
fprintf(1,'Orden del filtro de Chebyshev II = %d\n',nc2);
fprintf(1,'Orden del filtro elptico = %d\n',ne);

% Respuestas frecuenciales de los tres filtros obtenidos


W = 1:10:10000;
[Hb]=freqs(Bb,Ab,W);
Hb = 20*log10(abs(Hb));
[Hc1]=freqs(Bc1,Ac1,W);
Hc1 = 20*log10(abs(Hc1));
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Pasafilt.txt (2 of 3)31/08/2013 11:32:03 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Pasafilt.txt

[Hc2]=freqs(Bc2,Ac2,W);
Hc2 = 20*log10(abs(Hc2));
[He]=freqs(Be,Ae,W);
He = 20*log10(abs(He));

plot(W,Hb,'r',W,Hc1,'g',W,Hc2,'m',W,He,'b');hold;
plot([wp ws],-[Ap Ap As As],'*y');grid;zoom;

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(8)%20Programas%20Matlab/Pasafilt.txt (3 of 3)31/08/2013 11:32:03 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Firfs1.txt

function [B,Ap,As]=firfs1(N,fp,fs,fm,type,wtype)

% Determinar los coeficientes de la ventana


odd=rem(N+1,2);
wnd=wtype(1:4);
ft=type(1:2);
if (ft=='bs' | ft=='hp') & odd==0,
disp('Para los filtros parabanda y pasaalta el orden del filtro debe ser par');
return
end
if wnd=='boxc',
w=boxcar(N+1)';
elseif wnd=='hamm',
w=hamming(N+1)';
elseif wnd=='hann',
w=hanning(N+1)';
elseif wnd=='blac',
w=blackman(N+1)';
else,
disp('Error. Ventana desconocida');return
end
% Transformar las frecuencias a frecuencias digitales
% de pasobajo

FFp=fp/fm;FFs=fs/fm;
if ft=='lp',
Fp=FFp;Fs=FFs;tipo=1;
% Filtro Pasobajo
elseif ft=='bp'
% Filtro Pasabanda
% Hay que hacer que la pasabanda y la parabanda tenga la misma frecuencia central
F0=(FFp(1)+FFp(2))/2;
% Habr que modificar alguno de las especificaciones para obtener una misma frecuencia
% con la menor banda de transicin
[minimum,idx]=min([FFp(1)-FFs(1) FFs(2)-FFp(2)]);
if idx==1,
FFs(2)=FFp(2)+minimum;
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Firfs1.txt (1 of 3)31/08/2013 11:33:15 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Firfs1.txt

else
FFs(1)=FFp(1)-minimum;
end
Fp=(FFp(2)-FFp(1))/2;Fs=(FFs(2)-FFs(1))/2;
elseif ft=='hp'
% Filtro Pasoalto
Fp=FFs;Fs=FFp;
elseif ft=='bs'
% Filtro Parabanda
% Lo mismo que en el caso de pasabanda
F0=(FFs(2)+FFs(1))/2;
[minimum,idx]=min([FFs(1)-FFp(1) FFp(2)-FFs(2)]);
if idx==1,
FFp(2)=FFs(2)+minimum;
else
FFp(1)=FFs(1)-minimum;
end
Fp=(FFs(2)-FFs(1))/2;Fs=(FFp(2)-FFp(1))/2;
else
disp('Error. Tipo de filtro desconocido');return
end
% Clculo de coeficientes del filtro pasobajo ideal
% Tomamos una frecuencia de corte
% Fc=Fp+0.2(Fs-Fp)=0.8Fp+0.2Fs
Fc=0.8*Fp+0.2*Fs;
n=[-(N/2):N/2];
hLP=2*Fc*sinc(2*n*Fc);
% Pasar al filtro requerido con la ventana espectral especificada
unos=ones(1,N+1);
if ft=='lp', % Pasobajo
B=hLP.*w;
elseif ft=='bp', % Pasabanda
B=2*cos(2*pi*n*F0).*hLP.*w;
elseif ft=='hp', % Pasoalto
delta=zeros(1,N+1);delta((N+2)/2)=1;
B=(delta-hLP).*w;
elseif ft=='bs', % Parabanda
delta=zeros(1,N+1);delta((N+2)/2)=1;
B=(delta-2*cos(2*pi*n*F0).*hLP).*w;
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Firfs1.txt (2 of 3)31/08/2013 11:33:15 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Firfs1.txt

end
[H,F]=freqz(B,1,500,fm);
Hdb=20*log10(abs(H));
plot(F,Hdb);grid;zoom;hold on;
A=freqz(B,1,[fp fs],fm);
A=-20*log10(abs(A));
if (ft=='lp' | ft=='hp'),
Ap=A(1);As=A(2);
plot([fp fs],-[Ap As],'r*');
else
Ap=A(1:2);As=A(3:4);
plot([fp fs],-[Ap As],'r*');
end
hold off;
return

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Firfs1.txt (3 of 3)31/08/2013 11:33:15 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Firmf.txt

function [B, h, H]=firmf(N,F,M,wtype)


% function [B]=firmf(N,F,M,wtype)
% N es el tamao del filtro
% F es un vector de frecuencias 0<=F<=0.5 dadas en orden creciente
% El primer valor de F debe ser 0 y el ultimo 0.5
% M es un vector de magnitudes a las frecuencias especificadas por F
% wtype es el tipo de ventana espectral: boxcar, hamming, hanning o blackman
type=wtype(1:4);
odd=rem(N,2);
Nn=512;

NF = length(F);
LF = Nn/2;
Fi=[0:LF];
df=1/Nn;
Fi=Fi*df;
DF=diff(F);
% Interpolar el vector M (N puntos) a 512 puntos
Ff=0;f=0;k=1;
for i=1:NF-1,
while f<=Ff+DF(i),
Mi(k)=M(i)+(f-F(i))*(M(i+1)-M(i))/(F(i+1)-F(i));
f=f+df;
k=k+1;
end
i=i+1;
Ff=F(i);
end
H=Mi.*exp(-sqrt(-1)*2*pi*Fi*(Nn-1)/2);
H = [H conj(H(LF:-1:2))];
h=real(ifft(H));
% Aplicar la ventana escogida
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Firmf.txt (1 of 2)31/08/2013 11:33:55 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Firmf.txt

if type=='boxc',
w=boxcar(N)';
elseif type=='hamm',
w=hamming(N)';
elseif type=='hann',
w=hanning(N)';
elseif type=='blac',
w=blackman(N)';
else
disp(['El tipo de ventana especificado no existe']);
return
end
B = h(LF-N/2+1:LF+N/2).*w;
% Si N es impar, el punto medio de la serie de 512 puntos est en el ndice 257
% Si N es par, los puntos medio estn en los ndices 257 y 258

[Ht,Wt]=freqz(B,1,512);
Htdb=20*log10(abs(Ht));
plot(Wt/(2*pi),abs(Ht), F, M, 'or');zoom;grid;
return

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Firmf.txt (2 of 2)31/08/2013 11:33:55 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfbp.txt

%Filtro pasabanda utilizando el mtodo de las series de Fourier


%Especificaciones
fp=[2000 3000];
fs=[500 5000];
fm=12000;
Ap=1;
As=45;
%Se calculan las frecuencias digitales
ffp=fp/fm;
ffs=fs/fm;
%Se modifican las especificaciones para obtener una misma frecuencia
%con la menor banda de transicin
[minimum, idx]=min([ffp(1)-ffs(1) ffs(2)-ffp(2)]);
if idx==1
ffs(2)=ffp(2)+minimum;
else
ffs(1)=ffp(1)-minimum;
end
%Por la tabla 2
Fp=(ffp(2)-ffp(1))/2;
Fs=(ffs(2)-ffs(1))/2;
Fo=(ffp(2)+ffp(1))/2;
%Clculo del orden del filtro
Ws=1.91;

%Se obtiene de la tabla 3 de los apuntes


%En este caso vamos a utilizar la ventana de Hamming

N=ceil(Ws/(Fs-Fp));
%Frecuencia de corte
Fc=1.1*Fp;
%Filtro pasobajo
n=[-(N-1)/2:(N-1)/2];
hLP=2*Fc*sinc(2*n*Fc);
%Se aplica la ventana de Hamming
hLP=hLP.*hamming(N)';

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfbp.txt (1 of 2)31/08/2013 11:34:24 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfbp.txt

%Filtro pasabanda
hBP=2*cos(2*pi*n*Fo).*hLP;
[H,F]=freqz(hBP,1,1000,fm);
plot(F,20*log10(abs(H)));hold on;
plot([fp fs],[-[Ap Ap] -[As As]],'*r');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfbp.txt (2 of 2)31/08/2013 11:34:24 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfhp.txt

%Mtodo de las series de Fourier


%Filtro pasoalto%Especificaciones
fp=5000;
fs=4000;
fm=14000;
Ap=1;
As=45;
%Se calculan las frecuencias digitales
FpHP=fp/fm;
FsHP=fs/fm;
%Se calcula las especificaciones del filtro pasabajo
Fp=FsHP;
Fs=FpHP;
%Clculo del orden del filtro
Ws=1.91;
N=ceil(Ws/(Fs-Fp));

%Se obtiene de la tabla 3 de los apuntes


%En este caso vamos a utilizar la ventana de Hamming
%N es el nmero de puntos (el orden es N-1)

%Frecuencia de corte
Fc=1.1*Fp;
%Filtro pasobajo
n=[-(N-1)/2:(N-1)/2];
hLP=2*Fc*sinc(2*n*Fc);
%Se aplica la ventana de Hamming
hLP=hLP.*hamming(N)';
%Se calcula el filtro pasaalto
delta=zeros(1,N);
delta((N)/2)=1;
hHP=delta-hLP;
%Calculamos el filtro pasoalto
[H,F]=freqz(hHP,1,1000,fm);
plot(F,20*log10(abs(H)));hold on;
plot([fs fp],[-As -Ap],'*r');
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfhp.txt (1 of 2)31/08/2013 11:34:54 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfhp.txt

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfhp.txt (2 of 2)31/08/2013 11:34:54 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsflp.txt

%Mtodo de las series de Fourier


%Filtro pasobajo
%Especificaciones
fp=1500;
fs=3000;
fm=8000;
Ap=1;
As=45;
%Se calculan las frecuencias digitales
Fp=fp/fm;
Fs=fs/fm;
%Clculo del orden del filtro
Ws=1.91;

%Se obtiene de la tabla 3 de los apuntes


%En este caso vamos a utilizar la ventana de Hamming

N=ceil(Ws/(Fs-Fp));
%Frecuencia de corte
Fc=1.1*Fp;
%Filtro pasobajo
n=[-(N-1)/2:(N-1)/2];
hLP=2*Fc*sinc(2*n*Fc);
%Se aplica la ventana de Hamming
h=hLP.*hamming(N)';
[H,F]=freqz(h,1,1000,fm);
plot(F,20*log10(abs(H)));hold on;
plot([fp fs],[-Ap -As],'*r');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsflp.txt31/08/2013 11:35:22 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfsb.txt

%Especificaciones
fs=[2000 4000];
fp=[500 5000];
fm=12000;
Ap=1;
As=30;
%Se calculan las frecuencias digitales
ffp=fp/fm;
ffs=fs/fm;
%Se modifican las especificaciones para obtener una misma frecuencia
%con la menor banda de transicin
[minimum, idx]=min([ffs(1)-ffp(1) ffp(2)-ffs(2)]);
if idx==1
ffp(2)=ffs(2)+minimum;
else
ffp(1)=ffs(1)-minimum;
end
%Por la tabla 2
Fp=(ffs(2)-ffs(1))/2;
Fs=(ffp(2)-ffp(1))/2;
Fo=(ffs(2)+ffs(1))/2;
%Clculo del orden del filtro
Ws=1.91;

%Se obtiene de la tabla 3 de los apuntes


%En este caso vamos a utilizar la ventana de Hamming

N=ceil(Ws/(Fs-Fp));
%Frecuencia de corte
Fc=1.5*Fp;
%Filtro pasobajo
n=[-(N-1)/2:(N-1)/2];
hLP=2*Fc*sinc(2*n*Fc);
%Se aplica la ventana de Hamming
hLP=hLP.*hamming(N)';
%Filtro parabanda
file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfsb.txt (1 of 2)31/08/2013 11:35:51 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfsb.txt

hBP=2*cos(2*pi*n*Fo).*hLP;
delta=zeros(1,N);
delta((N+1)/2)=1;
hSB=delta-hBP;
[H,F]=freqz(hSB,1,1000,fm);
plot(F,20*log10(abs(H)));hold on;
plot([fp fs],[-[Ap Ap] -[As As]],'*r');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/firsfsb.txt (2 of 2)31/08/2013 11:35:51 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Mf16.txt

clear;
j = sqrt(-1);
H=zeros(1,16);
H(1) = 1;
H(2) = exp(-j*pi*15/16);
H(3) = 0.7*exp(-j*pi*30/16);
% H(4) = exp(-j*pi*45/16);
% H(5) = exp(-j*pi*60/16);
% H(13) = conj(H(5));
% H(14) = conj(H(4));
H(15) = conj(H(3));
H(16) = conj(H(2));
h = real(ifft(H));
[Hf,Wf] = freqz(h,1,512);
Ff = Wf/(2*pi);
F=[0:8]/16;
plot(Ff,abs(Hf),F,abs(H(1:9)),'o');zoom;grid;
hold;
h = h.*hamming(16)';
Hf1 = freqz(h,1,512);
plot(Ff,abs(Hf1),'r');
% Usando la funcion fir2
B = fir2(15,[0 1 2 3 4 5 6 7 8]*2/16,[1 1 0.7 0 0 0 0 0 0],boxcar(16));
Hf2 = freqz(B,1,512);
plot(Ff,abs(Hf2),'m');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Mf16.txt31/08/2013 11:36:17 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Mf17.txt

clear;
j = sqrt(-1);
H=zeros(1,17);
H(1) = 1;
H(2) = exp(-j*pi*16/17);
H(3) = exp(-j*pi*32/17);
H(4) = exp(-j*pi*48/17);
H(5) = exp(-j*pi*64/17);
H(14) = conj(H(5));
H(15) = conj(H(4));
H(16) = conj(H(3));
H(17) = conj(H(2));
h = real(ifft(H));
[Hf,Wf] = freqz(h,1,500);
Ff = Wf/(2*pi);
F=[0:8]/17;
plot(Ff,abs(Hf),F,abs(H(1:9)),'o');zoom;grid;
hold;
h = h.*hamming(17)';
Hf1 = freqz(h,1,500);
plot(Ff,abs(Hf1),'r');
% Usando la funcion fir2
B = fir2(16,[0 1 2 3 4 5 6 7 8 8.5]*2/17,[1 1 1 1 1 0 0 0 0 0],boxcar(17));
Hf2 = freqz(B,1,500);
plot(Ff,abs(Hf2),'m');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Mf17.txt31/08/2013 11:36:42 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/mfbp.txt

clear;
j = sqrt(-1);
H=zeros(1,12);
H(1) = 0;
H(2) = 0;
H(3) = 0.7*exp(-j*pi*2*11/12);
H(4) = exp(-j*pi*3*11/12);
H(5) = 0.7*exp(-j*pi*4*11/12);
H(9) = conj(H(5));
H(10) = conj(H(4));
H(11) = conj(H(3));

h = real(ifft(H));
[Hf,Wf] = freqz(h,1,500);
Ff = Wf/(2*pi);
F=[0:6]/12;
plot(Ff,abs(Hf),F,abs(H(1:7)),'o');zoom;grid;
hold;
h = h.*hamming(12)';
Hf1 = freqz(h,1,500);
plot(Ff,abs(Hf1),'r');
% Usando la funcion fir2
B = fir2(11,[0 1 2 3 4 5 6]*2/12,[0 0 0.7 1 0.7 0 0],boxcar(12));
Hf2 = freqz(B,1,500);
plot(Ff,abs(Hf2),'m');

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/mfbp.txt31/08/2013 11:37:12 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Specwin.txt

function [W,F] = specwin(w,M)


% w es el vector del que hay que calcular su DTFT
% M es el nmero de frecuencias en las que se quiere calcular la DTFT
% W es la DTFT de w
% F es el vector de frecuencias digitales 0 <= F <= 0.5
N=length(w);
W=zeros(1,M);
F=0:(M-1);F=F/(2*M);
for i=1:N,
W=W+w(i)*exp(-j*2*pi*i*F);
end
W=W/N;
Wlog=20*log10(abs(W));
plot(F,Wlog);grid;zoom;
return

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(9)%20Programas%20Matlab/Specwin.txt31/08/2013 11:37:39 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(10)%20Programas%20Matlab/Quantsos.txt

function [Hq,SOSq] = quantsos(B,A,b)


% [Hq,SOSq] = quantsos(B,A,b)
% Genera la respuesta frecuencial Hq del filtro digital (B,A) al ser
% cuantizado con b bits utilizando secciones de 2 Orden
% SOS es una matriz que muestra los valores cuantizados de los
% coeficientes de las secciones de 2 Orden
if (A==1) % Filtro FIR
B = fliplr(B);
A = [1 zeros(1,length(B)-1)];
end

[H,F]=freqz(B,A,500); % Respuesta frecuencial del filtro con coeficientes reales


Hdb=20*log10(abs(H));
BAmax = max([B;A]);
if (BAmax >1)
powof2 = floor(log(BAmax)/log(2));
else
powof2 = 0;
end
Bfixed = B/(2^powof2);Bq = round(Bfixed*(2^b))/(2^b);
Afixed = A/(2^powof2);Aq = round(Afixed*(2^b))/(2^b);
[Hq,F]=freqz(Bq,Aq,500); % Respuesta frecuencial del filtro con coeficientes cuantizados (forma
directa)
Hqdb = 20*log10(abs(Hq));
% Poner la funcin de transferencia como producto de secciones de 2 Orden
[Z,P,K]=tf2zp(B,A);
SOS = zp2sos(Z,P,K);
SOSmax=ceil(max(max(abs(SOS)))); % Calcula el menor entero que es mayor que el maximo de los
if (SOSmax > 1)
powof2 = floor(log(SOSmax)/log(2)); % coeficientes de 2 Orden (ceil) y halla la potencia de 2
else
% cercana a ese nmero.
powof2 = 0;
end
SOSfixed=SOS/(2^powof2);

% Escala todos los coeficientes de los trminos de 2 Orden por

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(10)%20Programas%20Matlab/Quantsos.txt (1 of 2)31/08/2013 11:38:40 p.m.

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(10)%20Programas%20Matlab/Quantsos.txt

% esa potencia de dos (dividir por potencias de 2 es muy sencillo


% en un microprocesador, solo hay que desplazar bits. Cualquier cosa
% antes que realmente dividir!!)
SOSq = round(SOSfixed*2^b)/(2^b); % Cuantizacin de los coeficientes en punto fijo con b bits
[r,c]=size(SOSq);
% r es el numero de secciones de 2 Orden
Hq=ones(500,1); % Inicializar el vector de la respuesta del filtro cuantizado
for i=1:r,
Bp=SOSq(i,1:3);Ap=SOSq(i,4:6); % Determinar los coeficientes del numerador y denominador
Hp=freqz(Bp,Ap,500);
% Respuesta frecuencial de la seccion de 2 Orden r
Hq=Hq.*Hp;
% Configuracin en cascada, asi que deben multiplicarse sucesivamente
end
HSOSqdb=20*log10(abs(Hq));
plot(F,Hdb,'b',F,Hqdb,'r',F,HSOSqdb,'g');grid;zoom;
return

file:///C|/Users/PAIRING%20BILINEAR/Desktop/DSP-MATLAB/(10)%20Programas%20Matlab/Quantsos.txt (2 of 2)31/08/2013 11:38:40 p.m.