Sunteți pe pagina 1din 10

PNS Lucrarea 6

Transformata Fourier Discret

Lucrarea 6 Transformata Fourier Discret


Scopul lucrrii este acela de a defini, implementa i de a pune n eviden unele dintre proprietile Transformatei Fourier Discrete cu ajutorul programului MATLAB.

1. Definiia Transformatei Fourier Discrete


Transformata Fourier discret a unei secvene x[ n] de durat finit L N se calculeaz cu relaia
N 1 2k L1 j 2kn / N X [k ] = X = x[n]e j 2kn / N ,k = 0,1,2,,N-1 = x[n]e 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] . Relaia

x[n] =

1 N 1 X [k ]e j 2kn / N , n = 0,1,2,,N-1 N k =0

(2)

definete transformat Fourier Discret Invers (ITFD, acronimul n englez este IDFT) i permite refacerea semnalului x[ n] din eantioanele 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 submulime a mulimii numerelor ntregi cu valori n mulimea numerelor complexe. (3) X [k ] =| X [k ] | e jX [ k ] unde | X [ k ] | reprezint modulul transformatei Fourier discrete, iar X [ k ] , faza sa. Notnd cu xN i XN vectorii corespunztori valorilor semnalului, respectiv valorilor TFD a acestuia i wN = e matriceal.
X N = WN x N
j 2 N

o rdcin de ordin N a unitii, DFT n N puncte se exprim n form (4)


ik

unde WN este matricea transformrii liniare, cu elementele WN (i, k ) = ( wN ) . Transformata Fourier discret invers se obine cu 1 * XN x N = WN N
* este conjugata lui WN. unde W N

(5)

47

PNS Lucrarea 6

Transformata Fourier Discret

2. Cteva proprieti ale DFT


a) Periodicitatea Dac x [n ] i X [ k ] sunt perechi DFT n N puncte, atunci

x[n + N ] = x[n ] , n Z
i

(6) (7)

X [k + N ] = X [k ] , k Z
b) Liniaritatea Dac x[n] i X [ k ] sunt perechi DFT n N puncte, atunci

a
j

in N puncte x j [n] DFT

a
j

X j [k ]

(8)

c) Deplasarea i simetria circular n timp Datorit proprietii de periodicitate,

transformata Fourier discret n N puncte a unei secvene x[n], de durat finit L N , este echivalent cu transformata Fourier discret n N puncte a unei secvene periodice x p [n], de perioad N, obinut prin repetarea periodic a lui x[n]

x p [n] =

m =

x[n m N ]
x[n k m N ], k>0

(9)

Prin deplasarea lui x p [n] cu k uniti spre dreapta (k>0), se obine secvena periodic

x p ' [n] = x p [n k ] =
Secvena aperiodic de lungime finit

(10)

m =

x ' [ n], 0 n N 1; x '[ n] = p 0, n rest


se obine din secvena original x[n] prin deplasare circular. Deplasarea circular cu k uniti a unei secvenei poate fi reprezentat cu indexul modulo N

x' [n] = x[( n k ) modulo N ] = x[(n k )N ]


punctul 0.

(11)

Reflectarea sau inversarea n timp se realizeaz prin reflectarea eantioanelor fa de

x[( n)N ] = x[N n] , 0 n N 1


d)

(12)

de durat finit N, x1[n] i x2 [n] ale cror transformate Fourier discrete sunt X 1[ k ] , respectiv X 2 [ k ] . Prin multiplicarea lor se obine o secven X 3 [ k ] , al crei original este o secven x3 [n] , tot de lungime N, dat de
N 1 n=0

Multiplicarea a dou DFT i convoluia circular Se presupun dou secvene

x3 [m] = x1[n] x2 ((m n)N ) , m = 0, 1, N 1

(13)

48

PNS Lucrarea 6

Transformata Fourier Discret

relaie care este o sum de convoluie, numit convoluie circular, datorit indexului (m n)N . Convoluia circular a dou secvene de lungime N se mai noteaz cu N
e) Translaia circular n timp a unei secvene Dac x[n] i X [ k ] sunt perechi
in N puncte x[(n m) N ] DFT e j 2 k m N X [k ]

DFT n N puncte, atunci (14)

f) Translaia circular n frecven a unei secvene Dac x[n] i X [ k ] sunt

perechi DFT n N puncte, atunci


in N puncte x[n]e j 2 n m N DFT X [(k m) N ]

(15)

g) Inversarea circular n timp a unei secvene Dac x[n] i X [ k ] sunt perechi

DFT n N puncte, atunci


in N puncte x[n] = x[ N n] DFT X [(k ) N ] = X [ N k ]

(16)

h) Conjugarea complex Dac x[n] i X [ k ] sunt perechi DFT n N puncte, atunci


in N puncte x * [n] DFT X * [( k ) N ] = X * [ N k ]

