Przemysław Paturaj 184135 29.11.2011
Paweł Korab 187967
Wydział Elektroniki, AiR
Prowadzący : Dr inż. Paweł Biernacki
TP Wtorek 7:30
Sprawozdanie nr 2
Temat : Dyskretna transformata Fouriera DFT.
Zadanie 1.
DFT dla funkcji sinus :
a) całkowita liczba okresów
b) niecałkowita liczba okresów
Niepełna liczba okresów (ograniczona długość sygnału) wpływa na rozdzielczość widma rozciągając go. W dziedzinie częstotliwości występuje przeciek widma (Widmo się powiela i nakładają się na siebie wykresy).
Zadanie 2.
Zbadać fazy sygnału : sinus i cosinus
a) sinus
b) cosinus
Zadanie 3.
Zbadać sygnał prostokąta, wyświetlić wartość rzeczywistą i zespoloną
a) sygnał pierwotny
b) rzeczywisty
c) zespolony
Zadanie 4.
Zbadać sygnał nagrania .wav :
a) policzyć transformate fouriera, czym różnią się dwie wersje ?
wersja 1 :
wersja 2:
Nagrania po transformacie różnią się minimalnie amplitudami na początku i końcu badanego sygnału.
b) czym różnią się DFT o dwóch różnych "N" ?
Zwiększenie ilości próbek sygnału pozytywnie wpływa na poprawę jakości DFT , redukcję przecieku widma. Również okienkowanie zmniejsza przeciek DFT przez zminimalizowanie amplitudy listków bocznych funkcji . Im okno jest bardziej ciągłe, tym amplituda listków bocznych jest mniejsza, a tym samy redukowany jest przeciek. Przeciek widma jest jedną z cech charakterystycznych DFT. Powoduje on, że wyniki DFT stanowią jedynie aproksymację rzeczywistych widm oryginalnych sygnałów poddanych próbkowaniu.
Skrypty :
Zad3.m
[t,x]=prostokat_dobry(10,2,100,2,0,0.3);
y=fft(x);
fp=100;
f=(0:length(y)-1)*fp/length(y);
yre=real(y);
yim=imag(y);
subplot(2,1,1)
plot(f,yre)
semilogy(f,yre)
title('Sygnał rzeczywisty');
xlabel('Częstotliwość [Hz]');
subplot(2,1,2)
plot(f,yim)
semilogy(f,yim)
title('Sygnał zespolony');
xlabel('Częstotliwość [Hz]');
semilogy(f,abs(y))
title('Sygnał pierwotny');
xlabel('Częstotliwość [Hz]');
zad2.m
function faza(s, fp)
N = length(s);
df = fftshift(fft(s));
dff = abs(df);
gff = (unwrap(angle(df)));
F = fp*[0:N-1]/N;
plot(F, gff);
grid on;
title('Faza sygnalu');
ylabel('Faza sygnalu phi');
xlabel('Czestotliwosc sygnalu f');
zad4.m
subplot(2,2,1)
[x,fp]=wavread('3ver1.wav');
N=length(x);
t=0:1/fp:(N-1)/fp;
y=abs(fft(x));
plot(t,x); %sygnal oryginalny
title('3ver1-sygnal oryginalny');
xlabel('Częstotliwość [Hz]');
subplot(2,2,2)
plot(t,y); %sygnal fft
title('3ver1-po transformacie');
xlabel('Częstotliwość [Hz]');
subplot(2,2,3);
[s,fp]=wavread('3ver2.wav');
N1=length(s);
t=0:1/fp:(N1-1)/fp;
y1=abs(fft(s));
plot(t,s); %sygnal oryginalny
title('3ver2-sygnal oryginalny');
xlabel('Częstotliwość [Hz]');
subplot(2,2,4);
plot(t,y1); %sygnal fft
title('3ver2-po transformacie');
xlabel('Częstotliwość [Hz]');
zad1.m
figure
hold on;
grid on;
xp=abs(fft(x(1:100)));
xnp=abs(fft(x));
Subplot(2,1,1)
plot(xp)
title('Pełna liczba okresów');
xlabel('Częstotliwość [Hz]');
Subplot(2,1,2)
plot(xnp)
title('Niepełna liczba okresów');
xlabel('Częstotliwość [Hz]');
sinus1.m
function [t,x]=sinus1(A,f,fp,T,faza)
t=zeros(1,T*fp);
x=t;
k=1;
for i=0:1/fp:T
t(k)=i;
x(k)=A*cos(2*pi*f*i+(faza*pi)/180);
k=k+1;
end;
prostokat_dobry.m
function [t,x]=prostokat_dobry (A,f,fp, T, faza, w)
t=zeros (1, T*fp);
x=t;
proz=floor(w*fp/f);
prz=floor((1-w)*fp/f);
k=1;
i=0;
while k <=(T*fp)
for j=i: proz
t(k)=i;
x(k)=A;
k=k+1;
i=i+1/fp;
end;
for j=1: prz
x(k)=0;
t(k)=i;
k=k+1;
i=i+1/fp;
end;
end;
zad4b.m
fp=100;
t=0:1/fp:1;
f=400/140; % mniejsze : 400/16
x=0.5*sin(2*pi*f*t);
X=fft(x);
X_mag=abs(X);
stem(X_mag);
title('Większe "N"'); %title('Większe "N"');
xlabel('Częstotliwość [Hz]');