이 현상은 스펙트럼 누출과 관련이 없습니다. 관찰중인 것은 제로 패딩의 효과입니다. 다수의 샘플 주어지면, 달성 될 수 있는 최대 주파수 분해능 가 있습니다 :NΔ의 F Δf
Δf=fsN
귀하의 경우 는 정확히 입니다. 신호를 제로 패딩하면 검색 할 추가 정보가 없습니다 . 주파수 간격 만 줄 입니다.Δf2Hz
위의 예에서 을 늘리면 주파수 간격이 됩니다. 관찰 된 모든 추가 샘플은 창 함수 ( 귀하의 경우 에 의해 수행되는 보간 일뿐 입니다. 창 스펙트럼의 사이드 로브 관찰을 시작합니다. 신호에 직사각형 창을 내재적으로 곱했기 때문에 함수 를 사용하여 신호 스펙트럼 (2 개의 Dirac 's + DC)의 컨볼 루션이 발생 합니다.N10001Hzsincsinc
또 다른 방법은 DFT가 기본적으로 시프트 된 함수 로 구성된 필터 뱅크라고 상상하는 것입니다. 그것들은 1의 피크가 나머지 모든 것의 0 이 존재 하는 방식으로 정렬됩니다 . 0 사이에서 살펴보기 시작 하면 샘플을 채취하기 시작합니다. 이러한 필터 뱅크의 플롯 예는 다음과 같습니다 .sincs i n csinc
파란색 필터에 해당하는 주파수가 있다고 가정 해 봅시다. 해당 빈에 진폭이 나타납니다. 나머지 모든 주파수는 존재하지 않으며 (오렌지색과 노란색), 에 을 곱하고 빈에 아무것도 얻지 못합니다. 패딩이 0 인 경우에는 더 이상 적용되지 않습니다. 그 파란색 샘플은 중간 빈에 들어가고 sinc 보간됩니다.sinc0sinc
다음은 및 대해 발생합니다 .N=1000N=10000
확대 된 부분 :
주의 사항 :
를 들어 , 더 누설 전혀 없다. 각 주파수와 DC 오프셋을 나타내는 완벽한 스파이크가 있습니다.N=500
맨 아래에서 FFT 노이즈를 관찰 할 수도 있습니다.
들면 의 형상 기능은 명백히 가시적이다.N=10000sinc
그리고 분명히 결과를 재현하는 코드는 다음과 같습니다.
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'})