(17)

i) Convoluia circular Dac x1 [n] i X 1[ k ] , x2 [n] i X 2 [ k ] , sunt perechi DFT

n N puncte, atunci
in N puncte x1[n] x2 [n] DFT X 1[ k ] X 2 [ k ]

(18)

j) Proprieti 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


unde indicii R i I specific partea real, respectiv imaginar. (19)

X R [k ] = [x R [n] cos 2kn / N + x I [n] sin 2kn / N ]


n =0

N 1

X I [ n] = [x R [k ] sin 2kn / N x I [n] cos 2kn / N ]


n =0

N 1

(20)

x R [ n] =

1 N 1 [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) Secvene cu valori reale Dac x[ n] este real,

X [ N k ] = X * [k ] = X [k ]
49

(21)

PNS Lucrarea 6 n consecin, | X [ N k ] |=| X [ k ] | i

Transformata Fourier Discret

X [ N k ] = X [ k ] . Deoarece x I [n] = 0 ,

x R [n] = x[n] .
a1) Secvene reale pare Dac x[ n] este real i par, DFT se reduce la relaia

X [ k ] = x[n] cos 2kn / N , 0 k N 1


n =0

N 1

(22)

care este real i par. IDFT se reduce la

1 x[n] = N

N 1 k =0

X [k ] cos 2kn / N ,
N 1 n =0

0 n N 1

(23)

a2) Secvene reale impare Dac x[ n] este real i impar, DFT devine

X [ k ] = j x[n] sin 2kn / N , 0 k N 1


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

(24)

x[n] = j

1 N

N 1 k =0

X [k ]sin 2kn / N ,
N 1 n =0

0 n N 1

(25)

b) Secvene pur imaginare n acest caz x[ n] = jx I [ n]

X R [k ] = x I [n] sin 2kn / N X I [ n] = x I [n] cos 2kn / N


n =0 N 1

(26) (27)

Se observ c X R [ k ] este funcie 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. Aplicaii rezolvate
Exemplul 1. Urmtorul program evalueaz transformata Fourier discret
% Program P6_1 % Evalueaza DFT clf; % Se calculeaza frecventele la care se evalueaza DFT w = -4*pi:8*pi/511:4*pi; num = [2 1];den = [1 -0.6]; h = freqz(num, den, w); % Afisarea raspunsului in frecventa subplot(2,1,1) plot(w/pi,real(h));grid title(Partea reala din H(e^{j\omega})') xlabel('\omega /\pi'); ylabel('Amplitudine'); subplot(2,1,2) plot(w/pi,imag(h));grid title('Partea imaginara din H(e^{j\omega})')

50

PNS Lucrarea 6

Transformata Fourier Discret

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

Programele de mai jos ilustreaz cteva proprieti ale DFT:


Exemplul 2. Proprietatea de deplasare n timp a DFT Programul P6_2 i propune s pun n eviden influena deplasrii n timp a unei secvene discrete asupra spectrului de modul i de faz. Programul reprezint grafic spectrul de modul i faz a unei secvene discrete (num) i a secvenei deplasate cu D=10 eantioane la dreapta.
% Program P6_2 % Prprietatea de deplasare in timp a DFT clf; w = -pi:2*pi/255:pi; wo = 0.4*pi; D = 10; num = [1 2 3 4 5 6 7 8 9]; h1 = freqz(num, 1, w); h2 = freqz([zeros(1,D) num], 1, w); subplot(2,2,1) plot(w/pi,abs(h1));grid title('Modulul Transformatei Fourier a secventei date') subplot(2,2,2) plot(w/pi,abs(h2));grid title('Modulul Transformatei Fourier a secventei deplasate') subplot(2,2,3) plot(w/pi,angle(h1));grid title('Faza Transformatei Fourier a secventei date') subplot(2,2,4) plot(w/pi,angle(h2));grid title('Faza Transformatei Fourier a secventei deplasate')

Ce observai din punct de vedere al modulului Transformatei Fourier; dar din perspectiva fazei? Cum explicai rezultatul obinut?
Exemplul 3. Proprietatea de deplasarea n frecven a DFT Programul P6_3 pune n eviden deplasarea spectrului unei secvene discrete ca urmare a j n nmulirii acesteia cu o secven exponenial complex n timp e 0 .
% Program P6_3 % Proprietatea de deplsare in frecventa clf; w = -pi:2*pi/255:pi; wo = 0.4*pi; num1 = [1 3 5 7 9 11 13 15 17]; L = length(num1); h1 = freqz(num1, 1, w); n = 0:L-1;

51

PNS Lucrarea 6

Transformata Fourier Discret

num2 = exp(wo*i*n).*num1; h2 = freqz(num2, 1, w); subplot(2,2,1) plot(w/pi,abs(h1));grid title('Modulul TFD a secventei date') subplot(2,2,2) plot(w/pi,abs(h2));grid title('Modulul TFD a secventei deplasate in frecventa') subplot(2,2,3) plot(w/pi,angle(h1));grid title('Faza TFD a secventei date') subplot(2,2,4) plot(w/pi,angle(h2));grid title('Faza TFD a secventei deplasate in frecventa')

Facei aceleai observaii ca i la Exemplul 2? Urmtoarele dou programe pun n eviden dualitatea timp-frecven, i anume: -convoluie n timp reprezint produs n frecven P6_4; -produs n timp reprezint convoluie n frecven P6_5.
Exemplul 4. Proprietatea de convoluie a DFT
% Program P6_4 % Proprietatea de convolutie a DFT 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); h1 = freqz(x1, 1, w); h2 = freqz(x2, 1, w); hp = h1.*h2; h3 = freqz(y,1,w); subplot(2,2,1) plot(w/pi,abs(hp));grid title('Modulul produsului dintre DFT ale celor doua secvente') subplot(2,2,2) plot(w/pi,abs(h3));grid title('Modulul DFT a convolutiei dintre cele doua secvente') subplot(2,2,3) plot(w/pi,angle(hp));grid title('Faza produsului dintre DFT ale celor doua secvente') subplot(2,2,4) plot(w/pi,angle(h3));grid title('Faza DFT a convolutiei')

