이 맥락에서 해상도 는 매우 특정한 정의를 가지고 있습니다. 근처 주파수에서 두 개의 개별 톤 을 해결 하는 능력을 말합니다 . 스펙트럼 추정의 샘플 속도가 증가했지만 236Hz 및 237Hz와 같은 두 가지 톤을 구별 할 수있는 능력이 없습니다. 대신, 제로 패딩을 얼마나 많이 적용하든 단일 블롭으로 "용융"됩니다.
해상도를 높이는 해결책은 더 오랜 시간 동안 신호를 관찰 한 다음 더 큰 DFT를 사용하는 것입니다. 이로 인해 너비가 DFT 크기에 반비례하는 메인 로브가 생성되므로 충분히 오랫동안 관찰하면 실제로 서로 가까운 여러 톤의 주파수를 확인할 수 있습니다.
-
이것이 어떻게 나타나는지 알아보기 위해 여기에 두 개의 신호, 원래 정현파 및 0에서 100Hz만큼 주파수가 다른 신호의 추가에 대한 확대 FFT 플롯이 있습니다.
플롯의 100Hz 차이 끝 (왼쪽)에서만 두 가지를 구별 (해결) 할 수 있습니다.
아래 플롯을 생성하기위한 Scilab 코드.
f = 236.4;
d = 10;
N=441;
fs=44100;
extra_padding = 10000;
t=[0:1/fs:(d/1000-1/fs)]
ff = [0:(N+extra_padding-1)]*fs/(N+extra_padding);
x = sin(2*%pi*f*t);
XX = [];
for delta_f = [0:100];
y = sin(2*%pi*(f+delta_f)*t);
FFTX = abs(fft([x+y zeros(1,extra_padding)]));
XX = [XX; FFTX];
end
mtlb_axis([0 1300 0 500])
figure(1);
clf
[XXX,YYY] = meshgrid(ff,0:100);
mesh(XXX(1:100,[50:90]),YYY(1:100,[50:90]),XX(1:100,[50:90]))