Це явище не має нічого спільного зі спектральним витоком. Те, що ви спостерігаєте, - це ефект нульової прокладки. Враховуючи кількість зразків N , існує максимально можлива роздільна здатність частоти Δ f яку можна досягти:
Δ f= fсN
У вашому випадку Δ f рівно 2H z . Якщо ви подаєте нульовий сигнал свого сигналу, додаткової інформації для отримання не буде - ви лишезменшите інтервал частоти.
У наведеному вище прикладі, коли ви збільшуєте N до 1000 , ви отримуєте інтервал частот 1H z . Усі додаткові спостережувані зразки - це лише інтерполяція, виконана функцією вікна (s i n c у вашому випадку). Ви почнете спостерігати за бічними часточками віконного спектру. Оскільки ви неявно помножили сигнал на прямокутне вікно, це призведе до згортання спектру вашого сигналу (два Дірака + DC) зфункцієюs i n c .
сi n cс я нc
s i n c0s i n c
N= 1000N= 10000
І збільшена частина:
Що потрібно помітити:
І очевидно код для відтворення результатів:
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'})