Está en la página 1de 15

7 Análisis transformado de sistemas LIT

7.1 Resumen
Tanto la Transformada de Fourier como la Transformada Z son especialmente útiles en el análi-
sis de sistemas LIT: en ambos casos tenemos un producto en el dominio transformado. De su
estudio se desprenden numerosas propiedades de los sistemas, muy útiles en gran variedad de
aplicaciones.

Objetivo: Trabajar con la transformada de Fourier y la transformada Z, es decir, en unos


casos en el dominio de la frecuencia y en otros en todo el plano complejo. Se dedicará una
atención especial a la posición de los polos y de los ceros de la función de transferencia del
sistema bajo estudio, que se supondrá racional. El material cubierto puede ser ampliado en el
capı́tulo 5 del libro de texto.

Duración: Dos sesiones.

7.2 Introducción teórica


7.2.1 Respuesta en frecuencia de sistemas racionales
Se puede proceder a la evaluación geométrica de la Transformada de Fourier a partir de la
Transformada Z, al igual que se hacı́a en sistemas continuos a partir de la Transformada de
Laplace. Esto es aplicable a sistemas con funciones de transferencia racionales, que están de-
terminadas por sus polos y sus ceros. Aunque disponiendo de un ordenador pueda parecer
escasamente útil el trazado aproximado del módulo y fase de la Transformada de Fourier, re-
sulta de gran utilidad para comprender mejor todos los aspectos envueltos en el diseño de un
sistema, y el cómo afecta la posición de los polos y de los ceros.

 Cuestión 24 Sean los filtros Hcero(z) = 1 − 0.9z −1 y Hpolo(z) = 1−0.9z 1


−1 . Trazar sobre el

papel un dibujo aproximado del módulo y de la fase de ambos filtros, basándose para ello en la
posición del cero (o del polo).

 Ejercicio 44 Sean los filtros Hcero(z) = 1 − 0.9z −1 y Hpolo(z) = 1


1−0.9z −1
.

97
7.2. PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT

Representar la magnitud y la fase de la Transformada de Fourier de ambos filtros siguiendo


la siguiente secuencia de operaciones:

>> [tfcero,w]=freqz([1 -0.9],1,64);


>> plot(w,abs(tfcero));
>> plot(w,angle(tfcero));
>> [tfpolo,w]=freqz(1,[1 -0.9],64);
>> plot(w,abs(tfpolo));
>> plot(w,angle(tfpolo));

Comparar las gráficas obtenidas con los dibujos realizados en la cuestión anterior.

Ahora trataremos de averiguar la posición de los ceros y de los polos a partir de la Transfor-
mada de Fourier. Para ello cargar el fichero con los espectros tf1 y tf2 de la siguiente forma:

>> load ~ssd00/Practica9/ejerc9_4.mat

Representar la magnitud de tf1 utilizando:

>> plot(w,abs(tf1(1:64)));

Sabiendo que la Transformada Z del sistema tiene dos polos y dos ceros conjugados próximos
a la circunferencia unidad, determinar la fase de dichos polos y de dichos ceros observando la
magnitud de la Transformada de Fourier.

En el segundo de los sistemas, tf2, los ceros se encuentran situados sobre la circunferencia
unidad, con lo que la magnitud de la Transformada de Fourier se hará cero en una frecuencia
determinada. Sabiendo que este sistema sigue teniendo dos polos y dos ceros, y que los polos
están próximos a la circunferencia unidad, determinar la fase de dichos polos, mediante la
observación de:

>> plot(w,abs(tf2(1:64)));

7.2.2 Retardo de grupo y fase lineal


El retardo de grupo es una medida muy conveniente de la linealidad de la fase de la Transfor-
mada de Fourier. En muchos casos interesa que la fase sea lo más lineal posible, lo que significa
que todas las frecuencias experimenten el mismo retardo al atravesar el sistema. Una fase no
lineal lleva a una dispersión en tiempo de las diferentes frecuencias, en lo que se conoce como
distorsión de fase.

