주파수 분해능이 좋은 경우 제로 패딩 후 DFT에서 주파수 누출이 발생하는 이유는 무엇입니까?


12

이 예제를 고려해 봅시다 :

Fs=1000; 
Ns=500;
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);
X=fft(x);

이 시나리오에서는 주파수 분해능이 2이며 모든 주파수 구성 요소가 올바르게 캡처됩니다. 그러나 내가 이것을하면 :

  X=fft(x,1000);

주파수 분해능은 1이지만 스펙트럼 누출이 있습니다. 비슷한 효과가 여기 에 표시 됩니다 . 두 창 (길이 500, 길이 1000)의 푸리에 변환이 신호에 표시되는 주파수에서 0을 가지므로 누설이 발생하는 이유를 모르겠습니다.


제로 패딩은 명백한 스펙트럼 누출을 감소 시키지는 않지만 스펙트럼 누출 범프를보다 부드럽게 보이게합니다.
robert bristow-johnson 2012

답변:


18

이 현상은 스펙트럼 누출과 관련이 없습니다. 관찰중인 것은 제로 패딩의 효과입니다. 다수의 샘플 주어지면, 달성 될 수 있는 최대 주파수 분해능 가 있습니다 :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'})

1
매우 완전한 답변 +1. "[...] 주파수 간격 만 증가시킵니다." 내가 생각하는 감소 해야합니다 .
Matt L.

2

스펙트럼 누출은 일반적으로 다른 영역에서 Sinc convolution 효과 또는 직사각형 윈도우의 인공물 (귀하의 경우 t 또는 시간)의 다른 이름입니다. 그리고 0이 아닌 패딩은 더 긴 FFT에 직사각형 창 (0이 아닌 원래 데이터)을 추가하여 수행됩니다.

하나의 주파수를 제외하고 FT가 전혀 0이어야한다는 가설은 일반적으로 거짓입니다. 유한 길이 (및 0이 아닌) 신호는 무한 범위의 0이 아닌 스펙트럼을 갖습니다. 무한한 범위의 스펙트럼 (Sinc shape, 또는 다른 Windows의 변형)은 순수한 정현파에 대해서만 DFT / FFT 결과에서 보이지 않을 것입니다. 제로 패딩은 허용하지 않습니다.


1

누설은 특히 실제 길이의 유한 길이 창에서 발생합니다. 그러나 사인 구성 요소의 정수 기간이 정확히있는 경우 FFT 고유의주기는 사인이 "무한"한 것처럼 작동하며 주파수는 이산 된 빈에 정확하게 해당합니다. 따라서 신호의주기를 미리 알고 있다면 푸리에 도구를 사용하여 분석 할 필요가 없습니다.

제로 패딩을 사용하면 더 이상 순수한 사인이 없습니다. 정수 기간이 아닌 다중 창도 없습니다. 창 경계에서 갑작스런 변화를 일으키는 죄의 덩어리를 연결하고 있습니다. 따라서 전체주기 신호는 더 이상 "무한 사인"이 아닙니다. 따라서 @jojek에 의해 완벽하게 설명 된 것처럼 누출로 동화 된 것을 얻을 수는 있지만 패딩 효과는 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.