Está en la página 1de 52

1.

INTRODUCCION
La nocin de seal es bastante amplia y aparece en
diferentes situaciones en las cuales ciertas cantidades
varan en el tiempo o el espacio de una magnitud fsica
o de otra naturaleza. Por tanto est ligada al concepto de
funcin.

El Procesamiento de Seales es una disciplina de las


ciencias de la Ingeniera que desarrolla las tcnicas de
procesamiento, anlisis e interpretacin de seales.
Entre las operaciones posibles con las seales tenemos
control, filtrado, compresin de datos, deconvolucin,
prediccin, etc.

Se pueden procesar seales analgicas (representadas


por funciones continuas) o seales digitales (dadas por
funciones discretas). En el procesamiento de seales
existen diferentes ramas dependiendo de la naturaleza
de las seales consideradas (audio, voz, imagen, video).
El procesamiento de seales puede tener diferentes
objetivos: deteccin de una seal, estimacin de los
valores de una seal, codificacin, compresin para su
almacenamiento y transmisin. Sus aplicaciones son
amplias en telecomunicaciones, audio, video, imagen
(mdica, satelital), geofsica.

La Teora de Seales es la rama matemtica que estudia


las seales y los sistemas que los transmiten e involucra
herramientas del Anlisis armnico (generalizacin del
Anlisis de Fourier), de los espacios vectoriales, de los
procesos estocsticos, entre otras.

En este documento se presentan algunos elementos del


Anlisis de Fourier relacionados con el estudio y
procesamiento de seales. Dos son los instrumentos
fundamentales: las series de Fourier (que permiten la
representacin de una seal como superposicin de
ondas de base llamadas armnicos) y la transformada de
Fourier, tanto en su versin continua como en su versin
discreta.

En la seccin 2 se aborda los conceptos bsicos


relativos a las seales. En las dos siguientes secciones
se tratan las series de Fourier y las transformadas de
Fourier, respectivamente. La
funcin delta de Dirac es el tema de la quinta parte.
Enseguida se aborda la transformada discreta de Fourier
y la transformada . La seccin 7 concierne a ciertas
operaciones del procesamiento de seales en los cuales
se aplica el Anlisis de Fourier (espectro, filtros,
muestreo)

2. CONCEPTOS BASICOS
2.1 . Definicin de seal

Utilizaremos como definicin de seal: la variacin en


el tiempo o el espacio de una magnitud fsica o de otra
naturaleza.

Por ejemplo:

La intensidad de la corriente elctrica


El nivel de gris de los puntos de una imagen
Un electrocardiograma
Un sonido
La evolucin del ndice de la bolsa de valores

La representacin matemtica (el modelo matemtico)


de una seal corresponde a la nocin de funcin (de una
o varias variables: tiempo, espacio, etc.). Sin embargo
las distribuciones (o funciones generalizadas)
constituyen un modelo ms general y satisfactorio.

2.2 Tipos de seales


Las seales que representaremos por y=f ( x) ,
donde t es la variable independiente, y la variable
dependiente, admiten diferentes caracterizaciones:
Segn la presencia o no de elementos
probabilsticos:
Estocstica
Segn la variable independiente
Continua (Analgica) si la variable es
continua

>
>
>
>

Discreta (Digital) si solo est definida para


ciertos valores determinados:
Determinstica (consideradas en este documento

En muchos casos una seal discreta se obtiene por


discretizacin de una seal analgica, generalmente
mediante un convertidor, pero algunas seales son
discretas por su propia naturaleza: edades de una
poblacin, estado en el tiempo de una vlvula (abierto o
cerrado), etc.
c) Segn la periodicidad

Peridica si se repite cada cierto intervalo de la


variable independiente, dicho intervalo se dice
perodo:

f ( t +mT )= y ( t ) , m Z , t R

No peridica en el caso contrario

es una medida
La frecuencia
para indicar el nmero de repeticiones
de cualquier fenmeno o suceso
peridico en la unidad de tiempo, por
tanto

1
T

Segn la exactitud de los valores

Exacta si los valores de la seal (funcin)


sean reales o complejos se consideran
exactos (precisin infinita)

Aproximada los valores son aproximados, por


ejemplo
para
poder
utilizarlos
computacionalmente. La operacin de
aproximacin de valores exactos se dice
cuantificacin

Evidentemente una seal puede combinar varios de


estos atributos, los mismos que sern tomados en cuenta
para su procesamiento.
Algunas seales elementales
a) Escaln unitario de Heaviside

Esta seal se denota por

u (t)

y se define por

u ( t ) = 1 sit >0
0 sit <0
La funcin no est definida en t=0 y modela el
establecimiento instantneo de un rgimen constante,
por ejemplo la seal obtenida al cerrar un interruptor en
un instante dado y mantenerlo cerrado indefinidamente.
Tambin se le nota por

H (t ) . Para tener simetra a

veces se le asigna

H ( 0 )=1/2

el valor

b) Seal rectangular

Es la seal, notada

r a ( t ) = 1 si|t |> a
0 si|t|< a

r a (t )

, definida por

Donde

a>0 dado.

c) Seal sinusoidal pura (o monocromtica)

Se representa mediante

x ( t )=asen (t +) donde

|a|=max|x ( t )| es la amplitud
es el pulso o velocidad angular
T=

1
T

es el (ms pequeo) perodo

es la frecuencia (nmero de veces que este

fenmeno peridico se repite por unidad de tiempo)