Exemplul 5. Proprietatea de nmulire a doua secvene


% Program P6_5 % Proprietatea de modulatie 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; h1 = freqz(x1, 1, w);

52

PNS Lucrarea 6

Transformata Fourier Discret

h2 = freqz(x2, 1, w); h3 = freqz(y,1,w); subplot(3,1,1) plot(w/pi,abs(h1));grid title('Modulul DFT a secventei x1') subplot(3,1,2) plot(w/pi,abs(h2));grid title('Modulul DFT a secventei x2') subplot(3,1,3) plot(w/pi,abs(h3));grid title('Modulul DFT a produsului celor doua secvente')

Exemplul 6. Proprietatea de inversare n timp P6_6 reprezint grafic spectrul de modul i faz a unei secvene num[n] i a secvenei num reflectat num[-n]. Funcia care face inversarea secvenei este fliplr.
% Program P6_6 % Proprietatea de inversare in timp clf; w = -pi:2*pi/255:pi; num = [1 2 3 4]; L = length(num)-1; h1 = freqz(num, 1, w); h2 = freqz(fliplr(num), 1, w); %vezi fliplr.m h3 = exp(w*L*i).*h2; subplot(2,2,1) plot(w/pi,abs(h1));grid title('Modulul DFT a secventei originale') subplot(2,2,2) plot(w/pi,abs(h3));grid title(' Modulul DFT a secventei reflectate') subplot(2,2,3) plot(w/pi,angle(h1));grid title('Faza DFT a secventei originale ') subplot(2,2,4) plot(w/pi,angle(h3));grid title('Faza DFT a secventei reflectate')

Exemplul 7. Deplasarea circular a unei secvene Secvena discret este deplasat circular cu M=6 elemente. Se vor reprezenta secvena iniial i cea deplasat circular.
% Program P6_7 % 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)-1; n = 0:L; 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']);

53

PNS Lucrarea 6

Transformata Fourier Discret

Exemplul 8. Proprietatea de deplasare circular n timp a DFT Programul P6_8 reprezint grafic spectrul de modul i faz a unei secvene discrete x i a secvenei x deplasat circular.
% Program P6_8 % Proprietatea de deplasare circular n timp a DFT clf; x = [0 2 4 6 8 10 12 14 16]; N = length(x)-1; n = 0:N; y = circshift(x,5); XF = fft(x); YF = fft(y); subplot(2,2,1) stem(n,abs(XF));grid title('Modulul DFT a secventei initiale'); subplot(2,2,2) stem(n,abs(YF));grid title('Modulul DFT a secventei deplasate circular'); subplot(2,2,3) stem(n,angle(XF));grid title('Faza DFT a secventei initiale '); subplot(2,2,4) stem(n,angle(YF));grid title('Faza DFT a secventei deplasate circular');

Exemplul 9. Proprietatea de convoluie circular a DFT P6_9 pune n eviden faptul c se poate calcula convoluia a dou secvene cu ajutorul DFTului (Figura 1). Calcul DFT se face cu funcia fft.m

Figura 1
% Program P6_9 % Proprietatea de convolutie circulara a DFT g1 = [1 2 3 4 5 6]; g2 = [1 -2 3 3 -2 1]; ycir = circonv(g1,g2,6); disp('Rezultatul convolutiei circulare = ');disp(ycir) G1 = fft(g1); G2 = fft(g2); yc = real(ifft(G1.*G2)); disp('Rezultatul convolutiei circulare cu ajutorul DFT');disp(yc)

