Está en la página 1de 104

Series y Transformada de Fourier

para Seales Continuas


y Discretas en el Tiempo.
Algoritmos para el desarrollo de ejercicios prcticos

Javier Gonzlez Barajas

Open Access Support


Si encuentra este libro interesante le agradeceramos que diera soporte a sus
autores y a OmniaScience para continuar publicando libros en Acceso Abierto.
Puede realizar su contribucin en el siguiente enlace: http://dx.doi.org/10.3926/oss.23

Series y Transformada de Fourier para seales Continuas y Discretas en el Tiempo


Algoritmos para el desarrollo de ejercicios prcticos

Autor:
Javier Enrique Gonzlez Barajas
javiergonzalezb@usantotomas.edu.co
Facultad de Ingeniera Electrnica, Divisin de Ingenieras, Universidad Santo Toms de
Aquino, Bogot D.C., Colombia

ISBN: 978-84-944229-6-6
DOI: http://dx.doi.org/10.3926/oss.23
OmniaScience (Omnia Publisher SL) 2015
Diseo de cubierta: OmniaScience
Dibujos de cubierta: 3d-function-6: Martin Thoma CC-BY 3.0 y Abstrakt wellen bewegung:
bittedankeschn Fotolia.com
OmniaScience no se hace responsable de la informacin contenida en este libro y no aceptar
ninguna responsabilidad legal por los errores u omisiones que puedan existir.

Agradecimientos

El autor expresa sus sinceros agradecimientos a las personas, que con su experiencia contribuyeron al diseo de algunos de los experimentos ilustrados en este
texto. Las personas mencionadas a continuacin hacen parte del grupo de docentes de la Facultad de Ingeniera Electrnica, Universidad Santo Toms- Colombia.
Ing. Davis Montenegro, por su apoyo en el diseo de experimentos basados en la
Transformada Wavelet Continua.
Ing. Carlos Javier Mojica, por su contribucin en el diseo del experimento basado
en la estrategia matricial de la Transformada Rpida de Fourier.

Contenido

Presentacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Introduccin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Captulo 1
Algoritmo para reconstruccin de seales peridicas
a partir de sus coeficientes de Fourier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Captulo 2
La Transformada de Fourier. Mtodo computacional. . . . . . . . . . . . . . . . . . . . . 29
Captulo 3
Mtodo eficiente para el clculo de la Transformada
de Fourier Discreta: La FFT matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Captulo 4
Clculo de la densidad espectral de potencia para seales
con muestreo irregular: Mtodo de Lomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Captulo 5
Promediado de espectros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Captulo 6
Manipulacin del espectro de una seal unidimensional . . . . . . . . . . . . . . . . . 61
Captulo 7
Transformada Cepstrum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Captulo 8
Introduccin a la Transformada Wavelet continua . . . . . . . . . . . . . . . . . . . . . . 73
Captulo 9
Aplicacin de la Transformada Wavelet continua en seales de voz. . . . . . . . . 79
Captulo 10
Espectro de una seal discreta bidimensional . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Captulo 11
Manipulacin del espectro de una seal discreta bidimensional . . . . . . . . . . . 93
Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Xxxx
xxxx

Presentacin

Diversas asignaturas impartidas en el rea de la ingeniera, demandan en la actualidad el uso de las herramientas computacionales e informticas disponibles en la
actualidad, para ofrecer a los estudiantes estrategias pedaggicas para su mejor
entendimiento. El uso de la informtica ya es transversal en todos los programas
de enseanza media, profesional y de postgrado y no pueden ser la excepcin los
programas de ingeniera.
Al interior de las asignaturas relacionadas con el tema de anlisis de seales, se
imparten tpicos que estn ligados directamente con la Transformada de Fourier
y diversas maneras de estudiar el espectro de seales continuas en el tiempo y
tambin de las seales que han sido el producto de procesos de muestreo.
Cada da son publicadas nuevas aplicaciones de la Transformada de Fourier y diferentes tcnicas para su implementacin con la finalidad de obtener mayor informacin en tiempo real de los escenarios que son de exploracin para un ingeniero.
Adems, se suman las diferentes estrategias de nuevas transformaciones de tiempo frecuencia, como es el caso del uso de las ondillas u ondaletas (Transformada
Wavelets).
Este texto es un sencillo manual que recopila los diversos algoritmos implementados en la herramienta informtica Matlab y que han sido utilizados para un prctico entendimiento de las diversas maneras de implementar estrategias para el
anlisis de seales en el dominio de la frecuencia.
7

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

El texto ofrece al lector diversos ejemplos prcticos de aplicaciones del anlisis en


el dominio de la Frecuencia y los respectivos algoritmos desarrollados. Los cdigos
correspondientes a cada escenario prctico, estn disponibles en el anexo de este
texto.
Los cdigos implementados cubren diferentes contextos, como es el caso de seales electrofisiolgicas, muestras provenientes de la voz humana y el caso de las
seales discretas bidimensionales, que son la base del procesamiento digital de
imgenes.

Introduccin

La Transformada de Fourier, es una herramienta matemtica desarrollada por Jean


Batiste Fourier y en primera instancia fue creada con la intencin de explicar el
fenmeno de propagacin del calor como un conjunto de oscilaciones cuyas frecuencias son mltiplos enteros de una oscilacin fundamental. Por tal motivo, esta
transformada toma como base la funcin exponencial compleja para expresar el
comportamiento de seales en el dominio de la frecuencia.
En el inicio del texto se podr observar que para las seales peridicas, se puede
lograr una reconstruccin a travs de las series de Fourier. Se ha implementado
un algoritmo en la herramienta Matlab que permite tomar la serie de una seal
cuadrada peridica y reconstruirla con ajustes de sus parmetros de ancho de
pulso y periodo fundamental. El algoritmo desarrollado es adaptado para demostrar las propiedades de linealidad y desplazamiento en el tiempo de la seal de
entrada. Para demostrar que la teora de la serie de Fourier permite reconstruir
cualquier seal peridica, se realiza un ejemplo que reconstruye periodos de una
seal electrocardiogrfica.
El segundo tema abordado se centra en el mtodo computacional para el clculo
de la Transformada de Fourier, denominado la DFT (Discrete Fourier Transform).
Se ofrece al lector un sencillo algoritmo para el desarrollo de la DFT a travs de
un ejemplo que utiliza una seal exponencial decreciente y su Transformada de
Fourier calculada analticamente. En esta seccin se puede observar los resultados
obtenidos al implementar la estrategia del promediado de espectros.
9

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

El tercer tema, se centra en las manipulaciones que pueden aplicarse al espectro


de una seal y las diferentes modificaciones que pueden generarse en el dominio
del tiempo. Tambin se expone los resultados obtenidos al utilizar la transformada
de Fourier en seales bidimensionales, de gran pertinencia en el procesamiento
digital de imgenes.
En este tema se ha introducido un caso especial de la densidad espectral de potencia, el cual se centra en el escenario de muestras tomadas bajo un muestreo
irregular. Este caso es abordado desde la tcnica de Lomb, el cual ha propuesto
una modificacin de la Transformada de Fourier adaptada al muestreo irregular.
EL cuarto tema ilustra varios casos especiales de la aplicacin de la Transformada
de Fourier, como es la aplicacin del Cepstrum para la deteccin de ecos en la seal de voz y la exposicin del caso cuando se desea estimar la densidad espectral
de potencia de una seal a partir del muestreo irregular.
Por ltimo, se expone la Transformada de Ondillas o Wavelets, a travs de la implementacin prctica de algoritmos que permiten al usuario desarrollar experiencias con dos de las ondillas bsicas utilizadas en la literatura: Morlet y Sombrero
Mexicano.

10

Captulo 1

Algoritmo para reconstruccin


de seales peridicas a partir
de sus coeficientes de Fourier

11

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

12

Los coeficientes de Fourier, permiten la caracterizacin de una seal continua en el


tiempo con la propiedad de periodicidad. Estos coeficientes ofrecen la informacin
de la seal en el dominio de la frecuencia. Segn la teora de Fourier, es posible
tomar estos coeficientes y reconstruir una seal peridica.
Tomando como ejemplo una seal cuadrada de periodo T y ancho T1, como se ilustra en la Figura 1. Se procede a estimar la serie de Fourier con base a la Ecuacin (1).

ak

1
x(t )e  jkw0t dt
T T

a0

1
x(t )dt
T T

a0
ak
ak

(1)

2T1
T
1  jkw0t
e
dt
T T

2sin kw0T1
kw0T

w0 2S F0
x(t )

ae

k N

lkw0t

