Documentos de Académico
Documentos de Profesional
Documentos de Cultura
4.1 Resumen
En la teorı́a de sistemas lineales es fundamental la representación de una señal en términos de
sinusoides o exponenciales complejas. Ello es debido a que una exponencial compleja es una
autofunción de cualquier sistema lineal e invariante con el tiempo, mientras que la respuesta
a una sinusoide es otra sinusoide de la misma frecuencia, con fase y amplitud determinadas
por el sistema. De este modo, la representación en frecuencia de la señales, a través de la
Transformada de Fourier, resulta imprescindible para analizar las señales y los sistemas.
47
4.2. INTRODUCCIÓN TEÓRICA PRÁCTICA 4. LA TRANSFORMADA DE FOURIER
obtener muestras de la misma, que pueden constituir una buena aproximación si se toman su-
ficientes (el concepto de suficiencia quedará más claro más adelante en el curso). La función fft
calcula la transformada de Fourier de una señal finita en el número de puntos equiespaciados
especificado en la llamada a la función.
2πk
ωk = , k = 0, · · · , 127
128
Para visualizar la transformada hay que tener en cuenta que el vector H contiene valores
complejos, por lo que tendremos que representar por separado su magnitud y su fase:
>> plot(2*pi*(0:127)/128,abs(H));
>> plot(2*pi*(0:127)/128,angle(H));
En el eje de abcisas se incluyen las frecuencias a las que está evaluada la transformada,
mientras que en el eje de ordenadas se coloca o bien la magnitud o bien la fase. El comando
plot() crea una curva continua, que no es más que la interpolación entre los valores discretos
(128 en este caso) de la transformada que han sido calculados. De esta manera se obtiene una
representación de la transformada entre 0 y 2π.
¡¡¡IMPORTANTE!!!: Acudir a este ejercicio cada vez que tengáis dudas acerca de como re-
presentar la transformada de Fourier de una señal.
Otra función de Matlab que nos permite obtener muestras de la Transformada de Fourier de
una señal es freqz, con la ventaja añadida de que permite trabajar con filtros IIR (respuesta
impulsional de duración infinita) que se pueden expresar de forma racional en el dominio de la
frecuencia. En la sección de descripción de funciones utilizadas, al final de esta práctica, vemos
cómo se aplica: en la llamada a la función se especifican los coeficientes del filtro, ası́ como el
número deseado de puntos de su transformada, como se puede comprobar con un help freqz en
Matlab.
Cuestión 8 Los filtros digitales son sistemas LIT descritos por una ecuación en diferencias
lineal con coeficientes constantes:
N
X M
X
ak y[n − k] = bk x[n − k]
k=0 k=0
48
PRÁCTICA 4. LA TRANSFORMADA DE FOURIER 4.2. INTRODUCCIÓN TEÓRICA
>> H = freqz(b,a,128,"whole");
>> plot(2*pi*(0:127)/128,abs(H));
>> plot(2*pi*(0:127)/128,angle(H));
4.2.2 Autofunciones
El concepto de autofunción de un sistema LIT es la base para comprender su respuesta en
frecuencia. Ası́, para un sistema con respuesta impulsional h[n], la salida ante una exponencial
compleja de la forma ejω0 n será
∞
X
y[n] = h[k]ejω0 (n−k) = H(ejω0 )ejω0 n (4.1)
k=−∞
Por tanto, la Transformada de Fourier de una señal nos informa de como responde el sistema
descrito por esa señal para cada frecuencia de entrada, o lo que es lo mismo, nos aporta el
contenido en frecuencia de la señal, ya que con la ecuación de sı́ntesis se puede reconstruir la
señal con exponenciales complejas, tal y como se describe a continuación:
∞
X
X(ejω ) = x[n]e−jωn (4.2)
n=−∞
Z π
1
x[n] = X(ejω )ejωn dω (4.3)
2π −π
49
4.2. INTRODUCCIÓN TEÓRICA PRÁCTICA 4. LA TRANSFORMADA DE FOURIER
También se puede realizar un bucle for para la generación de esas diez señales, introdu-
ciéndolas como filas o columnas de un matriz.
Calcular la salida del filtro para cada una de las exponenciales, convolucionando cada señal
de entrada con el filtro definido al comienzo:
>> y1 = conv(e1,h);
>> y2 = conv(e2,h);
>> ...
>> plot(e1);
>> hold;
>> plot(y1);
>> hold;
Razonar el porqué de la aparición de los efectos en los bordes. Repetir la operación para las
partes reales de e2 y de y2, notando los efectos de borde de nuevo.
50
PRÁCTICA 4. LA TRANSFORMADA DE FOURIER 4.2. INTRODUCCIÓN TEÓRICA
En el ejercicio anterior la fase y amplitud de la señal de salida son diferentes a las de la señal de
entrada. Esa diferencia viene determinada por la respuesta en frecuencia para ω = omegas(2).
Por tanto, sabiendo que la señal de salida es en cada caso la señal de entrada multiplicada por
la respuesta en frecuencia evaluada a esa frecuencia:
y[n] = H(ejω0 )ejω0 n (4.5)
se propone el siguiente ejercicio, consistente en evaluar la respuesta en frecuencia del sistema
para cada una de las diez frecuencias estudiadas anteriormente. Para ello, pensar que el vector
de salida es igual al vector de entrada multiplicado por un escalar complejo para casi todos
los instantes (excepto en los bordes), con lo que una simple división en un instante apropiado
nos dará el valor de dicho escalar. (¡¡¡ NO TRATAR DE HACER UNA DIVISIÓN DE
VECTORES!!!)
>> plot(omegas,abs(Haprox));
>> hold;
>> H=fft(h,128);
>> plot(2*pi*(0:127)/128,abs(H));
4.2.3 Simetrı́as
A la hora de trabajar con simetrı́as en torno al origen, hay que insistir en que Matlab considera
que las señales comienzan en n = 0 a la hora de evaluar su transformada de Fourier.
Ejercicio 22 Considerar el pulso rectangular de anchura L definido como
1 0≤n<L
x[n] = (4.6)
0 resto
Obtener la expresión analı́tica de su transformada de Fourier a partir de la ecuación (4.2).
Observar en la ecuación resultante el término de fase debido a que el pulso está centrado en
(L − 1)/2.
51
4.2. INTRODUCCIÓN TEÓRICA PRÁCTICA 4. LA TRANSFORMADA DE FOURIER
Para vectores cuyo primer valor represente un instante de tiempo distinto del cero habrá que
introducir una corrección:
Ejercicio 23 Escribir el código de una función que, utilizando la función fft(), calcule la
transformada de Fourier de una señal discreta de la siguiente forma:
Para realizar la función hay que tener en cuenta la propiedad del desplazamiento de la trans-
formada de Fourier, bajo la cual un desplazamiento en el tiempo equivale a un desplazamiento
en frecuencia:
x[n − n0 ] −→ e−jωn0 X(ejω ) (4.7)
Tener en cuenta que la función fft() considera el instante de comienzo de la señal en n0 = 0.
Recordar además que los valores de las frecuencias en los cuales la función fft() calcula la
transformada vienen dados por:
2πk
ωk = , k = 0, · · · , N − 1
N
52
PRÁCTICA 4. LA TRANSFORMADA DE FOURIER 4.2. INTRODUCCIÓN TEÓRICA
En general, podemos descomponer una señal compleja en su parte real y su parte imaginaria,
y a su vez cada una de ellas en parte par e impar:
x[n] = xrealpar [n] + xrealimpar [n] + j ximagpar [n] + j ximagimpar [n] (4.8)
en donde la parte par de una señal z[n] se define como (z[n] + z[−n])/2, y la parte impar como
(z[n] − z[−n])/2. Hay que tener en cuenta que aunque una señal sea la respuesta de un sistema
causal, sus partes par e impar no, debido a la simetrı́a que presentan respecto al origen.
x[n] = xrealpar [n] + xrealimpar [n] + j ximagpar [n] + j ximagimpar [n] (4.9)
y de su transformada X(ejω )
X(ejω ) = Xrealpar (ejω ) + Xrealimpar (ejω ) + j Ximagpar (ejω ) + j Ximagimpar (ejω ) (4.10)
Ahora podemos utilizar la función recientemente construida en el ejercicio 4.4 para constatar
las propiedades de simetrı́a de la transformada de Fourier, que de forma resumida son:
53
4.2. INTRODUCCIÓN TEÓRICA PRÁCTICA 4. LA TRANSFORMADA DE FOURIER
La función freqz nos permite calcular valores de ese tipo de transformadas en una serie
de puntos, a través del cálculo de dos transformadas, una para el numerador y otra para el
denominador.
>> b = [... ];
>> a = [... ];
>> [H,w] = freqz(b,a,512,"whole");
Tener en cuenta que b representa los coeficientes de la parte directa del filtro, mientras que
a los de la parte realimentada.
• A partir de esa frecuencia, deducir para qué señal de entrada se hará 0 la salida (dicha
señal ha de ser una autofunción).
• Razonar en el dominio del tiempo, y para dicha señal de entrada, por qué la salida es 0,
evaluando manualmente un par de recursiones de la ecuación en diferencias.
54
PRÁCTICA 4. LA TRANSFORMADA DE FOURIER 4.2. INTRODUCCIÓN TEÓRICA
en donde el segundo miembro representa una convolución periódica. En una convolución de ese
tipo se opera sobre señales periódicas. La integral se lleva a cabo sobre un intervalo de longitud
igual al perı́odo de las señales, siendo el resultado también periódico con el mismo perı́odo. De
alguna forma es la propiedad dual a la propiedad de la convolución , que nos relaciona una
convolución en el tiempo con un producto en el dominio transformado:
al igual que ocurre en el caso continuo. Esta última propiedad no es más que una consecuencia
del hecho de que las exponenciales complejas son autofunciones de los sistemas LIT, con lo que
el peso que tienen a la salida de un sistema se ve afectado por el valor de la transformada de
Fourier de la respuesta impulsional del sistema evaluada a esa frecuencia.
Volviendo con la propiedad de enventanado, cabe decir que si se particulariza al caso en
el que la ventana w[n] es una exponencial compleja nos encontramos con la propiedad de la
modulación :
y[n] = x[n] · ejω0 n −→ Y (ejω ) = X(ej(ω−ω0 ) ) (4.16)
de tan amplio uso en comunicaciones y radar. Esta propiedad es la dual a la propiedad del
desplazamiento temporal, que se traduce en un producto en frecuencia por una exponencial.
Cuestión 10 Demostrar que la transformada de Fourier de la parte par de una señal real
x[n] es la parte real de la transformada de Fourier X(ejω ). Razonar que si x[n] = 0, n < 0,
entonces X(ejω ) se puede obtener a partir de Re {X(ejω )}.
Ejercicio 26 Sea un pulso x[n] de longitud 21, que podrı́a representar el resultado de mues-
trear un pulso utilizado en radar (emplear la función ones()). Para enviarlo es necesario mo-
dularlo, de modo que el espectro resultante se sitúe en la frecuencia que interese. Dado que
la señal a enviar será real, la modulación se lleva a cabo con un coseno, que en este caso
será cos(nπ/2). Representar el espectro de las señales moduladas y sin modular, utilizado para
ello las funciones fft() y plot(), comprobando en donde se encuentra el pico de la transfor-
mada. Razonar la forma del espectro.
Este ejercicio que acabamos de realizar se puede ver también desde la perspectiva del enventa-
nado, en la cual la ventana serı́a el pulso original, y la señal deseada la exponencial compleja.
Entonces, la multiplicación en el tiempo significa que las deltas originales en frecuencia son
ensanchadas debido a la convolución con la sinc, transformada del pulso, como se puede apre-
ciar en la siguiente figura, que representa la transformada de un coseno de frecuencia 2π/8 y
longitud 50 muestras. En frecuencia no hay dos deltas sino un par de sincs centradas a las
frecuencias 2π/8 y 2π − 2π/8. Existen muchı́simos tipos de ventanas, cada una de las cuales
con propiedades diferentes. Acabamos de ver la más simple, la ventana rectangular, 1 en el
intervalo de definición y 0 fuera del mismo. También es posible el uso de otras ventanas que
no son constantes, sino que van disminuyendo su amplitud a medida que se alejan del punto
centra. La ventaja principal que ofrecen frente a la rectangular es que los lóbulos laterales de
sus transformadas son mucho más pequeños que los de una sinc, con lo que esa caı́da más rápida
en frecuencia hace posible una menor distorsión del espectro original. Como incoveniente hay
55
4.2. INTRODUCCIÓN TEÓRICA PRÁCTICA 4. LA TRANSFORMADA DE FOURIER
30
25
magnitud de la transformada
20
15
10
0
0 50 100 150 200 250 300 350 400 450 500
512 frecuencias entre 0 y 2pi
que resaltar que la anchura del lóbulo central es mayor que la correspondiente a una sinc. A
modo de ejemplo ponemos la ecuación de la ventana de Hamming, de uso muy extendido:
• Para ello, generar un pulso de 32 unos, y calcular con fft() 128 puntos de su transfor-
mada.
• Razonar qué ventana serı́a más apropiada si nuestro objetivo es distorsionar lo menos
posible el espectro de la señal enventanada.
>> x=cos(0.5*(0:31))+20*cos(1.5*(0:31));
>> figure(0)
>> plot(2*pi*(0:127)/128,abs(fft(x.*ones(1,32),128)));
>> figure(1)
>> plot(2*pi*(0:127)/128,abs(fft(x.*hamming(32)’,128)));
56
PRÁCTICA 4. LA TRANSFORMADA DE FOURIER 4.3.
Observar que en el caso de la ventana de Hamming resulta mucho más fácil apreciar el
tono de menor intensidad en el espectro.
Comprobar a partir de qué longitud de la señal truncada la diferencia entre los espectros es
inapreciable.
Obtener la respuesta en frecuencia del resultado de poner en cascada el filtro anterior con
el filtro de respuesta al impulso h[n] = δ[n − 1]. Determinar el valor de dicha respuesta en
frecuencia para ω = π/4.
57
4.4. PRÁCTICA 4. LA TRANSFORMADA DE FOURIER
La función filter() filtra una señal de entrada a través de un sistema definido por una
ecuación en diferencias, el cual viene especificado a partir de sus coeficientes de la parte directa
y de la parte realimentada. Calcula tantas muestras de salida como longitud tenga la entrada:
Filter a vector.
y = filter(b,a,x) returns the solution to the following linear,
time-invariant difference equation:
N M
sum a(k+1) y[n-k]= sum b(k+1) x[n-k] = 0 for 1<=n<=length(x)
k=0 k=0
[y, sf] = filter(b,a,x,si) sets the initial state of the system, si,
and returns the final state, sf. The state vector is a column vector
whose length is equal to the length of the longest coefficient vector
minus one. If si is not set, the initial state vector is set to all
zeros.
La función freqz() evalúa la respuesta en frecuencia de un sistema que viene definido por
una ecuación en diferencias. Permite de esta forma evaluar la transformada de respuestas
impulsionales de duración infinita, cuando estas se corresponden con sistemas racionales, o lo
que es lo mismo, definidos por ecuaciones en diferencias. Permite calcular la respuesta entre 0
y π o entre 0 y 2π:
58
PRÁCTICA 4. LA TRANSFORMADA DE FOURIER 4.5.
[H,w] = freqz(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] = freqz(b,a)
returns the complex frequency response of the rational IIR filter
whose numerator has coefficients b and denominator coefficients a.
[H,w] = freqz(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.
59
4.5. PRÁCTICA 4. LA TRANSFORMADA DE FOURIER
60