Un retardo de grupo τg con un valor constante entero significa un retardo igual en todas las
frecuencias. Si ese valor constante no es entero, el retardo constante para todas las frecuencias
ya no es entero, y hay que aplicar las ideas de interpolación vistas en la práctica 6 al hablar de
retardos no enteros.

98
PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT 7.2.

 Ejercicio 45 Determinar analı́ticamente el retardo de grupo que presenta un filtro de res-


puesta impulsional h[n] = δ[n − 5].
Mediante la función de Matlab grpdelay se puede calcular ese retardo de grupo entre 0 y 2π.
Para ello seguir la siguiente secuencia de comandos:

>> h=[zeros(1,5), 1];


>> [g,w]=grpdelay(h,1,64,’whole’);
>> plot(w,g)

Verifica que se obtiene el mismo resultado que el calculado analı́ticamente.

En el siguiente ejercicio analizaremos los efectos de un retardo de grupo no constante en una


situación práctica.

 Ejercicio 46 En un sistema radar se envı́a un pulso que es reflejado por el objetivo, de tal
modo que midiendo la diferencia de tiempo entre el envı́o y la llegada podremos averiguar la
distancia a la que se encuentra el objetivo (ya que conocemos la velocidad de propagación en
el espacio). Sin embargo el pulso que se recibe vuelve con una gran cantidad de ruido, ruido
que hay que eliminar para ver con claridad el pulso y ası́ determinar su posición en el tiempo.
En este ejercicio veremos como esa operación de filtrado puede plantear problemas si el retardo
de grupo del filtro no es constante, ya que en ese caso, además de eliminar el ruido (objetivo
deseado), estaremos distorsionando el pulso (efecto no deseado).

Cargar el fichero con la señales de este ejercicio de la siguiente forma:

>> load -force ~ssd00/Practica9/ejerc9_2.mat

En ese fichero se encuentran los siguientes filtros y señales:

[b, a]: coeficientes de un filtro IIR de orden 8


h: respuesta impulsional de un filtro FIR de longitud 33
pulse: pulso que se envı́a en el transmisor, y que comienza en n=0
noise: ruido que se suma al pulso recibido
pnd 1: pulso reflejado más ruido

• Primero analizaremos ambos filtros, FIR e IIR. Para ello, representar 256 puntos de la
magnitud del espectro del filtro IIR, ası́ como 256 muestras entre 0 y π de su retardo de
grupo.

%filtro IIR
>> [H_iir,w]=freqz(b,a,256);
>> plot(w,abs(H_iir))

99
7.2. PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT

>> [g_iir,w]=grpdelay(b,a,256);
>> plot(w,g_iir)

%filtro FIR
>> [H_fir,w]=freqz(h,1,256);
>> plot(w,abs(H_fir))
>> [g_fir,w]=grpdelay(h,1,256);
>> plot(w,g_fir)

Observar como el retardo de grupo es constante en un caso pero no en el otro, mientras


que ambos filtros tienen frecuencias de corte muy similares.

• Filtremos la señal pulse con ambos filtros (función filter()), denominando las salidas
pulsefir y pulseiir respectivamente. Superponer las tres señales, observando la distorsión
en el caso IIR. Notar también el retardo que existe en el caso FIR entre pulse y pulsefir:
relacionarlo con el retardo de grupo calculado anteriormente.

• Representar 256 muestras de la magnitud del espectro de pnd 1 entre 0 y π, notando que
el espectro del pulso se concentra en las bajas frecuencias, mientras que el espectro del
ruido está situado en frecuencias más altas.

• Eliminar el ruido que llega junto con el pulso reflejado en pnd 1, teniendo en cuenta que
se encuentra en una banda de frecuencias diferente a la del pulso. Filtrar la señal pnd 1
con el filtro FIR en un caso y con el filtro IIR en el otro, llamando a las señales pnd 1fir
y pnd 1iir respectivamente.

>> pnd_1iir=filter(b,a,pnd_1);
>> pnd_1fir=filter(h,1,pnd_1);
>> plot(pulse)
>> hold
>> plot(pnd_1iir)
>> plot(pnd_1fir)
>> hold off

