Documente Academic
Documente Profesional
Documente Cultură
Lucrarea 6
Scopul lucrării este acela de a defini, implementa şi de a pune în evidenţă unele dintre
proprietăţile Transformatei Fourier Discrete cu ajutorul programului MATLAB.
care este cunoscută sub denumirea de Transformata Fourier Discretă (TFD, acronimul în
limba engleză este DFT- Discrete Fourier Transform) a semnalului x[n] . Relaţia
N 1
1
x[n ]
N
X [k ]e
k 0
j 2 kn / N
, n 0,1, , N 1
(2)
defineşte transformata Fourier Discretă Inversă (TFDI, acronimul în engleză este IDFT) şi
permite refacerea semnalului x[n] din eşantioanele spectrului. Dacă L < N, IDFT în N puncte
va determina x[n] 0 pentru L n N 1 .
Transformata Fourier discretă este definită pe o submulţime a mulţimii numerelor întregi cu
valori în mulţimea numerelor complexe.
X [k ] | X [k ] | e jX [ k ] (3)
47
PNS Lucrarea 6 Transformata Fourier Discretă
a j x j n DFT
in N puncte
a j X j [k ] (8)
j j
Prin deplasarea lui x p n cu k unităţi spre dreapta (k>0), se obţine secvenţa periodică
x p ' n x p n k xn k m N , k>0 (10)
m
x n N x N n , 0 n N 1 (12)
48
PNS Lucrarea 6 Transformata Fourier Discretă
relaţie care este o sumă de convoluţie, numită convoluţie circulară, datorită indexului
m n N . Convoluţia circulară a două secvenţe de lungime N se mai notează cu N
e) Translaţia circulară în timp a unei secvenţe. Dacă x n şi X [k ] sunt perechi
DFT în N puncte, atunci
x[(n m) N ] DFT
e j 2 k m N X [k ]
in N puncte (14)
j) Proprietăţi de simetrie
x[n] x R [n] jx I [n] , 0 n N 1
X [ k ] X R [ k ] jX I [ k ] , 0 k N 1 (19)
unde indicii R şi I specifică partea reală, respectiv imaginară.
N 1
X R [k ] x R [n] cos 2kn / N x I [n] sin 2kn / N
n 0
N 1
X I [k ] xR [n]sin 2 kn / N xI [n]cos 2 kn / N (20)
n 0
1 N 1
x R [ n] X R [k ] cos 2kn / N X I [k ]sin 2kn / N
N k 0
1 N 1
x I [n] X R [k ] sin 2kn / N X I [k ] cos 2kn / N
N k 0
Cazuri particulare:
a) Secvenţe cu valori reale. Dacă x[n] este real,
X [ N k ] X * [k ] X [k ] (21)
49
PNS Lucrarea 6 Transformata Fourier Discretă
a1) Secvenţe reale pare. Dacă x[n] este real şi par, DFT se reduce la relaţia
N 1
X [k ] x[n] cos 2kn / N , 0 k N 1 (22)
n 0
a2) Secvenţe reale impare. Dacă x[n] este real şi impar, DFT devine
N 1
X [k ] j x[n] sin 2kn / N , 0 k N 1 (24)
n 0
Se observă că X R [k ] este funcţie pară şi X I [k ] impară. Dacă x I [n] este impar, atunci
X I [k ] 0 şi X [k ] este real. Dacă x I [n] este par, atunci X R [k ] 0 şi X [k ] este pur
imaginar.
2. Aplicaţii rezolvate
% Program P6_1
% Proprietatea de periodicitate a Transformatei Fourier
clf;
% Se calculeaza pulsatiile la care se evalueaza Transformata Fourier
w = -4*pi:8*pi/511:4*pi;
x = [1 2 3 4 5 6 7 8 9];
X = freqz(x, 1, w);
% Afisarea raspunsului in frecventa
subplot(2,1,1)
plot(w/pi,real(X));grid
title('Partea reala din X(e^{j\omega})')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(2,1,2)
plot(w/pi,imag(X));grid
50
PNS Lucrarea 6 Transformata Fourier Discretă
% Program P6_2
% Proprietatea de deplasare in timp a Transformatei Fourier
clf;
w = -pi:2*pi/255:pi; D = 10;
x1 = [1 2 3 4 5 6 7 8 9];
x2 = [zeros(1,D) x1]; %secventa x1 deplasata la dreapta cu D
%esantioane
X1 = freqz(x1, 1, w);
X2 = freqz(x2, 1, w);
subplot(2,2,1)
plot(w/pi,abs(X1));grid
title('Modulul Transformatei Fourier a secventei date')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(2,2,2)
plot(w/pi,abs(X2));grid
title('Modulul Transformatei Fourier a secventei deplasate')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(2,2,3)
plot(w/pi,angle(X1));grid
title('Faza Transformatei Fourier a secventei date')
xlabel('\omega /\pi');
ylabel('Faza');
subplot(2,2,4)
plot(w/pi,angle(X2));grid
title('Faza Transformatei Fourier a secventei deplasate')
xlabel('\omega /\pi');
ylabel('Faza');
Ce observaţi din punct de vedere al modulului Transformatei Fourier; dar din perspectiva
fazei? Cum explicaţi rezultatul obţinut?
51
PNS Lucrarea 6 Transformata Fourier Discretă
% Program P6_3
% Reprezentarea unei secvente deplasate circular
clf;
M = 6;
a = [0 1 2 3 4 5 6 7 8 9];
b = circshift(a,M);
L = length(a);
n = 0:L-1;
subplot(2,1,1);
stem(n,a);axis([0,L,min(a),max(a)]);
title('Secventa initiala');
subplot(2,1,2);
stem(n,b);axis([0,L,min(a),max(a)]);
title(['Secventa obtinuta prin deplasare circulara cu ',num2str(M),'
esantioane']);
Programele de mai jos ilustrează câteva proprietăţi ale DFT. Calculul DFT se face cu funcţia
fft.m
% Program P6_4
% Proprietatea de deplasare (translatie) circulara în timp a DFT
clf;
x = [0 2 4 6 8 10 12 14 16];
N = length(x); n = 0:N-1;
x1 = circshift(x,5); %secventa x deplasata circular la dreapta cu
%N-5 esantioane
X = fft(x);
X1 = fft(x1);
subplot(2,2,1)
stem(n,abs(X));grid
title('Modulul DFT a secventei initiale');
xlabel('k');
ylabel('Amplitudine');
subplot(2,2,2)
stem(n,abs(X1));grid
title('Modulul DFT a secventei deplasate circular');
xlabel('k');
ylabel('Amplitudine');
subplot(2,2,3)
stem(n,angle(X));grid
title('Faza DFT a secventei initiale');
xlabel('k');
ylabel('Faza');
subplot(2,2,4)
stem(n,angle(X1));grid
title('Faza DFT a secventei deplasate circular');
xlabel('k');
ylabel('Faza');
52
PNS Lucrarea 6 Transformata Fourier Discretă
% Program P6_5
% Proprietatea de deplasare (translatie) circulara in frecventa a
% DFT
clf;
x1 = [1 3 5 7 9 11 13 15 17];
X1 = fft(x1);
N=length(x1);
k = 0:N-1;
m = 3;
x2 = exp(j*2*pi*m*k/N).*x1; %secventa x1 modulata
X2 = fft(x2);
subplot(2,2,1)
stem(k,abs(X1));grid
title('Modulul TFD a secventei date')
xlabel('k');
ylabel('Amplitudine');
subplot(2,2,2)
stem(k,abs(X2));grid
title('Modulul TFD a secventei deplasate in frecventa')
xlabel('k');
ylabel('Amplitudine');
subplot(2,2,3)
stem(k,angle(X1));grid
title('Faza TFD a secventei date')
xlabel('k');
ylabel('Faza');
subplot(2,2,4)
stem(k,angle(X2));grid
title('Faza TFD a secventei deplasate in frecventa')
xlabel('k');
ylabel('Faza');
% Program P6_6
% Proprietatea de reflectare sau inversare circulara in timp a DFT
clf;
x = [1 -2 3 4 5 -6 7]+j*[7 6 5 4 3 2 1];
N = length(x);
x1 = [x(1) x(N:-1:2)]; %secventa x inversata circular
X = fft(x);
X1 = fft(x1);
k=0:N-1;
subplot(2,2,1)
stem(k,abs(X));grid
53
PNS Lucrarea 6 Transformata Fourier Discretă
% Program P6_7
% Proprietatea de convolutie in timp a Transformatei Fourier (TF)
clf;
w = -pi:2*pi/255:pi;
x1 = [1 3 5 7 9 11 13 15 17];
x2 = [1 -2 3 -2 1];
y = conv(x1,x2);
X1 = freqz(x1, 1, w);
X2 = freqz(x2, 1, w);
Xp = X1.*X2;
Y = freqz(y,1,w);
subplot(2,2,1)
plot(w/pi,abs(Xp));grid
title('Modulul produsului dintre TF ale celor doua secvente')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(2,2,2)
plot(w/pi,abs(Y));grid
title('Modulul TF a convolutiei dintre cele doua secvente')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(2,2,3)
plot(w/pi,angle(Xp));grid
title('Faza produsului dintre TF ale celor doua secvente')
xlabel('\omega /\pi');
ylabel('Faza');
subplot(2,2,4)
plot(w/pi,angle(Y));grid
title('Faza TF a convolutiei dintre cele doua secvente')
xlabel('\omega /\pi');
ylabel('Faza');
54
PNS Lucrarea 6 Transformata Fourier Discretă
% Program P6_8
% Proprietatea de modulatie (sau convolutie in frecventa a
% Transformatei Fourier (TF))
clf;
w = -pi:2*pi/255:pi;
x1 = [1 3 5 7 9 11 13 15 17];
x2 = [1 -1 1 -1 1 -1 1 -1 1];
y = x1.*x2;
X1 = freqz(x1, 1, w);
X2 = freqz(x2, 1, w);
Y = freqz(y,1,w);
subplot(3,1,1)
plot(w/pi,abs(X1));grid
title('Modulul TF a secventei x1')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(3,1,2)
plot(w/pi,abs(X2));grid
title('Modulul TF a secventei x2')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(3,1,3)
plot(w/pi,abs(Y));grid
title('Modulul TF a produsului celor doua secvente')
xlabel('\omega /\pi');
ylabel('Amplitudine');
Figura 1
% Program P6_9
% Proprietatea de convolutie circulara a DFT
x1 = [1 2 3 4 5 6]; x2 = [1 -2 3 3 -2 1];
ycirconv = circonv(x1,x2,6);
disp('Rezultatul convolutiei circulare calculate direct =
');disp(ycirconv)
X1 = fft(x1); X2 = fft(x2);
ycfft = real(ifft(X1.*X2));
disp('Rezultatul convolutiei circulare cu ajutorul
DFT');disp(ycfft); %vezi disp.m
55
PNS Lucrarea 6 Transformata Fourier Discretă
% Program P6_10
% Convolutia liniara cu ajutorul convolutiei circulare
x1 = [1 2 3 4 5];x2 = [2 2 0 1 1];
L1 = length(x1);L2 = length(x2);
x1e = [x1 zeros(1,L2-1)];
x2e = [x2 zeros(1,L1-1)];
X1 = fft(x1e); X2 = fft(x2e);
Ylin_fft = real(ifft(X1.*X2));
disp('Convolutia liniara cu ajutorul DFT = ');disp(ylin_fft);
ylin_conv = conv(x1,x2);
disp('Convolutia liniara calculata direct = ');disp(ylin_conv);
%vezi disp.m
Exemplul 11. Relaţia dintre DFT a unei secvenţe reale periodice şi a părţii pare a
acesteia
Programul P6_11 reprezintă grafic partea reală şi cea imaginară a spectrului unei secvenţe
1
x[n] şi a spectrului părţii pare a acestei secvenţe: xe [n] ( x[n] x[n]) .
2
% Program P6_11
% Relatia dintre DFT a unei secvente reale si a partii pare a
% acesteia
x = [1 2 4 2 6 32 6 4 2 zeros(1,247)];
x1 = [x(1) x(256:-1:2)]; %secventa x inversata circular
xe = 0.5 *(x + x1);
XF = fft(x);
XEF = fft(xe);
clf;
N=length(x);
k = 0:N-1;
subplot(2,2,1);
stem(k,real(XF)); grid; axis([0 N-1 -80 80])
xlabel('k');ylabel('Amplitudine');
title('Re(DFT\{x[n]\})');
subplot(2,2,2);
stem(k,imag(XF)); grid; axis([0 N-1 -80 80])
xlabel('k');ylabel('Amplitudine');
title('Im(DFT\{x[n]\})');
subplot(2,2,3);
stem(k,real(XEF)); grid; axis([0 N-1 -80 80])
xlabel('k');ylabel('Amplitudine');
title('Re(DFT\{x_{e}[n]\})');
subplot(2,2,4);
stem(k,imag(XEF)); grid; axis([0 N-1 -80 80])
xlabel('k');ylabel('Amplitudine');
title('Im(DFT\{x_{e}[n]\})');
56
PNS Lucrarea 6 Transformata Fourier Discretă
N 1
1 N 1
x n X k .
2 2
Pentru o secvenţă x[n] se demonstrează că
n 0 N k 0
Programul P6_12 pune în evidenţă această relaţie.
% Program P6_12
% Echivalenta energiilor (relatia lui Parseval)
x = [(1:128) (128:-1:1)];
XF = fft(x);
a = sum(x.*x)
b = round(sum(abs(XF).^2)/256)
3. Aplicaţii propuse
2. Scrieţi un program care să pună în evidenţă relaţia (17) din lucrare. În acest sens se va
genera o secvenţă complexă x[n] , şi se vor parcurge următorii paşi:
- se va conjuga secvenţa dată şi se va calcula transformata Fourier Discretă (vezi fft)
a secvenţei rezultate;
- se va calcula transformata Fourier Discretă a secvenţei date, X k , după care se va
conjuga şi reflecta rezultatul, X *[ N k ] , unde N este numărul de puncte în care se realizează
DFT-ul.
1
xo [n] ( x[n] x[ n]) (vezi Exemplul 11).
2
57
PNS Lucrarea 6 Transformata Fourier Discretă
5. Verificaţi cu ajutorul unui program MATLAB relaţia lui Parseval în cazul secvenţei:
n, pentru n 0,7
x n
0, în rest
58