t + es el ngulo de fase
es la fase inicial (cuando t=0)
(Ms til que conocer el ngulo de fase es el desfase o
diferencia de fase entre dos instantes)
Aunque los valores de una seal son, en principio,
nmeros reales y la frecuencia un nmero positivo, por

comodidad se utiliza una funcin con valores complejos

z ( t )=a ei (wt +) lo que da


1
x ( t )= ( z ( t ) ) = ( z ( t ) + z (t ) )
2
Hay que observar que el coseno o cualquier
combinacin lineal de seno y de coseno con la misma
frecuencia se pueden transformar en una sinusoide
simple y viceversa:

cos ( t )+ sen ( t )=acos ( t+)


Con

a = +

=arctan

Otra representacin posible para la sinusoide es

x ( t )=acos ( t+ )

SERIES DE FOURIER
Fue el matemtico francs Joseph Fourier, a principios
del siglo XIX, quien encontr que una funcin peridica

se puede representar como una suma infinita ponderada


de trminos en senos y cosenos (la serie de Fourier),
mientras que en el caso de funciones no peridicas la
representacin se da por medio de una integral (la
transformada de Fourier).

Esto dio origen al Anlisis Armnico, rama de la


Matemtica que estudia la representacin de funciones o
seales como superposicin de ondas de base (los
armnicos). En el caso de las series de Fourier estos son
sinusoidales y por tanto las series son trigonomtricas.

A partir de la segunda mitad del siglo XIX se aplica esta


teora a datos de fenmenos relacionados con el sonido,
la imagen, el clima, la mecnica cuntica o las
neurociencias.

Existen tambin versiones discretas de la serie y de la


transformada de Fourier.
3.1. Polinomios trigonomtricos
Una funcin
si

f se dice peridica de perodo

T >0

t R f ( t +T )=f (t)
La funcin

e n ( t )=e2 int / T es peridica con

periodo T para cualquier entero n, y lo mismo la

funcin

p ( t )=

n=N

cn e

2 int /T

que

se

denomina polinomio trigonomtrico de grado


inferior o igual a N