Se pretende que el resultado en ambos casos sea el pulso recibido más un cierto retardo
debido al retardo de grupo. Tratar de estimar en ambos casos cuál es el retardo entre el
pulso transmitido y el pulso recibido, y decir en cuál de los dos no es posible.

En un sistema real, una vez estimado el tiempo que ha tardado en regresar el pulso se podrá co-
nocer la distancia a la que se encuentra el objetivo. Para ello habrı́a que traducir las muestras
a segundos y considerar la velocidad de propagación de la onda electromagnética en el espacio.

Un filtro con fase cero sólo se puede dar si la respuesta impulsional es simétrica en el tiempo
con respecto al origen, es decir, es par. Recordar de las propiedades de la Transformada de

100
PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT 7.2.

Fourier que una señal real y par tenı́a una transformada real y par. Estrictamente hablando
habrı́a que decir que la fase no serı́a cero, sino 0 o π, según el valor real sea positivo o negativo.
Pero siempre que hablemos de fase cero estaremos hablando de valores reales, ya sean positivos
o negativos. Si el filtro es causal no puede ser simétrico con respecto al origen, con lo que no
puede tener fase cero. Sin embargo, si se mantiene la simetrı́a con respecto a un punto la fase
será lineal (pensar en el desplazamiento de una secuencia simétrica con respecto al origen hasta
un punto n0 ).

Con filtros causales esa simetrı́a con respecto a un punto sólo se puede dar en filtros FIR; no
es posible obtener un filtro IIR causal simétrico con respecto a un punto. Además, la fase de
los filtros IIR suele ser bastante no lineal 1 . Sin embargo los filtros IIR son muy deseables en
numerosos casos, ya que con ellos es más factible obtener unas determinadas especificaciones
en la magnitud de la Transformada de Fourier para un orden determinado.

 Cuestión 25 Calcular la Transformada de Fourier del sistema equivalente a la cascada de


dos filtros, h[n] y h[−n], en función de la transformada de h[n]. Razonar por qué la fase de la
transformada global es cero.
Repetir el ejercicio para una combinación en paralelo de h[n] y h[−n].

Por todo ello trataremos en el siguiente ejercicio de cancelar los efectos de la fase en un
filtrado IIR.

 Ejercicio 47 Tomando como punto de partida la cuestión anterior, vamos a implementar


la cascada de dos filtros IIR, de tal modo que la fase conjunta sea cero. Por lo que hemos
dicho antes, no es posible obtener un filtro IIR causal de fase lineal. Ası́, en este caso permi-
tiremos anticausalidad: si la señal de entrada es de duración finita podemos permitirnos esa
anticausalidad, si esperemos a tener todo el registro completo de la entrada antes de comen-
zar a calcular la salida. Existe una función en Matlab denominada filtfilt() que filtra la
señal de entrada por el filtro h[n]∗h[−n]. Compararemos la función filtfilt() con filter().

Para ello, sea

0.1432 + 0.0117z −1 + 0.1432z −2


H(z) =
1 − 1.2062z −1 + 0.5406z −2
la función de transferencia de un sistema causal. Verificar que el sistema es estable comprobando
la posición de los polos (utiliza la función roots). Ahora determinar el retardo de grupo de la
siguiente forma:

>> [g,w]=grpdelay([0.1432 0.0117 0.1432],[1 -1.2062 0.5406],128);


1
Existen casos muy excepcionales en los que un filtro IIR causal tiene fase cero, pero no son realizables como
sistemas racionales y no los trataremos aquı́.

101
7.2. PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT

Representar el retardo g frente a la frecuencia w con el comando plot(). Observar la forma


del retardo de grupo, notando lo lejos que está de ser constante.

Generar una señal de entrada x de la siguiente forma:

>> x=[-2*ones(1,15), 2*ones(1,15), -3*ones(1,15)];

Ahora pasar esa señal a través de un filtro con función de transferencia H 2 (z) = H(z)H(z),
utilizando para ello el comando filter() sin condiciones iniciales, y denominar la salida yc.
Superponer en la misma gráfica x e yc.

Vamos ahora a realizar el filtrado con un filtro con la misma respuesta en magnitud que
H 2 (z) pero fase cero, es decir, con respuesta impulsional h[n] ∗ h[−n]. Utilizaremos para ello
la función filtfilt() de la forma:

