Hiện tượng này không liên quan gì đến rò rỉ quang phổ. Những gì bạn đang quan sát là ảnh hưởng của đệm không. Đưa ra một số mẫu N , có một khả năng tối đa độ phân giải tần số Δf có thể đạt được:
Δf=fsN
Trong trường hợp của bạn Δf là chính xác 2Hz . Nếu bạn không đệm tín hiệu của bạn, không có thêm thông tin để truy xuất - bạn sẽ chỉ giảmkhoảng cách tần số.
Trong ví dụ trên, khi bạn tăng N lên 1000 , bạn sẽ có khoảng cách tần số là 1Hz . Tất cả các mẫu quan sát thêm chỉ là một phép nội suy, được thực hiện bởi hàm window (sinc trong trường hợp của bạn). Bạn sẽ bắt đầu quan sát thùy bên của phổ cửa sổ. Vì bạn đã nhân tín hiệu của mình với một cửa sổ hình chữ nhật, điều này sẽ dẫn đến sự kết hợp phổ của tín hiệu của bạn (hai Dirac's + DC) vớichức năngsinc .
sincsinc
sinc0sinc
N=1000N=10000
Và một phần phóng to:
Những điều cần chú ý:
Và rõ ràng là mã để tái tạo kết quả:
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'})