[ cn e

2 int /T

2 int /T

+ cn e

Este polinomio

p ( t ) =c 0+
n=1

puede escribirse como combinacin lineal de


senos y cosenos:

( 2Tt )+b
2 t
[ sen (
]
T )

an cos

1
p (t )= a0 +
2
n=1
Donde si

n0

an=c n +c n
bn=i(c n cn)

E inversamente

c n=(anib n )/2
cn=(an +ib n)/2

3.2. Series de Fourier


Un contexto matemtico adecuado para desarrollar el
Anlisis de Fourier es el de los espacios de Hilbert
(espacios vectoriales normados, cuya norma proviene de
un producto escalar y completos). Aqu trabajaremos en
el espacio de las funciones continuas por tramos.
Una funcin
intervalo

es continua por tramos en un


si

admite un nmero finito de discontinuidades de salto.


Evidentemente, una funcin continua en un intervalo es
continua por tramos en

Funcin continua por tramos

Sea . Con las operaciones usuales de funciones es un


espacio vectorial. Si
definimos
condicin de producto escalar

sucede que no cumple con la


(basta tomar una

funcin que sea nula en salvo en un nmero finito de


puntos)
Para evitar este problema debemos tomar el espacio de
las clases de
equivalencias de la funciones de

, donde la relacin de

equivalencia se define por


es un espacio vectorial euclidiano (dotado de producto
escalar). Para simplificar el lenguaje y la notacin
trataremos a estos vectores (colecciones de funciones)
como si fueran funciones ordinarias utilizando un
representante de la clase de equivalencia.
En el marco de los espacios de Hilbert se trabaja en , el
espacio de las funciones de cuadrado integrable en el
sentido de Lebesgue. Aqu se identifican dos funciones
si coinciden casi en todas partes (salvo en un conjunto
de medida nula). Este espacio es el completado del
espacio de las funciones de cuadrado integrable en el
sentido de Riemann.
3.2.1 Definicin.

. Este

Se llama serie de Fourier a la sucesin de sumas


parciales (de polinomios trigonomtricos) en forma
compleja o en forma real
Otra representacin se obtiene a partir del armnico
(sinusoide)

Siendo estas representaciones equivalentes, su uso


depender de las aplicaciones
En todo punto donde la serie converge se notar
su suma

Evidentemente, si la funcin

existe tendr perodo

3.2.2. Representacin en serie de Fourier de una funcin


El problema de descomponer

una funcin dada

en serie de

Fourier no siempre tiene respuesta positiva.


Ahora supongamos que una funcin
expresar como serie de Fourier, es decir que

con perodo

se puede

Entonces integrando ambos miembros de la igualdad en


el intervalo y usando las propiedades de
ortogonalidad de las
funciones seno y coseno se obtiene los coeficientes de
Fourier

mientras que

11

Se puede remplazar el intervalo simtrico


por
cualquier otro intervalo de la forma
Para precisar mejor la diferencia entre la funcin y la
serie de Fourier que se le asocia se usa la notacin

donde los coeficientes estn dados por las frmulas


anteriores.
En efecto puede suceder que para ciertas funciones
los coeficientes no existan y por tanto tampoco la
serie de Fourier, o que la serie exista y sea divergente
o que aunque sea convergente no lo haga hacia la
funcin.
Se define una funcin

es suave por tramos

si tanto la funcin como primera derivada


por tramos en . Tambin se dice que es de clase

Transformada Rpida de Fourier


FFT es la abreviatura usual (del ingls Fast
Fourier Transform) de un eficiente algoritmo
que permite calcular la transformada de
Fourier discreta (DFT) y su inversa. La FFT es
de gran importancia en una amplia variedad
de aplicaciones, desde el tratamiento digital
de seales y filtrado digital en general a la

en un intervalo
son continuas
por tramos.

resolucin de ecuaciones en derivadas


parciales o los algoritmos de multiplicacin
rpida de grandes enteros. El algoritmo
pone algunas limitaciones en la seal y en el
espectro resultante. Por ejemplo: la seal de
la que se tomaron muestras y que se va a
transformar debe consistir de un nmero de
muestras igual a una potencia de dos. La
mayora de los analizadores TRF permiten la
transformacin de 512, 1024, 2048 o 4096
muestras. El rango de frecuencias cubierto
por el anlisis TRF depende de la cantidad
de muestras recogidas y de la proporcin de
muestreo.
Uno de los algoritmos aritmticos ms
ampliamente utilizados es la transformada
rpida de Fourier, un medio eficaz de
ejecutar un clculo matemtico bsico y de
frecuente empleo. La transformada rpida
de Fourier es de importancia fundamental en
el anlisis matemtico y ha sido objeto de
numerosos estudios. La aparicin de un
algoritmo eficaz para esta operacin fue una
piedra angular en la historia de la
informtica.
Las aplicaciones de la transformada rpida
de Fourier son mltiples. Es la base de
muchas operaciones fundamentales del
procesamiento de seales, donde tiene
amplia utilizacin. Adems, proporciona un
medio oportuno para mejorar el rendimiento

de los algoritmos para un conjunto de


problemas aritmticos comunes.

En MATLAB
Las frmulas con la que MATLAB calcula la
transformada rpida de Fourier Y=fft(x) y la
transformada
inversa
y=ifft(X)
son,
respectivamente:

N =exp

X ( k )= x ( j ) (Nj1 )( k1)

( 2Ni ) x ( j )= 1

j=1
N

x ( k ) N( j1) (k1 )

N
k=1

La transformada rpida de Fourier FFT es un


algoritmo que reduce el tiempo de clculo
de

pasos

n log 2 (n) .

El

nico

requisito es que el nmero de puntos en la


serie tiene que ser una potencia de 2 ( 2

puntos), por ejemplo 32, 1024, 4096, etc.

Supongamos que tenemos una seal


descrita por un conjunto de n (potencia de
dos) pares de datos (tj,xj) igualmente
espaciados en el tiempo, por un intervalo t,
desde t=0 hasta tfinal=(n-1)t. La inversa
del intervalo t, se denomina frecuencia de
muestreo fs. De modo que el vector de
tiempos es t=(0:n-1)/ fs
La funcin fft de MATLAB convierte un vector
de valores de la seal x en funcin del

tiempo t en un vector g en funcin de la


frecuencia .
g=fft(x)
g es un vector cuyos elementos son
nmeros
complejos
por
que
guarda
informacin acerca de de la amplitud y de la
fase. Ahora tenemos que asociar cada
elemento del vector g con una frecuencia,
del mismo modo que hemos asociado cada
elemento del vector x con un tiempo.
El intervalo de frecuencias es =2/
(nt)=2 fs/n de modo que la mnima
frecuencia es 0 y la mxima max=2 fs(n1)/n. La resolucin espectral es
inversamente proporcional al tiempo total
nt de recogida de datos en la serie
temporal.
Conocido el intervalo de tiempo t o la
frecuencia de muestreo t=1/fsy el nmero
de pares de datos n (potencia de 2),
creamos el vector de tiempos t y el vector
de frecuencias angulares del siguiente
modo:
>>
>>
>>
>>

n=length(x);
t=(0:n-1)*dt;
dw=2*pi/(n*dt);
w=(0:n-1)*dw;

Podemos obviar la fase y concentrarnos en


la amplitud, si calculamos y representamos
el cuadrado de los elementos del vector g. A
P se le denomina espectro de potencia
(Power spectrum)

g ()2
P=
Para ilustrar la aplicacin de la funcin fft de
MATLAB, vamos a analizar la seal formada
por la suma de cuatro armnicos de
frecuencias angulares =1, 3, 3.5, 4 y 6
rad/s
x(t)=cos(t)+0.5cos(3t)+0.4cos(3.5t)
+0.7cos(4t)+0.2cos(6t)
Recurdese que la transformada de
Fourier de f(t)=cos(0t) es F()=[(0)+(+0)]. Dos funciones delta de
Dirac situados en +0 y en -0.
Creamos el script fft_6 para realizar las
siguientes tareas:
Construir una serie temporal (x,t) formada
por n=214=16384 pares de datos, tomando
un intervalo de tiempo t=0.4 s, o bien una
frecuencia de muestreo de fs=2.5 Hz. El
tiempo final es tfinal=163830.4=6553.2 s
Calcular la transformada rpida de Fourier fft
y la guardamos en el vector g

Crear el array de frecuencias como en el


cuadro anterior
Calculamos la potencia power: el cuadrado
del valor absoluto de cada elemento de g.
Representar grficamente power en
trminos de la frecuencia angular

%serie temporal
n=2^14;
dt=0.4;
t=(0:n-1)*dt; %vector de tiempos
x=cos(t)+0.5*cos(3*t)+0.4*cos(3.5*t)+0.7*cos(4*t)+0.
%amplitud-fase vs. frecuencias
g=fft(x);
power=abs(g).^2;
dw=2*pi/(n*dt);
w=(0:n-1)*dw; %vector de frecuencias angulares
plot(w,power)
xlabel('\omega')
ylabel('P(\omega)')
title('Espectro de potencia')

La transformada de Fourier de la funcin x(t)


superposicin de cinco funciones armnicas
nos debera dar funciones delta () de
altura infinita situadas en =0. El

resultado de la aplicacin de la funcin fft de


MATLAB es un conjunto de picos muy
estrechos y de gran amplitud.
La transformada de Fourier de cualquier
seal tiene un nmero igual de frecuencias
positivas que negativas, P()=P(-). En la
ventana de la representacin grfica vemos
solamente frecuencias positivas, no vemos
la parte negativa del espectro. En la figura
de ms abajo vemos las componentes de
frecuencias negativas en color rojo.

Para obtener esta figura modificamos las


siguientes lneas de cdigo al script fft_6
y=fft(x);

g=fftshift(y);
power=abs(g).^2;
dw=2*pi/(n*dt);
w=(-n/2:n/2-1)*dw;
plot(w,power)
As pues, solamente la primera mitad de la
ventana grfica muestra los picos de
frecuencias
correctas,
la
otra
mitad
corresponde a las frecuencias negativas.

Solamente
podemos
detectar
los
componentes de frecuencia que son
menores que c=/t=fs. Esta frecuencia
lmite se denomina frecuencia crtica o
frecuencia de Nyquist. En el ejemplo
anterior, c=7.85 rad/s. Luego, todas las
frecuencias de los armnicos componentes
de la seal, =1, 3, 3.5, 4 y 6 rad/s son
detectadas.

Si solamente queremos ver las frecuencias


positivas hasta la frecuencia angular crtica
c, modificamos el script fft_6 :
g=fft(x);
power=abs(g).^2;
dw=2*pi/(n*dt);
w=(0:n-1)*dw;
wc=pi/dt; %frecuencia angular crtica

plot(w,power)
xlim([0 wc])
Si queremos distinguir entre dos frecuencias
1y 2en el espectro es necesario que
<<|1-2| sea pequeo por lo que el
tiempo total de muestreo de la seal nt
deber ser grande. Si queremos que
frecuencia crtica csea grande entonces t
tendr que ser pequeo o la frecuencia de
muestreo fs grande. En cualquier caso,
tendremos que procesar muchsimos datos
n.
Efecto de la frecuencia de muestreo fs
Supongamos la siguiente
transformada de Fourier

funcin

su

f ( t )=texp (t )
+

F ( )= f ( t ) exp (it ) dt= texp (t ) exp (it ) dt

F ( )= texp(at)dt=
0

1
1
1
1
t + exp (at ) 0 = 2 =
2
a
a
a (1+i)

( )

Para estudiar el efecto la frecuencia de


muestreo fs en la Transformada Rpida de
Fourier, vamos a tomar n=16 datos
igualmente espaciados de la funcin f(t)
tomando una frecuencia de muestreo fs=2
Hz, es decir t=1/fs=0.5 s es el intervalo de
tiempo entre dos muestras consecutivas de

f(t). El ltimo dato corresponde al instante


(n-1)t=150.5=7.5 s La frecuencia crtica
c=/t=fs=2.
fs=2; %frecuencia de muestreo
n=16; %nmero de datos
dt=1/fs;
t=(0:n-1)*dt;
x=t.*exp(-t); %muestras, datos

subplot(2,1,1)
tt=0:0.05:8;
xx=tt.*exp(-tt);
plot(tt,xx,'b',t,x,'ro','markersize',4,'markeredgecolor','r','mark
xlabel('t')
ylabel('x')
title('f(t)')
subplot(2,1,2)
wc=pi*fs; %frecuencia lmite de Nyquist
ww=-4*pi:0.1:4*pi;
Fw=1./(1+i*ww).^2;
%transformada rpida de Fourier
y=fft(x,n);
g=fftshift(y);
dw=2*pi/(n*dt);
w=(-n/2:n/2-1)*dw;

plot(ww,abs(Fw),'b',w,abs(g)/fs,'ro','markersize',4,'markeredg
erfacecolor','r')
set(gca,'XTick',-4*pi:2*pi:4*pi)
set(gca,'XTickLabel',{'-4pi','-2pi','0','2pi','4pi'})

xlim([-4*pi,4*pi])
xlabel('\omega')
ylabel('|F(w)|')
title('Transformada')

Ahora cambiamos la frecuencia de muestreo


a fs=16 Hz, es decir t=1/fs=0.0625 s es el
intervalo de tiempo entre dos muestras
consecutivas de f(t). El nmero n=128 de
datos, por lo que el ltimo dato corresponde
al instante (n-1)t=1270.0625=7.9375 s. La
frecuencia crtica c=/t=fs=16.
fs=16; %frecuencia de muestreo
n=128; %nmero de datos
.............

Las frecuencias se extienden desde -16 a


+16, pero se muestran de -4 a +4 para
comparar con el ejemplo previo.

Funcin de Gauss

Hemos estudiado en la pgina titulada


"Propagacin de las ondas en un medio
dispersivo" la transformada de Fourier de la
funcin cos(0t) modulada por una funcin
de Gauss.

f ( t )=exp

( tt 0 )2
2 2

cos ( 0 t )

F ( )= 2 exp ( i 0 t 0 ) exp (it 0 ) exp

( 0 )
2

La transformada de Fourier no se ve
afectada por la posicin del centro del pulso
t0.

En primer lugar, centramos el pulso en t0=8


y establecemos la anchura del pulso en
2=5, tomamos 0=10 como frecuencia
angular. Dibujamos la funcin f(t) en el
intervalo 0<t<16. Aunque el pulso se
extiende desde - a +, en el intervalo
[0,16] est definido el pulso.

Con una frecuencia de muestreo fs=8,


tomamos n=128 datos, sealamos los datos

+ 2 exp (

tomados como puntos de color rojo en la


grfica f(t). El primer dato corresponde al
instante t1=0 y el ltimo dato al instante
tn=(n-1)/ fs=127/8=15.875

En la parte inferior de la ventana,


representamos la transformada de Fourier
F() en el intervalo comprendido entre -c y
c , siendo sta la fecuencia lmite c=fs.
Calculamos la transformada rpida de
Fourier (FFT) de los datos tomados y
representamos
su
mdulo
en
dicho
intervalo.

t0=8;
w0=10;
s2=5;
t=0:0.05:16;
f=@(t) exp(-(t-t0).^2/(2*s2)).*cos(w0*t);

subplot(2,1,1)
hold on
plot(t,f(t),'b')
fs=8;
n=128;
dt=1/fs;
t=(0:n-1)*dt;
ft=f(t);
plot(t,ft,'ro','markersize',2,'markeredgecolor','r','markerfaceco
hold off
grid on
xlabel('t')
ylabel('f(t)')
title('Funcin')

subplot(2,1,2)
hold on
wc=pi*fs; %frecuencia lmite de Nyquist
w=-wc:0.1:wc;
Fw=sqrt(2*pi*s2)*exp(-1i*w*t0).*(exp(1i*w0*t0)*exp(-(w-w0)
exp(-1i*w0*t0)*exp(-(w+w0).^2*s2/2))/2;
%transformada rpida de Fourier
y=fft(ft,n);
g=fftshift(y);
dw=2*pi/(n*dt);
ww=(-n/2:n/2-1)*dw;

Obtenemos dos picos situados en =-0=10 y =+0=10

Si ahora centramos el pulso en t0=2 y


tomamos n=32 datos con la misma
frecuencia de muestreo fs=8, de modo que
el primer dato corresponde al instante t1=0
y el ltimo dato al instante tn=(n-1)/
fs=31/8=3.875, obtenemos una pobre
definicin de la transformada de Fourier tal
como puede verse en la parte inferior de la
figura.

En Audacity

EJERCICIO 1

Como ya estudiamos en diversos


ejemplos de la prctica anterior,
MATLAB es muy utilizado en la
definicin,
manipulacin
y
representacin
de
seales
analgicas. Siendo rigurosos, el
procedimiento seguido en esos
ejemplos no es adecuado para el
anlisis de seales analgicas; es
ms, en general, MATLAB

no permite analizar seales


analgicas. Esto se debe a que
la forma natural de representar
una seal en MATLAB es
definir una secuencia finita de
valores mediante un vector fila.
As, como veremos en el
siguiente ejercicio, podemos
definir la secuencia de instantes
de
tiempo
equidistantes
(intervalo 1 ms) entre 0 y 0.25s.
Y del mismo modo, definimos
una seal sinusoide como una
secuencia de valores.

Genere una secuencia de


instantes de tiempo que parta
de t=0s y llegue hasta t=0.25s
en intervalos de 1ms. Construya
una funcin seno en esa base de
tiempo de amplitud 1 y
frecuencia 5Hz. Use plot para
dibujar la forma de onda.

Adems, destaque cada punto


de la grfica con *.

>> Tinicial=0;

% Definimos el tiemp

>> Tfinal=0.25;

% Definimos el tiemp

>> step=0.001;

% Definimos el paso e
tiempo

>> t=Tinicial:step:Tfinalstep;

% Se genera el vector

>> y=1*sin(5*2*pi*t);

% Se genera y

>> plot(t,y); hold on;

% Dibujamos y

>> plot(t,y,*);

% Dibujamos las mue

Por tanto, siendo estrictos, en MATLAB toda seal es discreta en tiempo, mientras que en amplitud puede ser discreta (cuantizada) o continua (aunque limitada por la precisin de los tipos numricos). No obstante, si los intervalos
temporales entre valores son suficientemente pequeos y el rango temporal en
el que se define la seal es suficientemente amplio, la secuencia de valores
empleada para representar la seal y las operaciones realizadas para su anlisis
proporcionan una buena aproximacin a los resultados tericos. En el caso ms
simple y frecuente, los valores se toman en instantes equiespaciados, intervalo
que no debe confundirse con el periodo de muestreo. De momento,
ignoraremos el efecto de la discretizacin de seales (utilizaremos intervalos de
tiempo sufi-cientemente pequeos, de modo que los efectos sean
despreciables). Asimismo, la amplitud de las seales est sometida a una
discretizacin que, dada la pre-cisin de los tipos numricos empleados en
MATLAB, podemos ignorar.

Seales especiales.

Vamos a ver una posible forma de representar en MATLAB algunas seales


analgicas tpicas.

SEAL

ESCALN

% Ejemplo de seal escalon


>

t=-10:0.01:10;

>

f_escalon=[zeros(1,1000),ones(1,1001)];

>

plot(t,f_escalon);

SEAL

PULSO

% Ejemplo de seal pulso


>

t=-10:0.01:10;

>

f_pulso=[zeros(1,950),ones(1,101),zeros(1,950)];

>

plot(t,f_pulso);

SEAL

SAMPLING

% Ejemplo de seal sampling >> t=10:0.01:10;


% Seal sampling nula en t=n*pi, n=1,2,...

>>
f_sampling=sin(t)./t;
>> plot(t,f_sampling);

% Seal sinc nula en t=n, n=1,2,...


>

f_sinc=sinc(t);

>

plot(t,f_sinc);

SEAL

IMPULSO O DELTA DE DIRAC

% Ejemplo de seal impulso


>

t=-10:0.01:10;

>

f_impulso=[zeros(1,1000),1,zeros(1,1000)];

>

plot(t,f_impulso);

SEAL

DIENTE DE SIERRA

% Ejemplo de seal diente de sierra de periodo 0.1Hz


% sawtooth(x,width) seal en diente de sierra con periodo 2*pi para los
% elementos del vector x. El parmetro width es un escalar entre

m ximo.

% 0 y 1, y describe la fraccin del periodo 2*pi en el que ocurre el


>

t=-10:0.01:10;

>

width=0.10;

>

f_sierra=sawtooth(2*pi*0.1*t,width);

>

plot(t,f_sierra);

SEAL

TRIANGULAR

% Ejemplo de seal triangular de periodo 0.1Hz


% Es un caso particular de seal diente de sierra con width=0.5 >> t=10:0.01:10;
>>
f_triangular=sawtooth(2*pi*0.1*t,0.5);
>> plot(t,f_triangular);

SEAL

EXPONENCIAL

% Ejemplo de seal exponencial decreciente >> t=10:0.01:10;


% tau: constante de tiempo (RC)
>

tau=200e-2;

>

f_expon=exp(-t/tau);

>

plot(t,f_expon);

SEAL

CUADRADA

% Ejemplo de seal cuadrada de frecuencia 0.5Hz


% square(x,duty) genera una onda cuadrada de periodo 2*pi con un duty
cycle dado >> t=-10:0.01:10;
>> duty=50; % porcentaje del periodo en el que la seal
es positiva >> f_cuadrada=square(2*pi*0.5*t,duty);
>> plot(t,f_cuadrada);

Anlisis de Fourier
Las series de Fourier permiten describir seales peridicas como una combinacin de seales armnicas (sinusoides). Con esta herramienta, podemos analizar una seal peridica en trminos de su contenido frecuencial o espectro.
Adems, nos permite establecer la dualidad entre tiempo y frecuencia, de forma
que operaciones realizadas en el dominio del tiempo tienen su dual en el
dominio frecuencial. Utilizando operaciones sobre vectores, se pueden calcular
fcilmente los coeficientes de Fourier correspondientes a una seal. En el
ejerci-cio 2, se definen el vector n, que contiene los ndices de los coeficientes,
y el vector cn, que contiene los coeficientes. Los coeficientes cn, son los coeficientes espectrales de la seal. La grfica de esos coeficientes en funcin del
ndice armnico n o de las frecuencias no se denomina espectro. Hay dos
tipos de grficos, uno con la magnitud de los coeficientes y otro de la fase.
Ambas funciones son discretas en frecuencia.

Ejercicio 2

Escriba un fichero MATLAB que proporcione los coeficientes de Fourier de


una seal cuadrada de periodo 0.2s (frecuencia 5Hz) y amplitud igual a 1V.

% Obtener los coeficientes de Fourier para una seal cuadrada de periodo


% 0.2s y amplitud 1.
clear;
% frecuencia de la seal cuadrada (=1/T) f=5;
T=1/f;
% Indice de los coeficientes
n=1:10;
% Coeficientes de Fourier
cn=2*(cos(n*pi)-1)./(2*j*n*pi); co=1;
subplot(2,1,1);
stem(n,abs(cn));
ylabel('Magnitud de
cn'); subplot(2,1,2);
stem(n,angle(cn));
ylabel('fase de cn');
xlabel('n');

A partir de la serie de Fourier, es posible reconstruir una seal peridica.


Cuanto mayor sea el nmero de armnicos utilizado en el desarrollo en
serie, mejor ser la reconstruccin. Un parmetro importante en la
reconstruccin de seales es la velocidad de convergencia, o lo que es lo
mismo, la velocidad con la que los coeficientes de Fourier tienden a 0.

Ejercicio 3

Escriba un fichero en MATLAB para dibujar n armnicos de una seal


cuad-rada de periodo 0.2s y amplitud 1.

% Desarrollo en serie de Fourier de una seal cuadrada de periodo 0.2s y


amplitud 1 clear;
% frecuencia de la seal cuadrada (=1/T)
f=5;
T=1/f;
% Indice de los coeficientes n=1:10;
% Generamos la serie de Fourier t=-1:0.01:1;
% vector de tiempos for i=1:50
for k=1:size(t,2) s(i,k)=(2*(1-cos(pi*i))/
(pi*i))*sin(2*pi*i*f*t(k));
e
nd
end

for k=1:size(t,2)
st(k)=sum(s(:,
k));
end

2. Anlisis de Fourier

st(1)=st(1)+1;
plot(t,st,'r
'); hold
on;
% Seal cuadrada original
f_cuadrada=square(2*pi*f*t,50
); plot(t,f_cuadrada);
xlabel(tiempo);
ylabel(Amplitud);

MATLAB est equipado con funciones especiales que nos van a permitir
real-izar un anlisis de Fourier de funciones definidas por un conjunto de
valores discretos. Por ejemplo, el comando fft() nos permite obtener la
transformada rpida de Fourier (fast Fourier Transform) de una secuencia
de nmeros definida por el vector x. Por ejemplo:

>> X=fft(x);
donde X es un vector de nmeros complejos ordenados desde k=0...N-1. Si
queremos que sea ms eficiente en el clculo de la ffT, la longitud del
vector x deber ser una potencia de 2. Podemos rellenar de ceros el vector x
para que tenga la longitud apropiada. Esto se consigue automticamente
haciendo:
>> X=fft(x,N);
donde N es exponente de 2. Mientras ms largo sea x, ms fina ser la
escala para la ffT. Debido a un fenmeno de plegamiento del espectro, slo
la primera mitad de los puntos obtenidos son de utilidad. La funcin
fftshift() reordena el vector X en orden creciente de frecuencia. Si X es el
vector resultante de hacer una ffT, utilizando esta funcin reordenamos los
puntos en funcin de la fre-cuencia.
>> X=fftshift(X);

Ejercicio 4

Obtenga la transformada de Fourier de una seal exponencial modulada


en amplitud con una frecuencia de portadora de 200Hz, x(t)=exp(2t)sin(2pi200t).

% Ejemplo de una ffT de una seal exponencial modulada en amplitud


% con una frecuencia portadora de 200Hz.
% Definicion de la seal
t=-0.25:0.001:0.25;
x=exp(2*t).*sin(2*pi*200*t);
% Representacion
subplot(3,1,1);

en

el

tiempo

plot(t,x); title('x(t)=exp(2t)sin(2pi200t)');
xlabel('Tiempo
(t)');ylabel('x(t)');
% Transformada
X=fftshift(fft(x));

de

Fourier

% Magnitud y fase de la transformada


Xm=abs(X); Xf=unwrap(angle(X))*180/pi;

% Base de frecuencias
Fsica de las Comunicaciones

Electrnica y

Electromagnetismo

Seales y Anlisis de Fourier

delta_t = t(2)-t(1);
f = ((1:length(t)) - ceil(length(t)/2)) / length(t) /
delta_t; % Representacion en frecuencia
subplot(3,1,2);
plot(f,Xm,'r');
title('Mdulo de transformada de Fourier
de x(t)'); xlabel('frecuencia (Hz)');ylabel('|
X(jw)|'); subplot(3,1,3);
plot(f,Xf,'r');zoom;
title('fase de la transformada de Fourier de
x(t)'); xlabel('frecuencia (Hz)');ylabel('fase
X(jw)');

A partir de la transformada de Fourier, es posible reconstruir la seal en el


dominio del tiempo. El comando ifft() sirve para obtener la transformada
inversa de Fourier de una serie de nmeros complejos:
>> x=ifft(X);

Ejercicio 5

Obtenga la transformada de Fourier de una seal exponencial modulada


en amplitud , x(t)=exp(-2t)sin(2pi3t). Realice la transformada inversa y
obtenga la seal en el tiempo a partir de su transformada.

% Ejemplo de una ffT de una seal exponencial modulada en amplitud


% Obtencin de la seal en el tiempo a partir de su transformada

% Definicion de la seal
t=-0.25:0.001:0.25;
x=exp(2*t).*sin(2*pi*3*t);

% Representacion en el tiempo figure(1);


plot(t,x); title('x(t)=exp(2t)sin(2pi200t)');
xlabel('Tiempo
(t)');ylabel('x(t)');
% Transformada y representacion en frecuencia Xt=fft(x);
X=fftshift(Xt);
% Magnitud y fase de la transformada
Xm=abs(X); Xf=unwrap(angle(X))*180/pi;
% Base de frecuencias
delta_t = t(2)-t(1);
f = ((1:length(t)) - ceil(length(t)/2)) / length(t) /
delta_t; figure(2);
subplot(2,1,1);
plot(f,Xm,'r');zoom;
title('Mdulo de transformada de Fourier
de x(t)'); xlabel('frecuencia (Hz)');ylabel('|
X(jw)|'); subplot(2,1,2);
plot(f,Xf,'r');zoom;
title('fase de la transformada de Fourier de
x(t)'); xlabel('frecuencia (Hz)');ylabel('fase
X(jw)');

% Obtener la seal en el dominio del tiempo a partir de su


transformada xrec=ifft(Xt);
figure(3);
plot(t,xrec);
title('Transformada
inversa')

xlabel('Tiempo (t)');ylabel('xrec(t)');

Producto de Convolucin
La convolucin es una potente herramienta matemtica utilizada en el procesado de seales. Aunque en general se define como un operador que permite
determinar la respuesta de un sistema lineal, invariante en el tiempo ante una
determinada entrada, tambin se puede aplicar a dos seales arbitrarias. La convolucin de f y g se denota por f*g y se define como la integral del producto de
ambas funciones despus de que una sea invertida y desplazada. En MATLAB
contamos con la funcin conv() que realiza la la convolucin de los vectores x
y

h. El vector resultante tiene un tamao igual a length(x)+length(h)-1.


>

y=conv(x,h);

Ejercicio 6

Genere un fichero MATLAB donde realice la convolucin de una seal


coseno de frecuencia 100Hz y una seal escaln. Compruebe que se
verifican las propiedades de la transformada de Fourier respecto al
producto de convolu-cin.

% Ejemplo de una ffT de una seal exponencial modulada en amplitud


% Obtencin de la seal en el tiempo a partir de su transformada
% Definicion de las seales
t = -pi:0.001:pi;
g_escalon=[zeros(1,1000*pi+1),
ones(1,1000*pi+1)]; w = 2*pi;
g = cos(w*100*t);
g_conv =
conv(g,g_escalon);
figure(1);

subplot(3,1,1);
plot(t,g_escalon);
title('SEAL ESCALON');
xlabel('Tiempo

(t)');ylabel('e(t)');
subplot(3,1,2);
plot(t,g);
title('cos(2pit)');
xlabel('Tiempo (t)');ylabel('cos(2*pi*100*t)');

% Convolucion
g_conv =
conv(g,g_escalon);
subplot(3,1,3);
plot(t,g_conv(1:length(g)),'r
') title('Convolucion');
xlabel('Tiempo (t)');

% Transformada y representacion en frecuencia de la convolucion


G_conv=fftshift(fft(g_conv));
% Magnitud de la transformada
Gm_conv=abs(G_conv);
%

Base de frecuencias delta_t = t(2)-t(1);

f = ((1:length(g_conv)) - ceil(length(g_conv)/2)) / length(g_conv) /


delta_t; figure(2);
subplot(2,1,1);
plot(f,Gm_conv,'r');zoom;

title('Transformada de Fourier del producto de


convolucion)'); xlabel('frecuencia (Hz)');ylabel('|X(jw)|');

% Obtener G_conv como el producto de los espectros


G_escalon=fftshift(fft(g_escalon));
G=fftshift(fft(g));
G_conv2=G.*G_escalon;
% Base de frecuencias
delta_t = t(2)-t(1);

f2 = ((1:length(t)) - ceil(length(t)/2)) / length(t) /


delta_t; subplot(2,1,2);
plot(f2,abs(G_conv2),'r');zoom;
title('Producto de las transformadas de Fourier)');
xlabel('frecuencia (Hz)');ylabel('|X(jw)|');

ANEXOS

En enero de este ao, cuatro investigadores del Instituto Tecnolgico de


Massachusetts (MIT, en Estados Unidos) presentaron un sustituto para uno de
los algoritmos ms importantes de la informtica. Dina Katabi, Haitham
Hassanieh, Piotr Indyk y Eric Price han creado una forma ms rpida de llevar a
cabo la transformada de Fourier, una tcnica matemtica que sirve para
procesar los flujos de datos que subyacen en el funcionamiento de cosas como
las resonancias magnticas, los routers wifi y las redes mviles 4G.

El principio de la transformada de Fourier, desarrollada por primera vez en el


siglo XIX, es que cualquier seal, como por ejemplo una grabacin de sonido,
se puede representar como la suma de una serie de sinusoides o cosinusoides
con distintas frecuencias y amplitudes. As, esta serie de ondas se puede
manipular con relativa facilidad. Esto permite, por ejemplo, que una grabacin
de audio se comprima o se pueda eliminar el ruido. A mediados de la dcada
de 1960 se cre un algoritmo para la computacin denominado transformada
rpida de Fourier (FFT en sus siglas en ingls). Cualquiera que se haya
quedado maravillado ante el diminuto tamao de un archivo MP3 en
comparacin con la misma grabacin en su estado sin comprimir conoce la
potencia de la FFT en accin.

Gracias al nuevo algoritmo, denominado transformada dispersa de Fourier


(SFT, por sus siglas en ingls), los flujos de datos se pueden procesar de 10 a

100 veces ms rpido que lo que permita la FFT. Esta velocidad es posible
porque la informacin que ms nos importa es muy estructurada: la msica no
es un ruido aleatorio. Las seales con sentido suelen tener solo una fraccin de
los posibles valores que podra tener una seal. El trmino tcnico para esto es
que la informacin es dispersa. Puesto que el algoritmo SFT no est diseado
para funcionar con cualquier flujo de datos, puede tomar determinados atajos
que de otra forma no estaran disponibles. En teora, un algoritmo capaz de
manejar solo seales dispersas es mucho ms limitado que la FFT. Pero la
dispersin est en todas partes, seala el coinventor Katabi, profesor de
ingeniera elctrica e informtica. Est en la naturaleza, en las seales de
vdeo, en las seales de audio, afirma Katabi.

Una transformada ms rpida implica que se necesita menos potencia


computacional para procesar una cantidad dada de informacin, una bendicin
para los aparatos multimedia que miden el gasto energtico al milmetro, como
los telfonos inteligentes. O, con la misma potencia computacional, los
ingenieros pueden contemplar la posibilidad de hacer cosas que debido a las
necesidades computacionales de la FFT no eran prcticas. Por ejemplo, las
conexiones troncales de Internet y los routers actuales solo son capaces de leer
o procesar una nfima parte del ro de datos que se pasan entre ellos. La SFT
podra permitir a los investigadores estudiar el flujo de este trfico con mucho
ms detalle mientras los bits pasan a una velocidad de miles de millones por
segundo.
https://www.technologyreview.es/informatica/40355/tr10-una-transformada-defourier-mas-rapida/

También podría gustarte