>> ync=filtfilt([0.1432 0.0117 0.1432],[1 -1.2062 0.5406],x);

Representar el retardo de grupo de este nuevo filtro de la forma:

>> [g,w]=grpdelay([0.0205 0.0034 0.0411 0.0034 0.0205],


[0.5406 -1.8583 2.7472 -1.8583 0.5406],256);
>> plot(w,g);

En donde los coeficientes que se le introducen a grpdelay() corresponden a H(z)H(1/z),


transformada de h[n] ∗ h[−n]. Razonar la forma de la gráfica.

Superponer sobre la misma gráfica x,yc,ync, interpretando lo observado en función de lo ex-


plicado hasta el momento en cuanto al retardo de grupo. ¿Por qué la forma de yc e ync es
diferente, y no es una de ellas simplemente una réplica desplazada de la otra?

7.2.3 Sistemas pasa-todo y de fase mı́nima


En esta práctica hemos estado trabajando hasta el momento con la Transformada de Fourier,
aunque ya hemos visto como esa transformada depende de la posición de los polos y de los
ceros de la Transformada Z. En esta sección trataremos precisamente la posición de los polos
y de los ceros en el plano complejo, y como a partir de ella se pueden caracterizar propiedades
muy importantes de los sistemas LIT.

Comenzaremos diciendo que todos aquellos sistemas H(z) tales que el producto H(z)H ∗ (1/z ∗ )
coincide tienen la misma magnitud en su Transformada de Fourier, o lo que es lo mismo,
|H(ejω )|2 es igual en todos ellos. Eso equivale a decir que en un polo o un cero en c tiene los
mismos efectos sobre la magnitud de la Transformada de Fourier que un polo o un cero en 1/c∗
respectivamente. Sin embargo los efectos sobre la fase son diferentes, y de ahı́ que podamos
encontrar varios sistemas racionales con la misma magnitud en su Transformada de Fourier

102
PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT 7.2.

pero distinta fase, tal y como veremos.

Del mismo modo que dos polos o dos ceros en c y 1/c∗ producen el mismo efecto en la
magnitud de la respuesta en frecuencia, un cero en c y un polo en 1/c∗ ( o viceversa) causan
el efecto contrario en el módulo de la Transformada de Fourier, con lo que dicho módulo es
constante para todos las frecuencias considerando exclusivamente el efecto de esas dos raı́ces.
Ası́ se crean los sistemas pasa-todo, sistemas racionales con una magnitud de su respuesta
en frecuencia constante y que tienen la forma
k=M
Y z −1 − d∗k
Hap (z) =
k=1
1 − dk z −1

z −1 −d∗
en donde el factor de orden uno 1−dk z−1
k
tiene como amplitud de la Transformada de Fourier un
valor constante e igual a 1. Si escribimos ese término de la forma usual tendremos
1 − (1/d∗k )z −1
(−d∗k )
1 − dk z −1
en donde la constante (−d∗k ) es necesaria para que la magnitud sea uno. Si el sistema es estable
y causal los polos pk estarán situados en el interior del cı́rculo unidad, con lo que los ceros
estarán en las posiciones recı́procas conjugadas (1/p∗k ), fuera del cı́rculo unidad.

No se debe confundir un sistema pasa-todo con un sistema identidad, de respuesta impulsio-


nal δ[n]. El sistema pasa-todo tiene efectos sobre la fase de tal modo que el retardo depende
de la frecuencia, con lo que a pesar de que la magnitud de la Transformada de Fourier sea
la misma para todas las frecuencias no se conserva en general la forma de la señal de en-
trada, debido a que el retardo de grupo no es constante. Además, hay que destacar que para
un sistema pasa-todo estable y causal, el retardo de grupo es positivo para todas las frecuencias.

 Ejercicio 48 Disponemos de la siguiente información acerca de un sistema pasa-todo H(z):

• Es real y estable
• Dos de sus polos se encuentran en 0.9ejπ/4 y 0.8.
• Dos de sus ceros se encuentran en 1.5ejπ/2 y 1.25.

