Sunteți pe pagina 1din 12

PNS Lucrarea 6 Transformata Fourier Discretă

Lucrarea 6

Transformata Fourier Discretă

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.

1. Definiţia Transformatei Fourier Discrete

Transformata Fourier discretă a unei secvenţe x[n] de durată finită L  N se calculează cu


relaţia
 2 k  L1 N 1

   x[n ]e   x[n ]e  j 2 kn / N , k  0,1,, N  1


 j 2 kn / N
X [k ]  X 
 N  n 0 n 0 (1)

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 jX [ k ] (3)

unde | X [ k ] | reprezintă modulul transformatei Fourier discrete, iar X [k ] , faza sa.


Notând cu xN şi XN vectorii corespunzători valorilor semnalului, respectiv valorilor TFD a
2
j
acestuia şi wN  e N
o rădăcină de ordin N a unităţii, DFT în N puncte se exprimă în formă
matriceală astfel:
X N  WN ·xN (4)

unde WN este matricea transformării liniare, cu elementele WN (i, k )   wN  .


ik

Transformata Fourier discretă inversă se obţine cu


1 (5)
x N  W N* X N
N
unde W N* este conjugata lui WN.

47
PNS Lucrarea 6 Transformata Fourier Discretă

2. Câteva proprietăţi ale DFT

a) Periodicitatea. Dacă x n  şi X [k ] sunt perechi DFT în N puncte, atunci


x n  N   x n ,  n   (6)
şi X [k  N ]  X [k ] ,  k   (7)
b) Liniaritatea. Dacă x n  şi X [k ] sunt perechi DFT în N puncte, atunci

a j x j n DFT
  
in N puncte
a j X j [k ] (8)
j j

c) Deplasarea şi simetria circulară în timp. Datorită proprietăţii de periodicitate,


transformata Fourier discretă în N puncte a unei secvenţe xn, de durată finită L  N , este

echivalentă cu transformata Fourier discretă în N puncte a unei secvenţe periodice x p n, de

perioadă N, obţinută prin repetarea periodică a lui x n 



x p n   xn  m N  (9)
m  

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    xn  k  m N , k>0 (10)
m  

Secvenţa aperiodică de lungime finită


 x 'p [ n], 0  n  N  1;
x '[ n]  
 0, în rest
se obţine din secvenţa originală x n  prin deplasare circulară. Deplasarea circulară cu k
unităţi a unei secvenţei poate fi reprezentată cu indexul modulo N
x' n  x(n  k ) modulo N   xn  k N  (11)
Reflectarea sau inversarea în timp se realizează prin reflectarea eşantioanelor faţă de
punctul 0.

x   n  N   x  N  n  , 0  n  N  1 (12)

d) Multiplicarea a două DFT şi convoluţia circulară. Se presupun două secvenţe


de durată finită N, x1  n  şi x 2  n  ale căror transformate Fourier discrete sunt X 1[ k ] ,
respectiv X 2 [ k ] . Prin multiplicarea lor se obţine o secvenţă X 3 [ k ] , al cărei original este o
secvenţă x 3  n  , tot de lungime N, dată de
N 1
x3  m   x1  n  x2  m  n  N  , m  0, 1, N  1 (13)
n 0

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)

f) Translaţia circulară în frecvenţă a unei secvenţe. Dacă x n  şi X [k ] sunt


perechi DFT în N puncte, atunci
x[n]e j 2 n m N DFT
   X [(k  m) N ]
in N puncte (15)

g) Inversarea circulară în timp a unei secvenţe. Dacă x n  şi X [k ] sunt perechi


DFT în N puncte, atunci
x[n]  x[ N  n] DFT
   X [(k ) N ]  X [ N  k ]
in N puncte (16)

h) Conjugarea complexă. Dacă x n  şi X [k ] sunt perechi DFT în N puncte, atunci


x * [n] DFT
   X * [( k ) N ]  X * [ N  k ]
in N puncte (17)

i) Convoluţia circulară. Dacă x1 n şi X 1[k ] , x2 n şi X 2 [ k ] , sunt perechi DFT în


N puncte, atunci
x1[n]  x2 [n] DFT
   X 1[ k ] X 2 [ k ]
in N puncte (18)

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 2kn / N  x I [n] sin 2kn / 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 2kn / N  X I [k ]sin 2kn / N 
N k 0
1 N 1
x I [n]    X R [k ] sin 2kn / N  X I [k ] cos 2kn / 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ă

În consecinţă, | X [ N  k ] || X [ k ] | şi X [ N  k ]  X [ k ] . Deoarece x I [n]  0 ,


x R [n]  x[n] .

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 2kn / N , 0  k  N  1 (22)
n 0

care este reală şi pară. IDFT se reduce la


N 1
1
x[n] 
N
 X [k ] cos 2kn / N , 0  n  N 1 (23)
k 0

a2) Secvenţe reale impare. Dacă x[n] este real şi impar, DFT devine
N 1
X [k ]   j  x[n] sin 2kn / N , 0  k  N  1 (24)
n 0

care este pur imaginară şi impară. IDFT se reduce la forma


N 1
1
x[n]  j
N
 X [k ]sin 2kn / N , 0  n  N 1 (25)
k 0

b) Secvenţe pur imaginare. În acest caz x[n]  jx I [n]


N 1
X R [k ]   x I [n] sin 2kn / N (26)
n 0
N 1
X I [k ]   xI [n]cos 2 kn / N (27)
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

Exemplul 1. Următorul program arată proprietatea de periodicitate a transformatei


Fourier

% 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ă

