Documentos de Académico
Documentos de Profesional
Documentos de Cultura
08.análisis de Fourier Usando Matlab
08.análisis de Fourier Usando Matlab
jbaccar@unal.edu.co
Matlab trabaja nicamente con seales
discretas.
Las nicas seales que son discretas en
tiempo y frecuencia son las seales
peridicas discretas.
Para los otros casos se requerirn
aproximaciones para poder llevar a cabo
anlisis de Fourier en Matlab.
2 2
1 jk n jk n
ak
N 0 n N0
x[n]e N0
x[ n ] a e
k N0
k
N0
Las ecuaciones de sntesis y anlisis para este
caso se pueden implementar fcilmente como
programas .m
Los comandos de Matlab fft e ifft se
pueden usar para implementar estas
ecuaciones.
Si el vector x contiene un perodo de la seal,
de longitud N:
X = fft(x)/N; Ec. de Anlisis
x = ifft(X)*N; Ec. de Sntesis
Matlab asume que el vector x contiene el
perodo de la seal que va de n = 0 a N-1.
x[n ] 1 e e 12 8
2 j
3 3
j j
e 8 j n e 8 j n
e 12
1 e 12
2j 2j
3 3
j j
e 8
e 8
a 1 , a0 1, a1
2j 2j
en Matlab:
x = ones(1,24)+sin([0:23]*pi/12+3*pi/8);
X = fft(x)/24
X =
Columns 1 through 5
Columns 6 through 10
Columns 11 through 15
Columns 16 through 20
Columns 16 through 24
x[n]e
M 1
X e j jn
n 0
n 0 N n 0
omega = [0:N-1]*2*pi/N
omega = [-N/2:N/2-1]*2*pi/N
3
cos n 0 n 31
x[ n ] 8
0 otros
15
10
0
-3 -2 -1 0 1 2 3
20
15
10
0
-3 -2 -1 0 1 2 3
20
15
10
0
-3 -2 -1 0 1 2 3
fft se usa con seales discretas de duracin
finita.
Para usarla con seales continuas, se debe
muestrear y recortar la seal.
1 1 s
X e j
X j X j
T T T
2
s 2
M MT
r r
La DFT de N puntos de x[n] est dada por:
jk 2N 1 s
Y [k ] X e X jk
T N
Si se desea que las muestras en frecuencia
estn separadas una distancia de al menos
D:
s
N
D
t
x(t ) e 10
u(t )cos( 10t ) cos( 12t )
g(t) = cos(10t) + cos(12t)
1
F ( j )
1
j
10
G(j) = (d(+10)+d(-10)+d(+12)d(-12))
1 1 1
j 10 1 j 10
1
j 12
1
1 10 10 10
X ( j )
2 1
j 12 1
10
1 1
j j
X ( j ) 10 10
2 2
1 1
j 10 j 12
2 2
10 10
Esta seal no est
limitada en banda
pero su potencia
disminuye
rpidamente cuando
crece.
Se escoge x = 500
porque la magnitud
en ese valor es 10
veces menor que en
a = 20
2
T 0.0063
1000
Se escoge T = 0.005, de donde s = 400.
s 400
M
r r
a) r = 2 M = 200
b) r = 2/5 M = 1000
c) r = 2/25 M = 5000
T = 0.005 T = 0.005;
N = 8000;
N = 8000 M = 5000;
t = 0:T:(M-1)*T;
a) M = 200 x = exp(-t/10).*(cos(10*t)+cos(12*t));
b) M = 1000 Xa = abs(fft(x(1:200),N)*T);
c) M = 5000 n = 2*pi/T*(0:N-1)/N;
figure
subplot(2,2,2)
stem(n(1:128),Xa(1:128))
omega = 0:20/511:20;
X =
(0.1+i*omega)./((.1+i*omega).^2+100)+(0
.1+i*omega)./((.1+i*omega).^2+144);
hold
plot(omega, abs(X),'r')
axis([0 20 0 6])
2 6
5
1
4
0 3
2
-1
1
-2 0
0 5 10 15 20 0 5 10 15 20
6 6
5 5
4 4
3 3
2 2
1 1
0 0
0 5 10 15 20 0 5 10 15 20
Matlab permite calcular numricamente la
respuesta en frecuencia de sistemas
continuos y discretos para valores discretos
de frecuencia.
La respuesta en frecuencia de un sistema es
la transformada de Fourier de su respuesta
impulso.
Los comandos freqs and freqz permiten
evaluar la respuesta en frecuencia de
sistemas descritos por ecuaciones
diferenciales o de diferencia sin tener la
respuesta impulso.
H = freqs (b, a, w) calcula la respuesta
en frecuencia del sistema en tiempo continuo
descrito por la ecuacin:
N
d k y(t ) M d k x(t )
k 0
a N k
dt k
bM k
k 0 dt k
N M
a yn k b xn k
k 0
k
k 0
k