Fenomena ini tidak ada hubungannya dengan kebocoran spektral. Apa yang Anda amati adalah efek zero padding. Diberikan sejumlah sampel , ada resolusi frekuensi maksimum yang dimungkinkan yang dapat dicapai:NΔ f Δ f
Δ f= fsN
Dalam kasus Anda persis . Jika nol-pad sinyal Anda, tidak ada informasi tambahan untuk diambil - Anda hanya akan mengurangi jarak frekuensi .Δ f2H z
Dalam contoh di atas, ketika Anda meningkatkan hingga , Anda mendapatkan spasi frekuensi . Semua sampel ekstra yang diamati hanyalah interpolasi, dilakukan oleh fungsi jendela ( dalam kasus Anda). Anda akan mulai mengamati sisi-lobus dari spektrum jendela. Karena Anda secara implisit mengalikan sinyal Anda dengan jendela persegi panjang, ini akan menghasilkan konvolusi spektrum sinyal Anda (dua Dirac's + DC) dengan fungsi .N10001H zs i n cs i n c
Cara lain untuk melihatnya adalah membayangkan bahwa DFT pada dasarnya adalah bank filter, yang terdiri dari fungsi-fungsi bergeser . Mereka disejajarkan sedemikian rupa, bahwa puncak satu adalah di mana nol semua yang tersisa hadir. Jika Anda mulai mencari di antara nol itu , Anda akan mulai mengambil sampel itu. Berikut adalah contoh plot bank filter tersebut.s i n cs i n cs i n c
Mari kita bayangkan frekuensi yang sesuai dengan filter biru hadir. Itu akan menghasilkan amplitudo dalam nampan yang sesuai. Semua frekuensi yang tersisa tidak ada (oranye dan kuning), sehingga Anda mengalikan dengan dan tidak mendapatkan apa pun di nampan. Dalam hal zero padding, itu tidak lagi menjadi kasus. Sampel blue biru itu akan jatuh ke dalam nampan perantara dan akan diinterpolasi dengan tulus.sinc0sinc
Inilah yang terjadi untuk dan :N=1000N=10000
Dan bagian yang diperbesar:
Hal-hal yang perlu diperhatikan:
Untuk , tidak ada kebocoran sama sekali. Ada lonjakan yang sempurna, mewakili masing-masing frekuensi Anda dan offset DC.N=500
Kita juga bisa mengamati suara FFT di bagian paling bawah.
Untuk bentuk fungsi terlihat jelas.N=10000sinc
Dan jelas kode untuk mereproduksi hasil:
Fs=1000;
Ns=500;
Ns2=1000;
Ns3=10000;
t=0:1/Fs:(Ns-1)*1/Fs;
f1=10;
f2=400;
x=5+5*sin(2*pi*f1*t)+2*sin(2*pi*f2*t);
X1 = abs(fft(x))/length(x);
X2 = abs(fft(x, Ns2))/Ns;
X3 = abs(fft(x, Ns3))/Ns;
F1 = 0:Fs/Ns:Fs-Fs/Ns;
F2 = 0:Fs/Ns2:Fs-Fs/Ns2;
F3 = 0:Fs/Ns3:Fs-Fs/Ns3;
plot(F1, 20*log10(X1))
hold on
plot(F2, 20*log10(X2))
plot(F3, 20*log10(X3))
xlim([0, Fs/2])
grid on
legend({'N=500', 'N=1000', 'N=10000'})