Zjawisko to nie ma nic wspólnego z wyciekiem spektralnym. To, co obserwujesz, to efekt zerowania paddingu. Biorąc pod uwagę liczbę próbek N. , jest maksymalną możliwą rozdzielczość częstotliwości Δ f , które mogą być osiągnięte:
Δ f= fsN.
W twoim przypadku Δ f jest dokładnie 2)H z . Jeśli wyzerujesz sygnał, nie będziesz musiał odzyskać dodatkowych informacji - zmniejszysz tylkoodstępy częstotliwości.
W powyższym przykładzie, gdy zwiększysz N. do 1000 , uzyskasz odstęp częstotliwości 1H z . Wszystkie dodatkowe próbki obserwowane są jedynie interpolacji, wykonywane przez funkcję okna (y : i n c w danym przypadku). Zaczniesz obserwować płaty boczne spektrum okien. Ponieważ niejawnie mnożone przez sygnał o prostokątnym oknie, będzie to prowadzić do splotu widma sygnału (dwa + DC Diraca) zy : i n c funkcyjnych.
y : i n cy : i n c
y : i n c0y : i n c
N.= 1000N.= 10000
I powiększona część:
Rzeczy do zauważenia:
I oczywiście kod do reprodukcji wyników:
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'})