Documente Academic
Documente Profesional
Documente Cultură
(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
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
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
a
j
X j [k ]
(8)
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 =
(11)
(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
(13)
48
PNS Lucrarea 6
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 ]
(15)
(16)
(17)
n N puncte, atunci
in N puncte x1[n] x2 [n] DFT X 1[ k ] X 2 [ k ]
(18)
j) Proprieti de simetrie
N 1
N 1
(20)
x R [ n] =
X [ N k ] = X * [k ] = X [k ]
49
(21)
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
N 1
(22)
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
(24)
x[n] = j
1 N
N 1 k =0
X [k ]sin 2kn / N ,
N 1 n =0
0 n N 1
(25)
(26) (27)
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
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');
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
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')
52
PNS Lucrarea 6
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
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
% 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]\})');
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
55
PNS Lucrarea 6
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
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:
56