Documente Academic
Documente Profesional
Documente Cultură
Lucrarea 6
− j 2 kn / N
X [k ] = X = x[ n ]e = x[n ]e − j 2 kn / N , k = 0,1, , N −1 , (1)
N n =0 n =0
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)
68
PNS Lucrarea 6 Transformata Fourier Discretă
x n + N = x n , n (6)
şi X [k + N ] = X [k ] , k (7)
b) Liniaritatea. Dacă x j n şi X j [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
periodică
x p ' n = x p n − k = xn − k − m N , k 0 (10)
m = −
69
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
sau N .
e) Translaţia circulară în timp a unei secvenţe. Dacă xn ş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ă xn ş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ă xn şi X [k ] sunt
perechi DFT în N puncte, atunci
x ( −n ) N = x[ N − n ] ⎯⎯⎯⎯⎯→
DFT in N puncte
X ( −k ) N = X [ N − k ] (16)
h) Conjugarea complexă. Dacă xn ş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] N x2 [n] ⎯⎯⎯⎯⎯→
DFT in N puncte
X 1[ k ] X 2 [ k ] (18)
j) Proprietăţi de simetrie. Dacă
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ă, atunci
N −1
X R [k ] = xR [n]cos ( 2 kn / N ) + xI [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
N −1
1
xR [ n ] =
N
X
k =0
R [k ]cos ( 2 kn / N ) − X I [k ]sin ( 2 kn / N )
N −1
1
xI [ n ] =
N
X
k =0
R [k ]sin ( 2 kn / N ) + X I [k ]cos ( 2 kn / N )
Cazuri particulare:
a) Secvenţe cu valori reale. Dacă x[n] este real,
X [ N − k ] = X *[k ] = X ( −k ) N (21)
În consecinţă, | X [ N − k ] |=| X [k ] | şi X [ N − k ] = −X [k ] . Deoarece x I [n] = 0 ,
x R [n] = x[n] .
70
PNS Lucrarea 6 Transformata Fourier Discretă
a1) Secvenţe reale pare. Dacă x[n] este real şi par, adică
x[n] = x N − n , 0 n N − 1 , DFT se reduce la relaţia
N −1
X [k ] = x[n]cos ( 2 kn / N ), 0 k N − 1 (22)
n =0
a2) Secvenţe reale impare. Dacă x[n] este real şi impar, adică
x[n] = − x N − n , 0 n N − 1 , DFT devine
N −1
X [k ] = − j x[n]sin ( 2 kn / 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
% Se calculeaza pulsatiile la care se evalueaza Transformata
Fourier
clear;
clc;
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
figure(1);
clf;
subplot(2,1,1)
plot(w/pi,real(X));grid
71
PNS Lucrarea 6 Transformata Fourier Discretă
% Program P6_2
% Proprietatea de deplasare in timp a Transformatei Fourier
clear;
clc;
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);
figure(1);
clf;
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');
72
PNS Lucrarea 6 Transformata Fourier Discretă
ylabel('Faza');
subplot(2,2,4)
plot(w/pi,angle(X2));grid
title('Faza Transformatei Fourier a secventei deplasate')
xlabel('\omega /\pi');
ylabel('Faza');
% Program P6_3
% Reprezentarea unei secvente deplasate circular
clear;
clc;
M = 6;
a = [0 1 2 3 4 5 6 7 8 9];
b = circshift(a,[0 M]); % vezi help circshift
L = length(a);
n = 0:L-1;
figure(1);
clf;
subplot(2,1,1);
stem(n,a); axis([0,L,min(a),max(a)]); grid on;
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
clear;
clc;
x = [0 2 4 6 8 10 12 14 16];
N = length(x); n = 0:N-1;
x1 = circshift(x,[0 5]); %secventa x deplasata circular la
dreapta cu 5 esantioane
X = fft(x);
73
PNS Lucrarea 6 Transformata Fourier Discretă
X1 = fft(x1);
figure(1);
clf;
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');
figure(2)
clf
subplot(2,1,1)
stem(n,angle(X1));grid
title('Faza DFT a secventei deplasate circular');
xlabel('k');
ylabel('Faza');
subplot(2,1,2)
stem(n,angle(X.*exp(-1i*2*pi*n*5/N)));grid
title('Faza DFT a secventei initiale, inmultita cu exp(-
j*2*\pi*k*5/9)');
xlabel('k');
ylabel('Faza');
% Program P6_5
% Proprietatea de deplasare (translatie) circulara in
frecventa a DFT
clear;
clc;
x1 = [1 3 5 7 9 11 13 15 17];
X1 = fft(x1);
N=length(x1);
74
PNS Lucrarea 6 Transformata Fourier Discretă
k = 0:N-1;
m = 3;
x2 = exp(1i*2*pi*m*k/N).*x1; %secventa x1 modulata
X2 = fft(x2);
figure(1);
clf;
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
clear;
clc;
x = [1 -2 3 4 5 -6 7]+1i*[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;
figure(1);
clf;
subplot(2,2,1)
stem(k,abs(X));grid
title('Modulul DFT a secventei originale')
xlabel('k');
ylabel('Amplitudine');
75
PNS Lucrarea 6 Transformata Fourier Discretă
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');
% Program P6_7
% Proprietatea de convolutie in timp a Transformatei Fourier
(TF)
clear;
clc;
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);
figure(1);
clf;
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');
76
PNS Lucrarea 6 Transformata Fourier Discretă
subplot(2,2,4)
plot(w/pi,angle(Y));grid
title('Faza TF a convolutiei dintre cele doua secvente')
xlabel('\omega /\pi');
ylabel('Faza');
% Program P6_8
% Proprietatea de modulatie (sau convolutie in frecventa a
Transformatei Fourier (TF))
clear;
clc;
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;
Y = freqz(y,1,w);
Xconv = zeros(1,length(w));
for ind_w = 1:length(w)
Xconv(ind_w) = 1/(2*pi)*integral(@(lambda)
(X_TFTD(x1,lambda).*X_TFTD(x2,w(ind_w)-lambda)),-pi,pi);
%vezi help integral
end
figure(1);
clf;
subplot(2,2,1)
plot(w/pi,abs(Y));grid
title('Modulul TF a produsului celor doua secvente')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(2,2,2)
plot(w/pi,abs(Xconv));grid
title('Modulul convolutiei TF a celor doua secvente')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(2,2,3)
plot(w/pi,angle(Y));grid
title('Faza TF a produsului celor doua secvente')
xlabel('\omega /\pi');
ylabel('Faza');
subplot(2,2,4)
plot(w/pi,angle(Xconv));grid
title('Faza convolutiei TF a celor doua secvente')
xlabel('\omega /\pi');
ylabel('Faza');
function X = X_TFTD(x,lambda)
N = length(x);
X = 0;
for n=0:N-1
X = X + x(n+1)*exp(-1i*lambda*n);
77
PNS Lucrarea 6 Transformata Fourier Discretă
end
Figura 1
% Program P6_9
% Proprietatea de convolutie circulara a DFT
clear;
clc;
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
% Program P6_10
% Convolutia liniara cu ajutorul convolutiei circulare
clear;
x1 = [1 2 3 4 5 6];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
78
PNS Lucrarea 6 Transformata Fourier Discretă
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
1
secvenţe 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
clear;
clc;
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;
figure(1);
clf;
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]\})');
n =0 N k =0
Programul P6_12 pune în evidenţă această relaţie.
% Program P6_12
% Echivalenta energiilor (relatia lui Parseval)
clear;
clc;
x = [(1:128) (128:-1:1)];
XF = fft(x);
disp('Energia semnalului in domeniul timp:');
E1 = sum(x.*x)
79
PNS Lucrarea 6 Transformata Fourier Discretă
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.
80
PNS Lucrarea 6 Transformata Fourier Discretă
81