Encontrar los polos y los ceros que faltan para completar la función de transferencia de un
sistema pasa-todo que tenga el mı́nimo orden posible. Tener en cuenta que es real, y la relación
que debe existir entre los polos y los ceros.

Para comprobar los cálculos vamos a visualizar la respuesta en frecuencia del H(z) encon-
trado. Para ello realizar los siguientes pasos:

• Utilizando poly() encontrar el vector real b que contiene los coeficientes del numerador
de H(z) (Nota: Tened cuidado con la precisión numérica en la especificación de las raı́ces
del polinomio).

103
7.2. PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT

• Repetir la operación anterior con el vector a que contiene los coeficientes del denominador.

• Utilizar freqz() para obtener 128 muestras de la Transformada de Fourier entre 0 y π.

• Observar la magnitud del espectro.

• Calcular 128 muestras del retardo de grupo del filtro con grpdelay() entre 0 y π.

• Visualizar el retardo de grupo, observando que es siempre positivo.

1−bz −1
 Cuestión 26 Considerar un filtro pasa-todo de la forma Hap (z) = 1−az −1 , con a y b núme-

ros reales. Determinar la relación existente entra a y b. Calcular asimismo el rango de valores
posibles de a y de b, sabiendo que el sistema es estable y causal.

Si una función de transferencia H(z) es multiplicada por la función de transferencia de


un filtro pasa-todo, Hap (z), la magnitud de la Transformada de Fourier de H(z) permanece
inalterada, aunque se producen cambios en su fase. Para un orden determinado de polos y
ceros en una expresión racional Hi (z), existe un número finito de posibles sistemas Hi (z) que
tienen la misma magnitud en su espectro, aunque diferentes fases: basta con pasar de uno a
otro a través de un sistema pasa-todo que no aumente el orden, o lo que es lo mismo, que
cancele algún cero con un polo y cree un cero en otro sitio. Es decir, si H1 (z) y H2 (z), ambos
sistemas racionales, tienen la misma magnitud en el espectro, podemos pasar de uno a otro de
la siguiente forma:

H2 (z) = H1 (z)Hap (z)

en donde Hap (z) es un filtro pasa todo.

 Cuestión 27 Sea un sistema racional H(z) con dos polos reales y dos ceros complejos con-
jugados. Razonar el número de sistemas reales diferentes de orden dos que tienen la misma
magnitud en su espectro que H(z).

De todos aquellos sistemas racionales del mismo orden con igual magnitud en su Transforma-
da de Fourier, podemos hablar de dos en particular: sistemas de fase mı́nima y sistemas
de fase máxima.
Las propiedades que caracterizan un sistema de fase mı́nima son las siguientes:

• Es estable y causal, con un sistema inverso estable y causal. Equivalentemente, todos sus
polos y ceros se encuentran en el interior del cı́rculo unidad.

• Ofrece el mı́nimo retardo de grupo de todos los sistemas racionales con la misma magnitud
de su Transformada de Fourier.

104
PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT 7.2.

• La energı́a en el tiempo está más concentrada hacia la izquierda que en cualquier otro
sistema con la misma magnitud en el espectro.

Un sistema de fase máxima tendrá propiedades contrarias a las anteriores, es decir, máximo
retardo de grupo, energı́a más concentrada hacia la derecha, y causal y estable con un inverso
que si es estable no es causal (ceros fuera de la circunferencia unidad).

 Ejercicio 49 Sea el sistema H(z) de la forma

H(z) = 1 + 0.6z −1 + 1.9z −2 − 4.3z −3 + 2.6z −4

Calcular sus raı́ces utilizando el comando roots(). Vamos a construir un sistema de fase
mı́nima hminp y un sistema de fase máxima hmaxp a partir de h, modificando la posición de
sus ceros de tal modo que la respuesta en frecuencia conserve la magnitud.

Hallar hminp, conservando los ceros de h que se encuentran en el interior del cı́rculo unidad
y reflejando los que están fuera. Repetir el proceso inverso para hmaxp, es decir, conservando
los que están fuera y reflejando hacia fuera los que están dentro. Utilizar en ambos casos el
comando poly() para construir los polinomios.