x(t ) o ak
x(t  t0 ) o ak e  jkw0t0
x(t ) o ak
y(t ) o bk con periodo T = 4 seg. y ancho T = 1 seg.
Figura 1. Onda cuadrada peridica,
1
x(t )  y(t ) o ak  bk
X w

f

x(t)e

f

 jZ t

dt

13

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Tomando la Ecuacin (1) se puede calcular


el
coeficiente a0:
1
 jkw t

1 x(t )e  jkw0t dt
T T x(t )e 0 dt
TT
1
a0 1 x(t )dt
a0 T T x(t )dt
TT


(2)
2T1
1
jkw
t

a a0 1 2Tx1(t )e 0 dt
akka0 T TTx(t )e 1jkw0t dt  jkw0t
dt
T 1TT ak jkw t x(t )e
T0t dt
ak 1 1 e  jkw
T
a0ak 1 T xT (et )dt 0 dt
a0 T T xT (t )dt 1
T a
xla(t )Ecuacin
dt
T 2sin
y para k 0 los coeficientes se calculan
(3):
0segn
T
kw
T0TTT1
T
2
kw
2sin
a
1
0
1
a0akk 2T1 kw T
a0 T kw0T2T1
a 0
w0 1T2SF0jkw
0 t T
0
w
2
S
ak 0 1 eNFjkw
dt
0
ak T eN 0t dt
1lkw0t  jkw0t
T
a
x(t )T T k ak e lkw
T 0et dt
x(t )2sin
a
e
T
k
k
N

T
kw

(3)
k kw
N 0T1
a 2sin
1
ak T02sin
okw
kw0T1
akkxx((tt )) o

