Professional Documents
Culture Documents
ISBN: 978-84-944229-6-6
DOI: http://dx.doi.org/10.3926/oss.23
OmniaScience (Omnia Publisher SL) 2015
Diseo de cubierta: OmniaScience
Dibujo cubierta: 3d-function-6: Martin Thoma CC-BY 3.0 y Abstrakt wellen
bewegung: bittedankeschn - Fotolia.com
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
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
Introduccin
10
Contenido
Captulo 1
11
12
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
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
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
(
)
wn , 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 11cos(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 , v2GP f1
A
x
y
e
(
,
)
2NS f Nt2n 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
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
Pf
N
N
2
2G 2
15
f
t
cos
2
S
W
n 1
n 1 si
n
N
n 1
sin(4S tn )
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
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
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
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
kw0Ty1aDiscretas
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 1fxxn 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
Pf
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
20
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
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
Figura 11. Seal z(t) creada a partir de la reconstruccin de los coeficientes ck = ak + bk.
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
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
25
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
27
28
Contenido
Captulo 2
La Transformada de Fourier.
Mtodo computacional
29
30
Ts=0.001;
C=100E-6;
R=1000;
tao=1/(R*C);
t=0:Ts:5;
x=exp(-tao*t);
31
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
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
34
35
36
Contenido
Captulo 3
37
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(twt0 )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 AlanEcuacin
(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
PAyuf(,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
MN
X k
A u , v
M 1 N 1 N
n 0
A n , k e
X w
Pf
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
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
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
x(n) = [1
40
4]
XF = x*A
XF = 10.0000
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.
41
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.
42
Contenido
Captulo 4
43
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
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
4SWlaTransformada
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
,
(
,
)
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
2
sin(4S t ) X w
tan 4SW
2
)
N
cos(4
ala a Nla varianza
de
los 2datos
xn(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
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);
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
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
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
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.
51
52
Contenido
Captulo 5
Promediado de espectros
53
54
A1=load sonido;
a1=A1.sonido.
plot(a1)
55
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
ma1=a1(15000:15000+27999);
L=length(ma1);
ma2=a1(54000:54000+27999);
ma3=a1(132000:132000+27999);
ma4=a1(170000:170000+27999);
57
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
59
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.
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
Contenido
Captulo 6
61
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);
63
xf=(fft(x));
k=1:N/2;
f=(k-1)*Fs/N;
xf1=xf;
xf1(50:449)=0;
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
66
Contenido
Captulo 7
Transformada Cepstrum
67
68
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).
69
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
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
c=c/max(c);
figure
plot(t,x1,t,c)
xlabel(Tiempo(Seg))
legend(Seal de voz, Coeficientes Cepstrum)
Contenido
Captulo 8
Introduccin a la Transformada
Wavelet continua
73
74
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)
75
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
for u=1:N
TW(u,:)=filter(mex(u,:),1,x);
end
figure
t=-10:Ts:10;
mesh(t,f,TW)
77
78
Contenido
Captulo 9
79
80
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
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
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
84
Contenido
Captulo 10
85
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
Pf
N
N
2
2G 2
f
t
cos
2
S
W
sin2 2S f
n
n 1
n 1
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
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.
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
for i=1:N
B(:,i)=x;
end
figure
mesh(double(B))
figure
imshow(B)
90
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.
91
92
Contenido
Captulo 11
93
94
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;
[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
Figura 51. Mscara para efecto pasa bajos y para efecto pasa altos.
AF=(fft2(double(A)));
AF2=fftshift(AF);
AG=AF2.*Hpa;
98
AG=fftshift(AG);
A2=ifft2(AG);
figure
imshow(A2)
99
100
Contenido
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
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.
102