Para que la magnitud de la Transformada de Fourier coincida, efectuar las siguientes opera-
ciones:

>> hminp=sum(h)*hminp/sum(hminp);
>> hmaxp=sum(h)*hmaxp/sum(hmaxp);

Comprobar que, efectivamente, la magnitud de la Transformada de Fourier es igual en los


tres casos, representando los cocientes de la siguiente forma:

>> plot(2*pi*(0:127)/128,abs(fft(hminp,128)./fft(h,128)));
>> plot(2*pi*(0:127)/128,abs(fft(hmaxp,128)./fft(h,128)));

observando que ambos son constantes e iguales a uno.

Representaremos ahora las fases y los retardos de grupo, notando las diferencias entre unos
sistemas y otros:

>> plot(2*pi*(0:127)/128,angle(fft(h,128))) % Fase principal de h


>> plot(2*pi*(0:127)/128,angle(fft(hminp,128))) % Fase principal de hminp
>> plot(2*pi*(0:127)/128,angle(fft(hmaxp,128))) % Fase principal de hmaxp
>> plot(2*pi*(0:127)/128,unwrap(angle(fft(h,128)))) % Fase continua de h
>> hold
>> plot(2*pi*(0:127)/128,unwrap(angle(fft(hminp,128)))) % Fase continua de hminp
>> plot(2*pi*(0:127)/128,unwrap(angle(fft(hmaxp,128)))) % Fase continua de hmaxp
>> hold

105
7.2. PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT

Se puede apreciar como la fase del sistema de fase mı́nima es la menos negativa de todas,
mientras que la fase del sistema de fase máxima es la más negativa, con lo que ese sistema es
el que introduce más retardo, como se va a constatar a continuación a través de la observación
del retardo de grupo:

>> [g,w]=grpdelay(h,1,128); % Retardo de grupo de h


>> plot(w,g)
>> hold
>> [g,w]=grpdelay(hminp,1,128); % Retardo de grupo de hminp
>> plot(w,g)
>> [g,w]=grpdelay(hmaxp,1,128); % Retardo de grupo de hmaxp
>> plot(w,g)
>> hold

El sistema de fase mı́nima es el que introduce el mı́nimo retardo.

 Ejercicio 50 En el ejercicio anterior se observaron gráficamente las diferencias en las cur-


vas de retardo de grupo entre tres sistemas diferentes con la misma magnitud en su espectro.
Ahora se concretarán esas diferencias ante una señal de entrada en particular.

Sea x=rand(1,100). Filtrar x con cada uno de los tres filtros de ejercicio anterior, h, hminp,
hmaxp, para obtener las salidas y, yminp, ymaxp. Representar sobre la misma gráfica la se-
cuencia de energı́as de cada una de las señales, es decir:
m
X
energiay(m) = y 2 [n]
n=0

Interpretar la gráfica, observando como energiayminp se concentra más hacia el principio,


mientras que energiaymaxp más hacia el final, debido a la diferencia en el retardo introducido
por cada uno de los filtros.

Nota: Para generar las señales de energı́a se puede utilizar la función cumsum().

7.2.4 Filtros de fase lineal generalizada


Hablamos de sistemas de fase lineal generalizada cuando el retardo de grupo es constante, con
lo que todas las frecuencias son retardadas la misma cantidad a su paso por el sistema. Su
respuesta en frecuencia se podrá expresar de la forma:

H(ejω ) = A(ejω )e−jαω+jβ

106
PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT 7.2.

en donde A(ejω ) es real (no tiene por qué ser positivo). El retardo de grupo, si no conside-
ramos las posibles discontinuidades de fase en aquellos frecuencias para las que A(ejω ) = 0, es
constante e igual a α.

Los filtros de fase lineal generalizada pueden ser FIR o IIR. Si exigimos que el filtro sea
causal y realizable sólo podremos disponer de filtros FIR, ya que los filtros IIR causales de
fase lineal no tienen funciones de transferencia racionales, con lo que los sistemas no se pueden
implementar mediante ecuaciones en diferencias.