title('Partea imaginara din X(e^{j\omega})')


xlabel('\omega /\pi');
ylabel('Amplitudine');
pause
subplot(2,1,1)
plot(w/pi,abs(X));grid
title('Spectrul de amplitudine |X(e^{j\omega})|')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(2,1,2)
plot(w/pi,angle(X));grid
title('Spectrul de faza arg[X(e^{j\omega})]')
xlabel('\omega /\pi');
ylabel('Faza in radiani');

Exemplul 2. Proprietatea de deplasare în timp a Transformatei Fourier


Programul P6_2 îşi propune să pună în evidenţă influenţa deplasării în timp a unei secvenţe
discrete asupra spectrului de modul şi de fază. Programul reprezintă grafic spectrul de modul
şi fază a unei secvenţe discrete (x) şi a secvenţei deplasate cu D=10 eşantioane la dreapta.

% 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?

Exemplul 3. Deplasarea circulară a unei secvenţe


Secvenţa discretă a este deplasată circular cu M=6 elemente. Se vor reprezenta secvenţa
iniţială a şi cea deplasată circular b.

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

Exemplul 4. Proprietatea de deplasare (translaţie) circulară în timp a DFT (relaţia (14))


Programul P6_4 reprezintă grafic modulul şi faza a DFT a unei secvenţe discrete x şi a
secvenţei x deplasată circular.

% 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');

Faceţi aceleaşi observaţii ca şi la Exemplul 2!

52
PNS Lucrarea 6 Transformata Fourier Discretă

Exemplul 5. Proprietatea de deplasarea (translaţie) circulară în frecvenţă a DFT


(relaţia (15))
Programul P6_5 pune în evidenţă deplasarea circulară a DFT a unei secvenţe discrete ca
j 2 mk / N
urmare a înmulţirii acesteia cu o secvenţă exponenţială complexă în timp e .

% 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');

Faceţi aceleaşi observaţii ca şi la Exemplul 2!

Exemplul 6. Proprietatea de reflectare sau inversare circulară în timp a DFT (relaţia


(16))
Programul P6_6 reprezintă grafic modulul şi faza a DFT a unei secvenţe complexe x[n] şi a
secvenţei x reflectată circular, adică x1[n]=x[-n].

% 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ă

title('Modulul DFT a secventei originale')


xlabel('k');
ylabel('Amplitudine');
subplot(2,2,2)
stem(k,abs(X1));grid
title(' Modulul DFT a secventei reflectate')
xlabel('k');
ylabel('Amplitudine');
subplot(2,2,3)
stem(k,angle(X));grid
title('Faza DFT a secventei originale ')
xlabel('k');
ylabel('Faza');
subplot(2,2,4)
stem(k,angle(X1));grid
title('Faza DFT a secventei reflectate')
xlabel('k');
ylabel('Faza');

Următoarele două programe pun în evidenţă dualitatea timp-frecvenţă, şi anume:


-convoluţie în timp reprezintă produs în frecvenţă P6_7;
-produs în timp reprezintă convoluţie în frecvenţă P6_8.

Exemplul 7. Proprietatea de convoluţie în timp a Transformatei Fourier

% 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ă

Exemplul 8. Proprietatea de înmulţire a doua secvenţe (sau de convolutie în frecvenţă a


transformatei Fourier)

% 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');

Exemplul 9. Proprietatea de convoluţie circulară a DFT (relaţia (18))


Programul P6_9 pune în evidenţă faptul că se poate calcula convoluţia circulară a două
secvenţe cu ajutorul DFT-ului (Figura 1).

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ă

Exemplul 10. Obţinerea convoluţiei liniare cu ajutorul convoluţiei circulare


Se poate calcula convoluţia liniară a două secvenţe x1 şi x2 de lungime L1, respectiv L2, cu
ajutorul convoluţiei circulare. Dacă se adaugă zerouri la cele două secvenţe până când acestea
ajung la lungimea L1+L2-1, şi apoi se realizează convoluţia circulară între secvenţele astfel
formate rezultatul este identic cu cel obţinut prin calculul direct al convoluţiei liniare a
secvenţelor iniţiale. Programul P6_10 pune în evidenţă acest aspect:

% 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ă

Exemplul 12. Relaţia de echivalenţă a energiilor (relaţia lui Parseval)

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

1. Fie două secvenţe:


n  1 n  0,7 n 2  1 n  0,3
x y
0 în rest 0 în rest
Scrieţi un script Matlab care să calculeze:
a) convoluţia liniară a celor două secvenţe;
b) convoluţia circulară în 8 puncte a celor două secvenţe, în două moduri:
- cu ajutorul funcţiei circonv;
- cu ajutorul funcţiilor fft şi ifft. Comparaţi rezultatele.
c) convoluţia circulară într-un număr minim de puncte în care aceasta devine egală cu
cea liniară, în cele două moduri expuse la punctul b). Comparaţi cu rezultatul de la
punctul a).

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.

3. Generaţi şi reprezentaţi grafic următoarele semnale discrete:


- x[n]  e  an n  0,99; a  0.1
- h[n]  cos(2 fn) n  0,99; f  1/ 4
- y[n]  x[n]  h[n] n  0,99 .
Calculaţi şi reprezentaţi modulul Transformatei Fourier Discrete pentru secvenţele
x[n] şi y[n] .

4. Calculaţi şi reprezentaţi grafic partea reală şi cea imaginară a spectrului secvenţei

x = [1 2 4 2 6 32 6 4 2 zeros(1,247)]; şi a părţii impare a acesteia:

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

S-ar putea să vă placă și