aakk 0T
kw
jkw0t0
St0F) o0 ak e  kw
jkw0t00T
w0xx((tt 2
0o a e

t
)
w0 2S0F0
k
Siendo
x(t ) oNN awk 0 2S F0
lkw0t
o
x
t
a
(
)
x(t ) ak k e lkw0tN
bak k e
x(yt )(t ) o
k
N
y(t ) o
b
N abk elkw0t
k  Nxk(t )
x
t
y
t
a

o
(
)
(
)
k
x
t
a
o
(
)
k puede
k
A travs del asistente matemtico
implementar las siguientes
) Matlab,
x(xt )(to
aykk(tf) o ase
k  bk
t0 de datos con la serie de Fourier
 jkw
x
t
o
a
(
)
0
lneas de cdigo que permitenx(crear
un
arreglo
k
t  t0 ) ofak e  jkw
x(X
t  wtde
axk(et )e  jj0ZZTt0tt dt
0 ) o

calculada para una onda cuadrada


Periodo
yakancho
X
w
x
t
e
(
e  jkw0t0 T1:
(t  t)0 ) odt
x(t ) o ak xf

x(t ) o ak f
kn
y(t ) o bk NNx(11t ) o akj 22SSNkn
y(tX) o
k bk x(n)e  j N
yo
(0tx)a(o
nk )
ebbk k
x(X
t ) k y(t )
N=100;
x(t )  y(t )nno
bk
0 a2k S
kn
fx (t )
y
t
(
) o ak  bk
j
2S kn
k=-N:N;
f
 j NjZ t
n
k
e
,


XA
w
x
t
e
dt
(
)
w n , k x(et )e NjZf
t
XA
dt  jZ t
T1=1;
2X w
f
x(t )e dt

f
2
X
w


T=4;
2S kn
X w NN 11
 j 2f
S kn
2
X k
x(n)e  jN NN1N
wo=(2*pi)/T;
2S kn
N
j
X k
x
n
e
(
)
2

N x n t n  x .s
x
t
x
f
t
.cos
2
S
W


N
n 0X k Nx (n







n
n
n
e
)
n 1 x
n 1
ak=2*sin(k*wo*T1)./(k*wo*T);

n 0 1
P f 1 j22Skn n 0n 1 n Ntn  x2 .cos 2S f tn  W  n 1 xn Ntn  2x .s
2
S
kn
P
f



ak(N+1)=2*T1/T;
N sin2 2S
A n, k 2eG j2 N

2
S knN cos2 2S f t n  W
n 1 sin 2S
 j n 1 cos 2S f t n  W
A n, k 2eG N

N n 1
n 1
2 A n,k
e
N
X w 2
2 N sin(4S t n )
X w

n 1 sin(4S t )
X
w


tan
4
SW

n
Nn 1
N
N
En la Figura 2 se puede apreciartan
la serie
generada
para N = 100. 22
Fourier
4SW de
N
N x t  x .sin
N
t
cos(4
S
)
x
t
x
.cos
2S f tn  W





n

n
n
1
nn 11 cos(4
n 12 x n t n N x .sin
x
t
x
f
t
.cos
2
S
W


N
t
S
)






n
n
n n
n
n 1
P f 1 2 Mnn11N1 1 n

x
t
x
f
t
.cos
2
S
W






N
N
ux
vy




x t
2
S
2
S

n
P f 2G 2 1 M 11N 1 N cos
n 1 2 j n n
n 12 n n
N sin
f
t
2
S
W

ux
vy
2
S
2
S




2
2 2S f
M
N

n

j


n
n
1
1
A u , v2 GP f1
A
x
y
e
(
,
)
2NS f N t2n  W
A(nx1, cos
n 1 sin 2SN f

2G 2
A u , v MN
y)e M cos
2S f tn  W
x 0y 0
n 1
n
MN
Nx 0 y 0

N sin(4S t )

n
n 1 sin(4S N
tn )
tan 4SW Nn 1
14
sin(4S tn )
tan 4SW

N cos(4
nt 1)
S
tan
4SW
SNtnn )
n 1 cos(4

n 1
cos(4S2Stvyn )
1 MM 11 NN 11 n 1  jj 22SSMux
ux 2SNvy

1
ak
ak

Algoritmo para reconstruccin de seales peridicas a partir de sus coeficientes de Fourier

ak

1
x(t )e  jkw0t dt
T T

1
x(t )dt
T T
Figura 2. Serie
2T1de Fourier con N = 100.
a0
T
1  jkw0t
Para tener una escala en el ejeahorizontal,
se
e
dt debe tener en cuenta que para cada
k
T T
valor de K, equivale a k x W0 en unidades
de radianes/segundos.
a0

2sin kw0T1
Para reconstruir la seal, se toma la Ecuacin
(4):
kw0T
ak

w0 2S F0

x(t )

ae

k N

lkw0t

(4)

x(t ) o ak
x(t  tse
o ak e  jkw t el algoritmo para reconstruir la
A travs de Matlab en el programa
0 ) implementa
seal. Se crea una base de tiempo
deak5 a 5 segundos con un paso de simulacin
x(t ) o
de 0.001 segundos. La salida del
es la seal x(t) contenida en la Figura 3.
y(talgoritmo
)o b
0 0

x(t )  y(t ) o ak  bk
f

t=-5:0.001:5;
X w x(t )e  jZ t dt
L=length(t);
f
2S kn
N
1
for i=1:L
j
N
X
k
x
n
e
(
)

c=0;
n 0
for k=-N:N
2S kn
j
c=c+ak(k+1+N)*(cos(k*wo*t(i))+j*sin(k*wo*t(i)));
A n , k e N
2
end
X w
x(i)=real(c);
2
N
N

end
x
t
x
f
t
.cos
2
S
W









n 1 xn tn 
n
n
n
1
n 1
P f

N
N
2
2G 2
15
f
t
cos
2
S
W





n 1
n 1 si
n

N
n 1

sin(4S tn )

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

La Figura 3 ilustra el resultado de la reconstruccin para N = 20.

Figura 3. Reconstruccin con N = 20.

El algoritmo desarrollado permite tambin demostrar que la calidad de la seal


reconstruida puede mejorar al incrementar la cantidad N de coeficientes involucrados. En la Figura 4 se aprecia la seal reconstruida para una cantidad de coeficientes con N = 100 de la serie de Fourier.

Figura 4. Seal cuadrada reconstruida para N = 100.


16

Algoritmo para reconstruccin de seales peridicas a partir de sus coeficientes de Fourier

La Figura 5 se ilustra la reconstruccin para N = 200.

Figura 5. Reconstruccin con N = 200.

En la Figura 6 se ha producido la reconstruccin con N = 1000.

Figura 6. Seal cuadrada reconstruida para N = 1000.

17

a
a00

TT
1
1 x(t )dt
TT T x(t )dt
T

2
Series y Transformada de Fourier para Seales
Continuas
y Discretas en el Tiempo.
2TT11
a
0
a
Algoritmos para el desarrollo de ejercicios prcticos
0
T
a
akk

T
1
0t
1 e  jkw
jkw0t dt
dt
TT T e

1. Propiedad de desplazamiento Ten el tiempo

2sin
kw00TT11
2sin kw
a
k
ak de Fourier,
kw
Segn la propiedad de los coeficientes
kw00TT si una seal peridica x(t) posee
los coeficientes ak, entonces en lawEcuacin
(5) se describe el cambio cuando la
w0 2
2S
S FF0

seal posee un retraso to.

xx((tt ))

N
N

aa ee

k N
k N

lkw0t
k lkw0t
k

Si xx((tt )) o
oa
akk

 jkw t
Entonces xx((tt 
 tt00 )) o
oa
akk ee  jkw t

(5)

0 0
0 0

xx((tt )) o
oa
akk
yy((tt )) o
b
o bkk
A travs del programa se implementa
cdigo que
demuestra que al tomar los coexx((ttel)) 
 yy((tt )) o
oa
ak 
b
bk

k
k
ficientes ak de la seal x(t), al ser multiplicados
f por ((cos(k*wo*to)+ j*sin(k*wo*to))),
f
 jZ t un retraso de to unidades de
al realizar la reconstruccin, la seal
x(t) obtendr
X
X w
w xx((tt ))ee  jZ t dt
dt
f
tiempo.
f

X k
Se implementa la lnea de cdigo: X k

N 1
N 1

xx((nn))ee
n 0
n 0

2S kn
 j 2S kn
j N
N

2S kn
 j 2S kn

j N
A
A n
n,, kk ee N
2
ak=(2*sin(k*wo*T1)./(k*wo*T)).*(cos(k*wo*to)-j*sin(k*wo*to));
2
X
X w
w
2
N

N x t  x .cos 2S f t  W 2
1
W
.cos 2S f tnn por
n 11 xnn Ntnn  xmultiplicados
P
ff de 1la2 onda
En la cual se tienen los coeficientes
el 
P ak

2
2G 2 n cuadrada
N cos2 2S f t  W

n
2
G
n 1 cos 2S f t  W
factor de desfase (cos(k*wo*to)+ j*sin(k*wo*to)).

n
n 1

N
N sin(4S t )

ny
1 sin(4
La Figura 7 ilustra los coeficientes atan
en magnitud
fase,Spara
tnn ) N = 100.

k 4SW
Nn 1
tan 4SW
N cos(4S t )

n 1 cos(4S t n )

n
n 1
de
obTomando los ak con desfase, se utilizan dentro1del
ux 2S vy
2Sreconstruccin,
M algoritmo
1 N 1
 j 2S ux  2S vy
M 1 N 1
j M  N
1
A
u
v
A
x
y
e
,
(
,
)
teniendo la nueva seal x(t) con desplazamiento
de en
A u , v MN
A(xel
, ytiempo
)e M tNo, que se puede

MN x 0 y 0

apreciar en la Figura 8.

18

x 0y 0


xx tt 
N
N
n 1
n 1

n
n

n
n
N
N
n 1
n 1

2
sin
sin2

Algoritmo para reconstruccin de seales peridicas a partir de sus coeficientes de Fourier

Figura 7. Magnitud y fase de los coeficientes ak para N = 100, al ser modificados


para obtener un retraso en la seal reconstruida.

Figura 8. Seal reconstruida con los coeficientes ak con desfase


para generar un retraso con to = 2.5 segundos.
19

T1
1  jkw0t
1T  jkw0t ak
e
dt
ak 1 e  jkw t dt
T T
0
ak T T e
dt
TT
T1
2sinen
kwel0Tiempo.
Series y Transformada de Fourier para Seales2sin
Continuas
kw0Ty1a Discretas
k
a
Algoritmos para el desarrollo de ejercicioskprcticos
kw0T
2sin kw0T1
kw0T
ak
kw T w0 2S F0
w0 2S F0 0
N
2.Propiedad de linealidadw0 2SNF0 lkw xt (t ) a elkw0t
k
N a e 0
x(t )
k lkw t
k N
0
x(t ) k
 N ak e
xde
o ak se ilustra en la Ecuacin
(t )Fourier,
La propiedad de linealidad para los coeficientes
x(t ) ok akN
jkwY(t),
y
(6), en la cual se tiene dos sealesx(continuas
con periodo T.
0t 0
t ) o ak en jkw
xel(ttiempo
 t ) o ax(t)
ke
x(t  t0 ) o
ak e  jkw0tt0 0
x(t  t0 ) o ak e x(t0 )0 o ak
x(t ) o ak
Si x(t ) o ak y y(t ) o bk
y(t ) o bk

(6)
x(t )  y(t ) o ak  bk
y(t ) o bk
Entonces x(t )  y(t ) o ak  bk
f
x(t )  y(tf) o ak  bk
X
w
x(t )e  jZ t dt
 jZ t

X w f
x
t
e
dt
(
)
f
x(t )e  jZ t dtreconstruir
w sefrequiere
En este experimento se suponenXque
dos
2S kn seales cuadraa0

N 1

j

2S kn
Nf
1
N
Xj k caso
xse
(n)etendr
das similares a la visualizada en la Figura
1. Eneste
una seal cua
N 1x (n)e 2SNkn
X k
j
n
0
N
drada con T1 = 1 y otra seal conXT2
n 0 x (n)e
k = 2.4.

n 0

j

2S kn
2SNkn

A n , k e

j

2S kn
N

A ndos
e  j de coeficientes a y b , con periodo T,
, k tipos
El programa a continuacin, genera
k
k
A n, k 2 e N X w 2
para cada una de las seales cuadradas:
X w
X w

2
N

2
N W
x
t
x
f
t
.cos
2
S






n
n
n
1
n 1 2S f t  W 2
xn tn  x

PNn 1f xxn ttn 2 xx .cos

N
n
n 1
N
2W
f
t
x
t
x
.cos
2
S










P
f


n
n
n
n
n
2
G
N=100;
N
n 1
cos 2S f tn  Wn 1 N
2
n 1 W
2 2S f
P f

t
cos
sin
2

N
N
n
n 1
n 1
k=-N:N;
cos2 2NS f tn  W
sin2 2

n 1
n 1
T=4;
N
sin(4S tn )
sin(4S t ) Nn 1

N
ntan
1 4SW n
% Periodo de la seal
tan 4SW N sin(4S tn )
cos(4S tn )
tan 4SW Nnn 11cos(4S tn ) n 1
wo=(2*pi)/T;
2S ux 2S vy
cos(4
S tn1) 2SMux1 N2S1vy
j

1N1T1
% Coeficientes para seal de ancho
1
M
N
j

1 M nA
u
v
A
x
y
e
,
(
,
)

Mux 2SNvy
2
S
M
N


1
1
A u , v 1 A(x , y)MN
e  j x 0y 0
T1=1;
A u , v MN x 0 y 0 A(x , y)e M N
ak=(2*sin(k*wo*T1)./(k*wo*T));MN
x 0y 0
ak(N+1)=2*T1/T;
% Coeficientes para seal de ancho T2
T2=2.4;
bk=(2*sin(k*wo*T2)./(k*wo*T));
bk(N+1)=2*T2/T;

1
2G1 22
2G

En la Figura 9 se ilustran los coeficientes ak y bk calculados.

20

Algoritmo para reconstruccin de seales peridicas a partir de sus coeficientes de Fourier

Figura 9. Coeficientes ak y bk.

Utilizando el algoritmo de reconstruccin, se toman los coeficientes ak y bk para


reconstruir las seales x(t) y y(t).

t=-5:0.001:5;
L=length(t);
for i=1:L
c=0;
for k=-N:N
c=c+ak(k+1+N)*(cos(k*wo*t(i))+j*sin(k*wo*t(i)));
end
x(i)=real(c);
end
for i=1:L
c=0;
for k=-N:N
c=c+bk(k+1+N)*(cos(k*wo*t(i))+j*sin(k*wo*t(i)));
end
y(i)=real(c);
end
21

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

En la Figura 10 se ilustran las seales x(t) y y(t), reconstruidas para N = 100.

Figura 10. Seales x(t) y y(t) reconstruidas para N = 100.

Como siguiente paso se procede a crear los coeficientes ck los cuales son el resultado de la suma de los coeficientes ak y bk. Con el algoritmo de reconstruccin se
reconstruye la seal z(t), ilustrada en la Figura 11. La seal z(t) equivale a la suma
en el dominio del tiempo de las seales x(t) y y(t).

ck=ak+bk;
for i=1:L
c=0;
for k=-N:N
c=c+ck(k+1+N)*(cos(k*wo*t(i))+j*sin(k*wo*t(i)));
end
z(i)=real(c);
end

22

Algoritmo para reconstruccin de seales peridicas a partir de sus coeficientes de Fourier

Figura 11. Seal z(t) creada a partir de la reconstruccin de los coeficientes ck = ak + bk.

3.Reconstruccin de una Seal Electrocardiogrfica


a partir de sus coeficientes de Fourier
En el siguiente programa se encuentra una simulacin que toma los coeficientes
de Fourier de un ciclo completo del complejo cardiaco y realiza la reconstruccin
para una frecuencia fundamental F0. Los coeficientes se encuentran almacenados
en el archivo coef.mat.
El archivo coef.mat contiene los coeficientes de Fourier que corresponden a una
seal electrocardiogrfica, almacenados en la variable XF1.
XF1 = 0.0306 - 0.2912i
0.1045 + 0.1070i
0.1660 0.1993i
0.4851 + 0.2971i
0.2363 0.4382i
0.5624 + 0.2922i
0.6417 0.2724i

0.6869 + 0.0461i
0.5682 0.0270i
0.5402 0.4401i
0.5121 + 0.6731i
0.0299 0.6975i
0.2187 + 0.8459i

0.5696 0.7458i
0.9622 + 0.7620i
1.0227 0.6641i
0.9484 + 0.2450i
1.1413 + 0.1069i
0.3722 0.3293i

0.2926 + 0.1378i
1.2148 0.0371i
1.5213 0.6171i
2.2415 + 1.5051i
3.0091 2.9823i
3.4763 + 3.8879i
23

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

3.2797 5.3207i
2.9091 + 6.2133i
1.8076 7.8318i
0.9435 + 8.5737i
0.2066 9.4362i
2.6475 + 8.7986i
4.6682 8.6571i
7.0514 + 8.6604i
7.7367 6.6058i
8.2304 + 2.8991i
7.5862 + 0.1233i
3.0050

7.5862 0.1233i
8.2304 2.8991i
7.7367 + 6.6058i
7.0514 8.6604i
4.6682 + 8.6571i
2.6475 8.7986i
0.2066 + 9.4362i
0.9435 8.5737i
1.8076 + 7.8318i
2.9091 6.2133i
3.2797 + 5.3207i
3.4763 3.8879i

3.0091 + 2.9823i
2.2415 1.5051i
1.5213 + 0.6171i
1.2148 + 0.0371i
0.2926 0.1378i
0.3722 + 0.3293i
1.1413 0.1069i
0.9484 0.2450i
1.0227 + 0.6641i
0.9622 0.7620i
0.5696 + 0.7458i
0.2187 0.8459i

0.0299 + 0.6975i
0.5121 0.6731i
0.5402 + 0.4401i
0.5682 + 0.0270i
0.6869 0.0461i
0.6417 + 0.2724i
0.5624 0.2922i
0.2363 + 0.4382i
0.4851 0.2971i
0.1660 + 0.1993i
0.1045 0.1070i
0.0306 + 0.2912i

Con las siguientes lneas de cdigo se realiza una grfica de la magnitud y fase de
los coeficientes ilustrados en la Figura 12.

load coef
L=length(XF1);
N=(L-1)/2;
k=-N:N;
ak=XF1;
subplot(2,1,1)
stem(k,abs(ak))
title(magnitud coeficientes ak)
subplot(2,1,2)
stem(k,angle(ak))
title(magnitud coeficientes bk)

24

Algoritmo para reconstruccin de seales peridicas a partir de sus coeficientes de Fourier

Figura 12. Coeficientes de Fourier en magnitud y fase de un ciclo


completo del complejo cardiaco.

La Figura 13 ilustra el periodo del complejo cardiaco.

Figura 13. Periodo del complejo cardiaco.

25

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Para la reconstruccin de varios periodos del complejo cardiaco, se declara la variable F0 que representa la frecuencia fundamental, y permite que el complejo se
repita a un periodo determinado.

Fo=0.5;
wo=2*pi*Fo;
t=-5:0.001:5;
L=length(t);
for i=1:L
c=0;
for k=-N:N
c=c+ak(k+1+N)*(cos(k*wo*t(i))+j*sin(k*wo*t(i)));
end
x(i)=real(c);
end

La Figura 14 ilustra el resultado obtenido de la reconstruccin con F0 = 0.5 Hz, por


lo cual se tiene un periodo de de 2 segundos.

Figura 14. Reconstruccin de una seal electrocardiogrfica


con frecuencia fundamental F0 = 0.5 Hz.
26

Algoritmo para reconstruccin de seales peridicas a partir de sus coeficientes de Fourier

El valor de F0 es aumentado a un valor de 2Hz, para obtener el resultado ilustrado


en la Figura 15, en la cual se aprecia la disminucin del periodo y el aumento de la
cantidad de ciclos cardiacos por unidad de tiempo.

Figura 15. Reconstruccin de una seal electrocardiogrfica


con frecuencia fundamental F0 = 2 Hz.

27

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

28

Captulo 2

La Transformada de Fourier.
Mtodo computacional

29

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

30

En diversos casos no se puede contar con una seal continua en el tiempo


que ofrezca la oportunidad de calcular su Transformada de Fourier directamente. En estos casos se acude a tomar muestras de la seal bajo estudio a
travs del teorema del muestreo. El siguiente ejemplo se basa en la construccin de una seal compuesta por una funcin exponencial decreciente que
modela la cada de tensin de un circuito RC. En primera instancia se calcula
su Transformada de Fourier de manera analtica. Posteriormente se procede
a ejecutar el algoritmo para el mtodo computacional para la Transformada
de Fourier: DFT.
A continuacin se expone el cdigo del programa en el cual se toma como ejemplo
la seal x(t) que representa la cada de voltaje de un circuito RC, con un capacitor
de 100 microfaradios y una resistencia de 1000 ohmios.

Ts=0.001;
C=100E-6;
R=1000;
tao=1/(R*C);
t=0:Ts:5;
x=exp(-tao*t);

31

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

La Figura 16 ilustra la seal x(t) para un paso de simulacin de 0.001 seg.

Figura 16. Seal x(t) que representa la cada de voltaje de un condensador.

Posteriormente se procede a calcular la Transformada de Fourier para la seal x(t).


En las siguientes lneas del programa, se realiza la simulacin de X(w).

N=length(x);
k=-N/2:N/2;
F=(k-1)/(N*Ts);
% Transformada de Fourier terica X(w) de la funcin x(t)
w=2*pi*F;
XW=1./(tao+j*w);
XWM=abs(XW);
plot(w,XWM)

32

La Transformada de Fourier. Mtodo computacional

En la Figura 17 se ilustra la Transformada de Fourier de la senal x(t) calculada para


frecuencias entre 500 y 500 Hz.

Figura 17. Transformada de Fourier de x(t).

Utilizando el mtodo computacional para evaluar la Transformada de Fourier por


medio de la DFT, se disea el cdigo para realizar el clculo.

N=length(x);
for k=1:N
c=0;
for n=1:N
c=c+x(n)*(cos(2*pi*n*k/N)+j*sin(2*pi*n*k/N));
end
XF(k)=c;
end
k=1:N;
F=(k-1)/(N*Ts);
figure
plot(F,abs(XF))
33

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

La Figura 18 ilustra el resultado obtenido de la evaluacin de la Transformada de


Fourier a travs del mtodo de la DFT.

Figura 18. Calculo de la Transformada de Fourier de la seal x(t)


a travs del mtodo de la DFT.

La Figura 19 ilustra la comparacin entre el clculo de la Transformada e Fourier


por medio de ambos mtodos.
En este experimento se deben tener en cuenta algunos detalles. Primero, se debe
recodar que para la Transformada de Fourier para seales continuas, la escala en
frecuencia es directa, osea W = 2xpixF.
Pero en el caso de la versin computacional, la escala en frecuencia est dada por
KxFs/N.
Como conclusin, se puede tomar la Figura 19 como un ejemplo que demuestra
que la versin computacional de la Transformada de Fourier es un muestro de la
versin continua.

34

La Transformada de Fourier. Mtodo computacional

Figura 19. Comparacin entre el resultado obtenido con el algoritmo de la DFT


y los datos obtenidos a travs de la Transformada de Fourier.

35

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

36

Captulo 3

Mtodo eficiente para el clculo


de la Transformada de Fourier Discreta:
La FFT matricial

37

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

38

ak
a0

x(t)e

dt

1
x(t )dt
T T

2T1
1T
x(t )e  jkw0t dt
T1 T  jkw0t
e
dt
T1 T
a0
)dt
T x (tkw
T2sin
0T1
ak
2T1 kw0T
a0
w0 2TS F0
1 N
axk(t ) e ajkwe0tlkw
dt0t
k
T
T
a0
ak
ak

k N

2sin
x(t ) o
ak kw0T1
ak
x(t  t0 ) kw
o a0Tk e  jkw0t0
w
F0 Fourier para una seal continua en el tiem2Sa1de
x(0t ) o
Matemticamente la Transformada
ak Nk x(t )e  jkw0t dt
po x(t) se define en la Ecuacin
yx((tt))(7).
o Tbk Ta e lkw0t
k
x(t )  yk (1tN) o ak  bk
x(t )dt
x(ta)0o Taf
k
T
 jZ t

(7)
xX( tw t0 )2o
f1x(atk)ee jkw0dtt0
T
a
x(t )0o aNTk1
2S kn
j
N
X
k
x
n
e
(
)


o b1
 jkw0t x(t), cuando se ha discretizado y se
k
Para el anlisis espectral de yla(ta)misma
seal
dt
n
0e
k
(t )  yT(t )To
2a
S kkn b
obtiene la seal discreta de Nxmuestras
x(n),
sek utiliza la Transformada Discreta de
j
N
fe
, k 2sin
Fourier (T.D.F.) expresada en Ala nEcuacin
(7).
kw
T
0 1
X awk 2 x(t )e  jZ t dt
X w f kw0T

w0 N2S1 F0  jN2S kn
2
N
N
(8)
x
t
x
f
t
.cos
2
S
W


X k
x
n
e
(
)








xn tn  x
N

n
n
n
1 lkwn t1
n 1
0
0
P xf( t ) n

e
N
N
2kG 2Nja2Skkn
n 1 cos2 2S f tn  W
n 1 sin2
N
A xn(,tk) o a
e
k
Es necesario tener en cuenta que
al implementar
directamente la Transformada
N
2
tn ) poca eficiencia computasin(4
S
 jkw

0t 0
X
w
n
1


Discreta de Fourier a travs de
algoritmo,
t0 ) o ak e se obtiene
tanxun
(t4SW
N
cos(4implementar
S tn )
2
cional. Por tal motivo se propone
prctica
un mtodo eficienN
x(ten
ak
) oesta
n N
1
x
t
x
f
t
.cos
2
S
W










xn tn  x

n n
n
te para el clculo de la T.D.F. aprovechando
de
simetra.
1 1 M 1sus
2S ux 2S vy
nN 11 propiedades
n 1
j

PA yuf(, tv) o b2k

M
N
N
N
e 2 2S f t  W
(x , y)cos
2G A
sin2



n
MN
n 1
x(t )  y(t )ox a0ky 0 bk n 1
Siendo N el nmero de muestras de la seal discreta x(n), se procede como primer

f

N
paso a generar la matriz A(n,k) de
dimensiones
con todas los posibles valores
jZ tN SN
X w x
dt tn )
(t )ne 1 sin(4
tan 4SW que
f seN deben
de las funcin exponencial compleja
calcular durante el computo de
cos(4S tn )
N 1 n 1 2S kn
la T.D.F. (ver Ecuacin (3)).
j

1 x(n)e A(x , y)e

MN

X k
A u , v

M 1 N 1 N

n 0

A n , k e
X w
P f

j

2S ux 2S vy

M
N

x2S0kn
y 0
j
N

(9)

1
2G 2

N
n 1

x t  x .cos 2S f t  W
cos 2S f t  W



39

N
n 1

x t
s
n

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Para N = 4, el cdigo utilizado es:

N=4;
for k=1:N
for n=1:N
A(n,k)=cos(2*pi*(k-1)*(n-1)/N)-j*sin(2*pi*(k-1)*(n-1)/N);
end
end

Se obtiene la siguiente matriz:


1.0000

1.0000

1.0000

1.0000

1.0000

0.0000 1.0000i

1.0000 0.0000i

0.0000 + 1.0000i

1.0000

1.0000 0.0000i

1.0000 + 0.0000i

1.0000 0.0000i

1.0000

0.0000 + 1.0000i

1.0000 0.0000i

0.0000 1.0000i

Al tener la matriz A previamente calculada, se obtiene un ahorro de tiempo de


mquina invertido en la realizacin de 2*N2 operaciones trigonomtricas.
Como seal de prueba se utiliza la siguiente secuencia para x(n):

x(n) = [1

40

4]

Mtodo eficiente para el clculo de la Transformada de Fourier Discreta: La FFT matricial

La T.D.F. se calcula simplemente al realizar la multiplicacin entre la matriz A(n,k)


y el arreglo de datos x(n):

XF = x*A

XF = 10.0000

2.0000 + 2.0000i 2.0000 0.0000i 2.0000 2.0000i

El programa contiene un algoritmo implementado que genera una seal x(n) para
diferentes cantidades de muestras N = 100, 200, 300, 400, 500, 1000, 2000, 3000
y 4000 muestras. Este programa contabiliza el tiempo de duracin para ejecutar
la Transformada de Fourier FFT a travs del mtodo matricial y lo compara con el
mtodo de la DFT.
La Figura 20 ilustra los tiempos de cmputo invertidos para calcular la Transformada de Fourier por el mtodo DFT.

Figura 20. Tiempo de cmputo para clculo de la DFT.

41

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

La Figura 21, ilustra los tiempos de cmputo para calcular la Transformada de Fourier a travs del mtodo matricial. Se puede apreciar que los valores de tiempo
son muy inferiores a comparacin de los obtenidos a travs del mtodo de la DFT.

Figura 21. Tiempo de cmputo para clculo de la Transformada de Fourier


por medio del mtodo matricial.

42

Captulo 4

Clculo de la densidad espectral de


potencia para seales con muestreo
irregular: Mtodo de Lomb

43

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

44

a0
ak
ak

T
1  jkw0t
e
dt
T T

2sin kw0T1
kw0T

w0 2S F0
x(t )

ae

k N

lkw0t

x(t ) o ak
x(t  t0 ) o ak e  jkw0t0
x(t ) o ak
y(t ) o bk
x(t )  y(t ) o ak  bk
f

X w de
x(tFourier
)e  jZ t dt X(w) (ver Ecuacin (7)) es
Por medio de la Transformada continua
f
posible establecer una medida de la distribucin
del espectro por unidad de
2S kn
N 1
j
frecuencia, lo cual se denomina densidad
espectral
X k
x(n)e N de potencia (PSD). Ver Ecuacin (10).
n 0

A n , k e

j

2S kn
N

X w
2

(10)

2
N

1 n 1 xn tn  x .cos 2S f tn  W
f ha
determinado
N
A travs del teorema del muestreo,Pse
que
a partir
det un Wnmero 
2
2G 2
f
cos
2
S
n

n 1

de muestras de la seal x(t), adquiridas a un periodo


de muestreo
Ts y cumpliendo

N
el criterio de Nyquist se obtiene una serie de tiempo
x(n). Tomando estas muessin(4S tn )

n 1
tras, se puede estimar la PSD a travs
discreta de Fourier (ver
tande
4SWla Transformada
N
t
cos(4
S

n)
Ecuacin 8).
n 1
2S ux 2S vy
j

1 M 1 N 1
M
N
A
u
v
A
x
y
e
,
(
,
)

En algunas ocasiones no es posible tener muestras


de
la
seal
original
de manera
MN x 0 y 0

regular, por lo cual Lomb, en el ao de 1976, propone un mtodo de estimacin


de la densidad espectral de potencia de datos tomados en observaciones astronmicas. En este contexto, el autor plantea que no existe una garanta que
permita que las muestras adquiridas en estas observaciones sean tomadas a un
periodo regular.
El mtodo de Lomb toma un arreglo de datos xn(tn) el cual contiene las muestras
adquiridas para cada tiempo tn y procede calcular la densidad espectral de potencia para cada valor de frecuencia f como se observa en la Ecuacin (11).

45

n 1

X w

x(t)e

 jZ t

dt

y(t ) o bk
x(t )  y(t ) o ak  bk

f

N 1

j

2S kn
N

X k x(n)e
f
n 0
Series y Transformada
de Fourier para Seales
Continuas y Discretas en el Tiempo.
 jZ t
2S kn
X
w
x
t
e
dt
(
)
j


Algoritmos para
el
desarrollo
de
ejercicios
prcticos
A n , k e N
f

X w

x(n)e

j

2S kn
N

x t  x .cos 2S fn 0t 2SWkn x t  x .sin 2S f t  W



P f
j
(11)
cos 2AS fn , kt  We N
sin 2S f t  W

2
sin(4S t ) X w
tan 4SW
2
)
N
cos(4
ala a Nla varianza
de
los 2datos
x n(t
) y el
clculo
En la Ecuacin
(4), St2 corresponde
nW
x
t
x
f
t
.cos
S







xn tn  x .sin 2S


n
n
n
1
n 1
n 1

1
de
la
variable

se
realiza
a
travs
de
la
Ecuacin
(12).
P
f



N
N
2
A u , v
A(x , y)e
2G
MN
n 1 cos2 2S f tn  W
n 1 sin2 2S f tn

1
2G 2

N 1

X k

n 1

n 1

n 1

n 1

n 1
N

n 1

M 1 N 1

j

2S ux 2S vy

M
N

x 0y 0

tan 4SW

n 1
N
n

sin(4S tn )

cos(4S tn )
1

(12)

2S ux 2S vy
j

1
M
N
A
x
y
e
(
,
)

MN
0
Para entender la tcnica de Lomb se xha0 y diseado
un algoritmo contenido en el

A u , v

M 1 N 1

programa que se basa en la construccin de una seal discreta (N = 500 muestras)


compuesta por la suma de tres sinusoides de frecuencias conocidas (30Hz, 80Hz
y 120Hz) y con una frecuencia de muestreo Fs = 1000 s/seg, lo que garantiza que
cada una de sus muestras estn con una separacin de tiempo de Ts = 0.001 seg.

N=500;
Fs=1000;
Ts=1/Fs;
n=1:N;
f1=30;
f2=80;
f3=120;
x=cos(2*pi*f1*Ts*n)+cos(2*pi*f2*Ts*n)+cos(2*pi*f3*Ts*n);

La Figura 22 ilustra la seal de prueba en el dominio del tiempo.

46

Clculo de la densidad espectral de potencia para seales con muestreo irregular: Mtodo de Lomb

Figura 22. Seal de prueba, compuesta por la suma de tres sinusoides de frecuencias: 30Hz,
80Hz y 120Hz. Con frecuencia de muestreo Fs = 100Hz y cantidad de muestras N = 500.

A travs de la Transformada rpida de Fourier, es fcil estimar la densidad espectral de potencia de la seal de prueba. Como se puede ver en la Figura 23, la PSD
de la seal de prueba se representa a travs de tres impulsos ubicados en las respectivas frecuencias de cada componente sinusoidal.

Figura 23. PSD de la seal de prueba, compuesta por tres impulsos unitarios
ubicados en las frecuencias: 30Hz, 80Hz y 120Hz. Con frecuencia de muestreo
Fs = 100Hz y cantidad de muestras N = 500.
47

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

La seal de prueba es procesada a travs de un algoritmo diseado para extraer


aleatoriamente un porcentaje de muestras y simular un escenario de muestreo
irregular. El algoritmo diseado permite escoger el porcentaje de muestras que se
requiere extraer de la seal de prueba.

c=0;
for i=1:N
t(i)=c+Ts;
c=t(i);
end
c=round(rand(N,1));
x1=x.*c;
k=0;
for i=1:N
if x1(i)==0
x1(i)=x1(i);
else
k=k+1;
xr(k)=x1(i);
tr(k)=t(i);
end
end

El algoritmo desarrollado permite obtener una nueva seal xr(tn), la cual es una
versin con muestreo irregular. El arreglo de datos tr, contiene los valores de tiempo tn para cada muestra de la seal xr.

48

Clculo de la densidad espectral de potencia para seales con muestreo irregular: Mtodo de Lomb

La Figura 24 ilustra el resultado obtenido al realizar un proceso de muestreo irregular.

Figura 24. Seal con muestreo irregular.

Para poder aplicar la tcnica de Lomb, se debe calcular primero la varianza para
las muestras obtenidas:

xm=(1/N)*sum(xr);
var=(1/(N-1))*sum((xr-xm).^2);

Posteriormente se establece los valores de frecuencia (Hz) para los cuales se requiere calcular la PSD.

for h=1:N/2
f(h)=Fs*(h-1)/(N);
end

49

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Tambin es necesario enventanar los datos muestreados. Se utiliza una versin de


ventana para tiempos irregulares.
s=0;
for i=1:N
W2= 0.54+0.46*cos(2*pi*t(i)/t(N));
xr(i)=xr(i)*W2;
s=s+W2;
end

A continuacin se presenta el cdigo para calcular la PSD a travs de la tcnica de


Lomb:
NOR=N/(s*s);
R=length(f);
N=length(xr);
for r=1:R
c=0;
b=0;
Sh=0;
Ch=0;
S2=0;
C2=0;
for i=1:N
Sh=Sh+( (xr(i)-xm)*sin( 2*pi*f(r)*(tr(i)) ) );
Ch=Ch+((xr(i)-xm)*cos(2*pi*f(r)*(tr(i))));
S2=S2+sin(2*pi*f(r)*(tr(i)));
C2=C2+cos(2*pi*f(r)*(tr(i))) ;
end
tao=(atan(S2/C2))/(4*pi*w(r));
A=Ch*cos(2*pi*f(r)*tao)+Sh*sin(2*pi*f(r)*tao);
B=Sh*cos(2*pi*f(r)*tao)-Ch*sin(2*pi*f(r)*tao);
A2=(N/2)+0.5*C2*cos(4*pi*f(r)*tao)+0.5*S2*sin(4*pi*f(r)*tao);
B2=(N/2)-0.5*C2*cos(4*pi*f(r)*tao)-0.5*S2*sin(4*pi*f(r)*tao);
P(r)=NOR*(((A^2)/A2)+((B^2)/B2));
end
50

Clculo de la densidad espectral de potencia para seales con muestreo irregular: Mtodo de Lomb

figure
plot(w,P)
title(espectro de lomb(muestreo uniforme))
xlabel(Frecuencia)
ylabel(Magnitud)

La Figura 25, ilustra el resultado obtenido al calcular la PSD por medio del mtodo
de Lomb de las muestras tomadas irregularmente de la seal original.

Figura 25. PSD calculada por medio del mtodo de Lomb,


para muestras tomadas irregularmente.

51

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

52

Captulo 5

Promediado de espectros

53

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

54

Existen seales, cuyas caractersticas se pueden repetir en el tiempo y tambin


pueden ser apreciadas en el dominio de la frecuencia. A travs del promediado de
espectros, es posible determinar un espectro promedio de una seal con la finalidad de observar aquellas caractersticas que se repiten en el tiempo.
El objetivo de esta prctica es el anlisis de la seal de voz humana a travs del
promediado de espectros con la finalidad de realizar comparaciones con el clculo
del espectro de una seal.
El primer paso es cargar la seal de voz de prueba con frecuencia de muestreo
igual a 44100 Hz, la cual se aloja en el archivo de datos sonido.mat. La seal de
voz se puede generar pidiendo a una persona que repita consecutivamente una
misma vocal un nmero de veces. Si una persona repite una vocal cada segundo,
es posible obtener una cantidad de 28000 muestras para cada repeticin.

A1=load sonido;
a1=A1.sonido.
plot(a1)

55

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

La Figura 26 ilustra la seal de voz importada en el dominio del tiempo.

Figura 26. Seal de voz.

Posteriormente se procede a realizar el proceso de enventando y estimacin de la


magnitud del espectro (ver Figura 27).

N=length(a1);
k=1:N/2;
F=(k-1)*44100/N;
a1f=abs(fft(a1.*(hamming(N))));
plot(F,a1f(1:N/2));

56

Promediado de espectros

Figura 27. Magnitud del espectro de la seal de voz.

Para la realizacin del promediado de espectros, se debe ejecutar un proceso de


segmentado de la seal. Cada segmento debe contener la misma cantidad de
muestras. En este caso se supone que la muestra de inicio para cada vocal es:
15000, 54000, 132000 y 170000.

ma1=a1(15000:15000+27999);
L=length(ma1);
ma2=a1(54000:54000+27999);
ma3=a1(132000:132000+27999);
ma4=a1(170000:170000+27999);

57

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

La Figura 28 ilustra el proceso de segmentado de la seal.

Figura 28. Segmentado de la seal.

Despus del proceso de segmentado, se deben enventanar cada uno y realizar el


clculo de la magnitud del espectro de frecuencia (ver Figura 29).

W=hamming(L);
ma1w=ma1.*W;
ma2w=ma2.*W;
ma3w=ma3.*W;
ma4w=ma4.*W;
ma1f=abs(fft(ma1w));
ma2f=abs(fft(ma2w));
ma3f=abs(fft(ma3w));
ma4f=abs(fft(ma4w));

58

Promediado de espectros

Figura 29. Espectros en magnitud de cada segmento.

El paso final es realizar el promedio de cada espectro de frecuencia en magnitud.

maf= (ma1f + ma2f + ma3f + ma4f)/4;


figure
plot(f,maf(1:3000))
title(Espectro promedio vocal a)

59

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

La Figura 30 ilustra el resultado y es de gran importancia compararlo con el espectro obtenido en la Figura 29 y observar los rizados en cada versin del espectro.

Figura 30. Promedio del espectro.

El resultado ilustrado en la Figura 30 evidencia la ventaja del promediado de espectros. Se pueden detallar los diferentes picos en magnitud del espectro con una
gran disminucin del contenido de rizados.

60

Captulo 6

Manipulacin del espectro


de una seal unidimensional

61

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

62

El espectro en frecuencia de una seal discreta x(n), contiene informacin importante que modela el comportamiento en el dominio del tiempo. El espectro lo podemos dividir en dos grandes bandas: bajas frecuencia y altas frecuencia. En esta
prctica se realiza un proceso de manipulacin en el espectro de una seal discreta
x(n) con la finalidad de poder diferenciar el aporte en el dominio del tiempo de
cada una de las bandas.
Se ha desarrollado un cdigo contenido en el siguiente programa, en el cual se
ejecuta la accin de tomar una seal sinusoidal y verificar los efectos causados al
eliminar componentes en el dominio de la frecuencia.
En esta prctica se toma una seal de muestra con componentes espectrales conocidas.

N=500;
n=1:N;
Fs=500;
Ts=1/Fs;
x=cos(2*pi*10*n*Ts)+ cos(2*pi*20*n*Ts)+ cos(2*pi*30*n*Ts)+
cos(2*pi*100*n*Ts)+ cos(2*pi*150*n*Ts)+ cos(2*pi*200*n*Ts);

En la Figura 31 se aprecia la seal de prueba.

63

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Figura 31. Seal de prueba x(n).

Posteriormente se calcula y se grafica (en magnitud) su espectro a travs de la


herramienta para la Transformada rpida de Fourier (ver Figura 32).

xf=(fft(x));
k=1:N/2;
f=(k-1)*Fs/N;

Figura 32. Espectro en frecuencia de la seal x(n).


64

Manipulacin del espectro de una seal unidimensional

Despus se toma el espectro de la seal de prueba y se almacena en la variable


x1f y se procede a eliminar las altas frecuencias, generando un efecto pasa bajos.

xf1=xf;
xf1(50:449)=0;

Con el espectro modificado se recupera la seal x2 a travs de la herramienta para


la Transformada inversa de Fourier. El resultado del efecto pasa bajos se ilustra en
la Figura 33.

Figura 33. Seal con efecto pasa bajos.

x2=real(ifft(xf1));

Si se desea lograr un efecto pasa altos se pueden eliminar las bajas frecuencias
(ver Figura 34).

xf1(1:201)=0;
xf1(801:N)=0;
65

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Figura 34. Seal con efecto pasa altos.

66

Captulo 7

Transformada Cepstrum

67

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

68

El Cesptrum de la seal es una aplicacin especial de la Transformada de Fourier.


Se calcular a partir del logaritmo de la densidad espectral de potencia de una seal
y que posteriormente se le calcula nuevamente su Transformada de Fourier.
En esta prctica de laboratorio se realiza una aplicacin del cepstrum de una seal aplicado a un ejercicio de simulacin del eco. El programa contiene el cdigo
para la elaboracin de una aplicacin que ilustra el funcionamiento del clculo del
cesptrum.
El primer paso a seguir es cargar el tramo de voz almacenado el archivo de datos.

A1=load sonido;
Fs=44100;
Ts=1/Fs;
a1=A1.andreaa;

El segundo paso consiste en tomar un segmento de la seal que contenga la primera realizacin de la vocal a (ver Figura 35).

ma1=a1(15000: 15000 + 27999);

69

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Figura 35. Segmento de seal de voz que representa


la pronunciacin de la vocal a.

Posteriormente se debe generar un arreglo que permita obtener una reproduccin


de la vocal, emulando la accin repetitiva del eco (ver Figura 36).

c=zeros(1,1000);
x1=[ma1 c ma1 c ma1 c];
N=length(x1);
x1=x1/max(x1);
t=(1:N)/44100;
figure
plot(t,x1)

70

Transformada Cepstrum

Figura 36. Repeticiones del segmento de voz, emulando un eco.

Tomando la seal que contiene las repeticiones, se le aplica el Cepstrum con las
siguientes lneas de instruccin.

c = cceps(x1);
figure
plot(t,c)

En la Figura 37, se observa el resultado obtenido, se puede notar que en el eje del
tiempo se evidencias unos picos, los cuales indican el comienzo de una repeticin.

71

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Figura 37. Coefientes Cepstrum de la seal que contiene un eco emulado.

En la Figura 38 se realiza de forma grfica la superposicin de la seal con repeticiones y el Cepstrum.

c=c/max(c);
figure
plot(t,x1,t,c)
xlabel(Tiempo(Seg))
legend(Seal de voz, Coeficientes Cepstrum)

Figura 38. Coeficientes Cepstrum indicando cuando empieza


cada repeticin de la seal de la voz.
72

Captulo 8

Introduccin a la Transformada
Wavelet continua

73

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

74

El objetivo de esta prctica es el desarrollo de una aplicacin para la generacin


de una familia de ondaletas y estudiar una seal continua en el tiempo con componentes espectrales conocidas.
El primer paso es generar una seal basada en suma se senosoidales.

Ts=0.01;
Fs=1/Ts;
t=-10:Ts:10;
x=cos(2*pi*1*t)+cos(2*pi*1.5*t)+cos(2*pi*2*t);
subplot(2,1,1)
plot(t,x)

En la Figura 39, se ilustra la seal de prueba en el dominio del tiempo.

75

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Figura 39. Seal de prueba conformada por una sumatoria de sinusoidales.

El siguiente paso es generar una familia de ondeletas. Para este ejemplo se utiliza
la ondaleta Sombrero mxicano (ver Figura 40).

L=length(t);
f=0.01:0.05:5;
N=length(f);
for u=1:N
ta=t/f(u);
mex(u,:)=((pi^(0.25))/sqrt(3))*(1-ta.*ta).*exp(-ta.*ta/2);
end
figure
mesh(t,f,mex)

76

Introduccin a la Transformada Wavelet continua

Figura 40. Ondaleta Sombrero Mexicano.

El ltimo paso es aplicar cada una de las ondaletas a la seal de prueba.

for u=1:N
TW(u,:)=filter(mex(u,:),1,x);
end
figure
t=-10:Ts:10;
mesh(t,f,TW)

La Figura 41 ilustra el resultado obtenido.

77

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Figura 41. Anlisis de la seal de prueba a travs de la Transformada Wavelet continua.

78

Captulo 9

Aplicacin de la Transformada Wavelet


continua en seales de voz

79

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

80

El objetivo de esta prctica es el desarrollo de una aplicacin para la generacin


de una familia de ondaletas con la finalidad de identificar patrones dentro de una
seal de voz.
El primer paso es importar un archivo de voz humano y realizar un proceso de
diezmado, para obtener menos muestras.

Fs=44100;
Ts=1/Fs;
A1=load sonido;
ma1=A1.andreaa;
x1=ma1(15000: 15000 + 27999);
xa=decimate(x1,5);
x=xa(1:4000);
Fs=8000;

81

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

La Figura 42 ilustra la seal de prueba.

Figura 42. Seal de Voz de prueba.

El segundo paso es crear la familia de ondaletas. Para este caso se utiliza Morlet.

t=-2:Ts:2;
L=length(t);
f=0.1:1:10;
N=length(f);
for u=1:N
ta=t/f(u);
mor(u,:)=(exp(-(ta.*ta)/2)).*cos(5*ta);
end
figure
mesh(t,f,mor)

82

Aplicacin de la Transformada Wavelet continua en seales de voz

La Figura 43 ilustra la familia de ondaletas para el caso Morlet.

Figura 43. Ondaleta Morlet en el dominio del tiempo y frecuencia.

Por ltimo se aplica cada ondaleta a la seal de voz, obteniendo el resultado ilustrado en la Figura 44.

for u=1:N
TW(u,:)=filter(mor(u,:),1,x);
end
figure
t=(1:4000)/Fs;
mesh(t,f,TW)

83

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Figura 44. Resultado obtenido despus de analizar la seal de voz a travs


de la Transformada Wavelet usando la ondaleta Morlet.

84

Captulo 10

Espectro de una seal discreta


bidimensional

85

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

86

x(t  t0 ) o ak e  jkw0t0
x(t ) o ak
y(t ) o bk
x(t )  y(t ) o ak  bk
f

X w

x(t)e

 jZ t

dt

f

N 1

x(n)e

X k

2S kn
N

n 0

A n , k e
X w

j

j

2S kn
N

2
N
N

n 1 xn tn  x .sin 2
1 n 1 xn tn  x .cos 2S f tn  W
P f

N
N
2
2G 2
f
t
cos
2
S
W
sin2 2S f




n
n 1
n 1

Para el caso de una seal discreta bidimensional A(x,y), se expresa su Transforma-

N
da Discreta de Fourier de la siguiente
manera:
sin(4S tn )

n 1
tan 4SW
N
n 1 cos(4S tn )

A u , v

2S ux 2S vy
j

1 M 1 N 1
M
N
A
x
y
e
(
,
)

MN x 0 y 0

(13)

El programa contiene el cdigo de un sencillo ejercicio que permite tener un rpido entendimiento de las propiedades bsicas de la Transformada De Fourier bidimensional.
Para demostrar cmo se representa una seal sinusoidal bidimensional, se implementa el siguiente cdigo para generar una matriz que contiene variaciones de
intensidad entre 0 y 255.

N=200;
n=1:N;
x=128*cos(2*pi*10*n*0.01);
x=uint8(x+128);
for i=1:N
A(i,:)=x;
end
mesh(double(A))
figure
imshow(A)
87

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

En la Figura 45 se puede apreciar la funcin bidimensional (representada con el


comando mesh). Se puede apreciar que es una funcin que depende de los ejes x
y y, la amplitud varia de manera sinusoidal.

Figura 45. Funcin sinusoidal bidimensional.

Las funciones bidimensionales, tambin pueden describir una imagen monocromtica,


donde la intensidad mnima es de valor 0 y su mxima intensidad es 255. La Figura 46
ilustra esta funcin representada como una imagen (se utiliza el comando imshow).

Figura 46. Funcin sinusoidal representada como una imagen monocromtica.


88

Espectro de una seal discreta bidimensional

A travs de las siguientes lneas de cdigo, se pude calcular y representar grficamente la magnitud de la Transformada de Fourier bidimensional.

AF=fftshift(abs(fft2(double(A))));
figure
mesh((AF))
figure
imshow(uint8(AF))

La Figura 47 ilustra el resultado obtenido al calcular la magnitud de la Transformada de Fourier bidimensional de la funcin bajo estudio.

Figura 47. Magnitud de la Transformada de Fourier Bidimensional.

Como se pudo apreciar en la Figura 47, se obtienen dos funciones impulso unitario
simtricamente ubicadas en el eje horizontal. Este resultado es similar al obtenido
de la magnitud de la Transformada de Fourier para una seal sinusoidal discreta
unidimensional.

89

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

A travs del siguiente cdigo, se puede representar la misma funcin sinusoidal


bidimensional oscilando a travs del eje vertical.

for i=1:N
B(:,i)=x;
end
figure
mesh(double(B))
figure
imshow(B)

La Figura 48 ilustra la nueva seal sinusoidal generada.

Figura 48. Funcin sinusoidal bidimensional travs del eje y.

90

Espectro de una seal discreta bidimensional

Utilizando las lneas de cdigo para representar la Transformada de Fourier bidimensional, se procede a calcular la magnitud de esta transformacin.

BF=fftshift(abs(fft2(double(B))));
figure
mesh((BF))
figure
imshow(uint8(BF))

La Figura 49 ilustra el resultado obtenido al calcular la magnitud de la Transformada de Fourier bidimensional para la seal sinusoidal a travs del eje y.

Figura 49. Magnitud de la Transformada de Fourier bidimensional (funcin rotada).

91

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

92

Captulo 11

Manipulacin del espectro


de una seal discreta bidimensional

93

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

94

En esta seccin se manipula el espectro de una seal bidimensional, para la cual


en nuestro contexto se denomina una imagen digital.
El primer paso es generar una funcin bidimensional A(x,y), la cual tendr un parecido a un tablero de ajedrez.

A=ones(200,200);
A(1:50,1:50)=0;
A(1:50,100:150)=0;
A(100:150,1:50)=0;
A(50:100,50:100)=0.4;

La Figura 50 ilustra la funcin bidimensional A(x,y).

Figura 50. Funcin bidimensional A(x,y).


95

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

El segundo paso es generar una mscara a travs de funciones de Butterworth de


la misma dimensin de la funcin A(x,y). Esta mscara tendr dos versiones: una
para bajos y la otra ser una para lograr el efecto pasa altos.

[a,b]=size(A);
for i=1:a
for j=1:b
D(i,j)=(((i-(a/2))^2)+((j-(b/2))^2))^(0.5);
end
end
Do=10;
n=4;
for i=1:a
for j=1:b
d=D(i,j);
Hpb(i,j)= 1 / (1+ (d/Do)^(2*n) );
%pasa bajos
Hpa(i,j)= 1 / (1+ (Do/d)^(2*n) );
%pasa altos
end
end

96

Manipulacin del espectro de una seal discreta bidimensional

En la Figura 51 se ilustran las dos mscaras obtenidas.

Figura 51. Mscara para efecto pasa bajos y para efecto pasa altos.

El tercer paso es calcular la Transformada bidimensional de Fourier para la funcin


A(x,y) (verer Figura 52).

AF=(fft2(double(A)));

Figura 52. Magnitud del espectro de la funcin A(x,y).


97

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Posteriormente se procede a organizar los datos para que estn centrados en el


mismo centro geomtrico de la mscara H(u,v).

AF2=fftshift(AF);

Y se procede a aplicar la mscara pasa bajos.

AG=AF2.*Hpa;

El espectro del resultado de la aplicacin de la mscara pasa bajos es ilustra en la


Figura 43.

Figura 43. Magnitud del espectro de la funcin A(x,y)


despus de la aplicacin de la mscara pasa bajos.

98

Manipulacin del espectro de una seal discreta bidimensional

El siguiente paso es volver a organizar el espectro y obtener la nueva funcin en


el dominio del espacio A2(x,y) por medio de la Transformada inversa de Fourier
bidimensional.

AG=fftshift(AG);
A2=ifft2(AG);
figure
imshow(A2)

La Figura 54 ilustra el resultado obtenido en el dominio del espacio.

Figura 54. Resultado en el dominio espacial de la aplicacin de la mscara pasa bajos.

Este mtodo tambin es pertinente en el uso de la mscara pasa altos. En la Figura 55


se ilustra en dominio de la frecuencia la magnitud del espectro de la funcin A(x,y)
despus de ser multiplicada por la mscara pasa altos.
En la Figura 56, se ilustra en el dominio del espacio el resultado de minimizar las
bajas frecuencia de la funcin A(x,y).

99

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Figura 55. Magnitud del espectro de la funcin A(x,y)


despus de la aplicacin de la mscara pasa altos.

Figura 56. Resultado en el dominio espacial de la aplicacin de la mscara pasa altos.

100

Bibliografa

La teora utilizada en este texto ha sido basada en escritos que son listados a continuacin.

Transformada de Fourier
Oppenheim Alan, Willsky Alan. Seales y Sistemas. Prentice Hall. Mxico 2011.
Proakis John, Manolakis DImitris. Tratamiento Digital de Seales. Pearson. Espaa 2010.
Mitra Sanjit. Procesamiento Digital de Seales Digitales. Mc Graw Hill. Espaa 2008.
William T. Vetterling. Numerical Recipes 3rd Edition. Cambridge University Press 2007.

Seales Bidimensionales
Gonzlez Rafael. Woods Richard. Digital Image Processing. 2007.
Pajares Gonzalo. De la cruz Jess. Visin por Computador. Alfaomega Ra-MA.
Espaa 2002.
Gonzlez Javier y Montenegro Davis. Anlisis de Texturas a Travs del Procesamiento Digital de Imgenes. Ediciones USTA. Colombia, 2013.
101

Series y Transformada de Fourier para Seales Continuas y Discretas en el Tiempo.


Algoritmos para el desarrollo de ejercicios prcticos

Voz humana
Faundez Zanuy Marcos. Tratamiento Digital de Voz e Imagen. Alfaomega Marcomobo. Mxico 2001.

Transformada Wavelet
Montenegro Davis. Procesamiento digital de perturbaciones de calidad de potencia elctrica. Ediciones USTA. Colombia, 2013.

Algoritmo de la Tcnica de Lomb


Press William. Numerical Recipies in C: The Art of Scientific Computing. Ed. Cambridge USA 2002.

102