Existen cuatro tipos diferentes de filtros FIR de fase lineal generalizada, atendiendo al tipo
de simetrı́a (par o impar) y al eje de simetrı́a (valor entero o valor situado en el punto medio
entre dos enteros). En todos ellos se verifica que si z0 es un cero de la función de transferencia,
también lo será 1/z0 . La longitud de los filtros es M + 1:

• Tipo I: Simetrı́a par con respecto a un valor entero M/2 (M par), que representa el retardo.

• Tipo II: Simetrı́a par con respecto a un valor no entero M/2 (M impar), que representa
el retardo.

• Tipo III: Análogo al tipo I con simetrı́a impar.

• Tipo IV: Análogo al tipo II con simetrı́a impar.

Estos filtros son de uso muy extendido, y multitud de técnicas de diseño de filtros FIR buscan
un resultado que cumpliendo los requisitos deseados sea además de fase lineal generalizada.

 Cuestión 28 En la práctica anterior se estudiaron la forma directa I y la forma directa


II para implementar filtros descritos mediante ecuaciones en diferencias. Si el filtro es FIR
no existirá la parte realimentada, sino tan sólo la parte correspondiente a los coeficientes bk ,
con tantos retardos como orden tenga el filtro. En esta cuestión se trata de particularizar esa
implementación para el caso en el que el filtro FIR tiene una estructura determinada, como
es la de fase lineal generalizada, con alguna de las simetrı́as expuestas en la definición de los
cuatro tipos de filtros FIR de fase lineal generalizada.

Sea un filtro H(z) = b0 + b1 z −1 + b2 z −2 + b3 z −3 + ... + bM z −M . El número de multiplicaciones


que hay que realizar para el cálculo de cada muestra de salida es de M+1, debido a los M+1
coeficientes del filtro, en general diferentes,P dado que
y[n] = M k=0 bk x[n − k]
Razonar cuál será el mı́nimo número de multiplicaciones en cada uno de los tipos de filtros
de fase lineal generalizada expuestos anteriormente (I,II,III,IV), teniendo en cuenta la simetrı́a
de los coeficientes.

107
7.3. PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT

 Ejercicio 51 Conocemos dos ceros de un filtro FIR de fase lineal generalizada:

z1 = 0.9ejπ5/6 z2 = 0.8ejπ5/4

Encontrar los 6 ceros que faltan para tener un filtro FIR real de longitud 9 y fase lineal.
Obtener el filtro a partir de sus ceros. Razonar cuál es su retardo de grupo sin calcularlo
explı́citamente con Matlab, notando la simetrı́a del filtro en el tiempo.

Ahora vamos a factorizar el filtro como la combinación de un sistema de fase mı́nima y un


filtro pasa-todo, es decir, escribiendo Hlp (z) de la forma
Hlp (z) = Hap (z)Hmp (z)
en donde Hap se corresponde con un sistema pasa-todo y Hmp con un sistema de fase mı́nima.
Hmp tendrá como raı́ces dobles los ceros del filtro original que se encuentran dentro del cı́rculo
unidad, mientras que Hap tendrá como ceros los ceros exteriores a la circunferencia unidad de
H(z), y como polos los ceros interiores.
Utilizar la función poly() para obtener hmp [n], la respuesta impulsional del filtro de fase
mı́nima. Utiliza la función stem() para comprobar si hmp [n] es un filtro de fase lineal.
Utilizar la función poly() para obtenerlos coeficientes del filtro pasa-todo Hap a partir de sus
ceros y de sus polos.
Calcular el retardo de grupo del filtro de fase mı́nima y del filtro pasa-todo, verificando que
la suma de ambos retardos es constante en todo el eje de frecuencias.

7.3 Dudas más comunes


• P: Después de haber completado todos los polos y todos los ceros, el sistema no sigue las
especificaciones que se le piden (no es pasa-todo, por ejemplo).
R: A la hora de operar con las raı́ces (invertirlas, conjugarlas), usar el nombre de la
variable que contiene su valor, y que recoge la precisión con la que trabaja Matlab, pero
no uséis el valor numérico de la raı́z truncado a unos pocos decimales.