Exemplul 10. Obinerea convoluiei liniare cu ajutorul convoluiei circulare Se poate calcula convoluia liniar a dou secvene g1 i g2 de lungime N respectiv M, cu ajutorul convoluiei circulare. Dac se adaug zerouri la cele dou secvene pn cnd acestea ajung la lungimea M+N-1, i apoi se realizeaz convoluia circular ntre secvenele astfel formate rezultatul este identic cu cel obinut prin calculul direct al convoluiei liniare a secvenelor iniiale. Programul P6_10 pune n eviden acest aspect:

54

PNS Lucrarea 6

Transformata Fourier Discret

% Program P6_10 % Convolutia liniara cu ajutorul convolutiei circulare g1 = [1 2 3 4 5];g2 = [2 2 0 1 1]; g1e = [g1 zeros(1,length(g2)-1)]; g2e = [g2 zeros(1,length(g1)-1)]; G1 = fft(g1e); G2 = fft(g2e); ylin = real(ifft(G1.*G2)); disp('Convolutia liniara cu ajutorul DFT = ');disp(ylin); y = conv(g1, g2); disp('Convolutia liniara calculata direct = ');disp(y); %vezi disp.m

Exemplul 11. Relaiile dintre DFT ale prilor pare i impare ale secvenelor reale periodice Programul P6_11 reprezint grafic partea real i cea imaginar a spectrului unei secvene 1 x[n] i a spectrului prii pare a acestei secvene: xe [n] = ( x[n] + x[ n]) . 2
% Program P6_11 % Relatiile dintre DFT ale partilor pare % si impare a secventelor reale x = [1 2 4 2 6 32 6 4 2 zeros(1,247)]; x1 = [x(1) x(256:-1:2)]; xe = 0.5 *(x + x1); XF = fft(x); XEF = fft(xe); clf; k = 0:255; subplot(2,2,1); plot(k/128,real(XF)); grid; ylabel('Amplitudine'); title('Re(DFT\{x[n]\})'); subplot(2,2,2); plot(k/128,imag(XF)); grid; ylabel('Amplitudine'); title('Im(DFT\{x[n]\})'); subplot(2,2,3); plot(k/128,real(XEF)); grid; xlabel('n');ylabel('Amplitudine'); title('Re(DFT\{x_{e}[n]\})'); subplot(2,2,4); plot(k/128,imag(XEF)); grid; axis([0 2 -100 100]) xlabel('n');ylabel('Amplitudine'); title('Im(DFT\{x_{e}[n]\})');

Exemplul 12. Relaia de echivalen a energiilor

1 Pentru o secven x[n] se demonstreaz c x(n) = N n =0 Programul P6_12 pune n eviden aceast relaie.
2

N 1

X (k )
k =0

N 1

% Program P6_12 % Ecuvalenta energiilor x = [(1:128) (128:-1:1)]; XF = fft(x); a = sum(x.*x) b = round(sum(abs(XF).^2)/256)

55

PNS Lucrarea 6

Transformata Fourier Discret

3. Aplicaii propuse
1. Fie dou secvene: n 1 n = 0,7 n 2 1 n = 0,3 y= x= n rest n rest 0 0 Scriei un script Matlab care s calculeze: a) convoluia liniar a celor dou secvene; b) convoluia circular n 8 puncte a celor dou secvene, n dou moduri: - cu ajutorul funciei circonv; - cu ajutorul funciilor fft i ifft. Comparai rezultatele. c) convoluia circular ntr-un numr minim de puncte n care aceasta devine egal cu cea liniar, n cele dou moduri expuse la punctul b). Comparai cu rezultatul de la punctul a). 2. Scriei un program care s pun n eviden relaia (17) din lucrare. n acest sens se va genera o secven complex x[n] , i se vor parcurge urmtorii pai: - se va conjuga secvena dat i se va calcula transformata Fourier Discret (vezi fft) a secvenei rezultate; - se va calcula transformata Fourier Discret a secvenei date, X ( k ) , dup care se va

conjuga i reflecta rezultatul, X *[ N k ] , unde N este numrul de puncte n care se realizeaz DFT-ul.
3. Generai i reprezentai grafic urmtoarele semnale discrete: - x[n] = e an 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 . Calculai i reprezentai modulul Transformatei Fourier Discrete pentru secvenele x[n] i y[n] .
4. Calculai i reprezentai grafic partea real i cea imaginar a spectrului secvenei
x = [1 2 4 2 6 32 6 4 2 zeros(1,247)]; i a prii impare a acesteia:

1 xo [n] = ( x[n] x[ n]) (vezi Exemplul 11). 2


5. Verificai cu ajutorul unui program MATLAB relaia lui Parceval n cazul secvenei:

n, pentru n = 0,7 x [ n] = 0, n rest

56

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