• P: Matlab da error con alguna función hecha por nosotros.


R: Comprobar que la función se encuentra en el mismo directorio desde el que estáis en
Matlab. Para ello, hacer ls. Si no aparece el fichero que contiene a la función, o bien
tenéis que cambiar al directorio en el que se encuentra dicha función en Matlab, o bien
mover la función con mv al directorio adecuado en la ventana de comandos del sistema
operativo.

7.4 Descripción funciones utilizadas

function [gd,w] = grpdelay(b,a,n,dum)


%GRPDELAY Group delay of a digital filter.
% [Gd,W] = GRPDELAY(B,A,N) returns length N vectors Gd and W
% containing the group delay and the frequencies at which it

108
PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT 7.4.

% is evaluated. Group delay is -d{angle(w)}/dw. The frequency


% response is evaluated at N points equally spaced around the
% upper half of the unit circle. When N is a power of two,
% the computation is done faster using FFTs.
% GRPDELAY(B,A,N,’whole’) uses N points around the whole unit
% circle. See also FREQZ.

function y = filtfilt(b,a,x)
%FILTFILT Zero-phase forward and reverse digital filtering.
% Y = FILTFILT(B, A, X) filters the data in vector X with the
% filter described by vectors A and B to create the filtered
% data Y. The filter is described by the difference equation:
%
% y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)
% - a(2)*y(n-1) - ... - a(na+1)*y(n-na)
%
% After filtering in the forward direction, the filtered
% sequence is then reversed and run back through the filter.
% The resulting sequence has precisely zero-phase distortion
% and double the filter order. Care is taken to minimize
% startup and ending transients by matching initial conditions.
% See also FILTER.

function roots (v)

% For a vector v with n components, return the roots of the


% polynomial v(1) * z^(n-1) + ... + v(n-1) * z + v(n).

function poly (x)

% If A is a square n-by-n matrix, poly (A) is the row vector of


% the coefficients of det (z * eye(n) - A), the characteristic
% polynomial of A.
%
% If x is a vector, poly (x) is a vector of coefficients of the
% polynomial whose roots are the elements of x.

function UNWRAP Unwrap phase angle in radians.

% UNWRAP(P) unwraps radian phases P by changing absolute


% jumps greater than pi to their 2*pi complement. It
% unwraps columnwise with matrices.

109
7.5. PRÁCTICA 7. ANÁLISIS TRANSFORMADO DE SISTEMAS LIT

%
% UNWRAP(P,TOL) uses a jump tolerance of TOL rather
% than the default TOL = pi.

function angle (X)


% compute arg (X) for each element of X

function freqz

% Compute the frequency response of a filter.


%
% [h,w] = resp(b)
% returns the complex frequency response h of the FIR filter with
% coefficients b. The response is evaluated at 512 angular frequencies
% between 0 and pi. w is a vector containing the 512 frequencies.
%
% [h,w] = resp(b,a)
% returns the complex frequency response of the rational IIR filter
% whose numerator has coefficients b and denominator coefficients a.
%
% [h,w] = resp(b,a,n)
% returns the response evaluated at n angular frequencies. For fastest
% computation n should factor into a small number of small primes.
%
% [h,w] = freqz(b,a,n,"whole")
% evaluates the response at n frequencies between 0 and 2*pi.

7.5 Ejercicios recomendados


Se recomienda la realización de los siguientes ejercicios de [3]:

Capı́tulo 5: 1,4,5,6,8,11,14,15,16,17,22,23,24,26,29,38,40,42,48.

110
Bibliografı́a

[1] C. Burrus, J. McClelland, A. Oppenheim, T. Parks, R. Schafer, and H. Scuessler, editors.


Computer-based exercises for Signal Processing using MATLAB. Prentice-Hall, 1994.

[2] John Eaton. Octave Documentation. GNU, 1997 (En fotocopiadora).

[3] A.V. Oppenheim and R.W. Schafer. Discrete-Time Signal Processing. Prentice-Hall, 1989.

[4] A.V. Oppenheim, A.S. Willsky, and I.T. Young. Signals and Systems. Prentice-Hall, 1983.

111