알 수 없는 영역

일단 들어가기 앞서-
Spectral Leakage 과 Aliasing은 유사한 개념으로 이해된다.

이중 Spectral Leakage는 Windowing과 관련되어 더 많이 사용되는듯 싶다.

여튼- 
이번 포스팅에서는 Spectral Leakage가 '왜'라는 측면보다 '언제'발생하는지에 대해 적어본다.


일단 (음성) 신호를 주파수 영역에서 분석하는 경우
퓨리에 변환(Fourier Transform)을 통해 시간 영역에서 주파수 영역으로 변환시킨 후-
주파수 분석을 수행하게 된다.

만약에 7Hz의 순수 사인파를 녹음한 뒤 퓨리에 변환을 한 후에 주파수 영역에서 보는 경우 '원칙적으로' 7Hz에서만 값이 있고 그 외의 부분에서는 값이 없어야 한다.
하지만 많은 경우 실제 퓨리에 변환을 해보면 이렇게 깔끔하게 나오지 않는다.
(그렇게 나오는 경우도 있겠지만 아닌 경우가 더 많다.)


아래 3 경우를 한 번 보자.

경우 1.
'100Hz로 샘플링한 7Hz 사인파' 100초(700 cycle)를 FFT를 돌린 경우

7Hz에서 Peak가 선명하게 나타난다.


경우 2.
동일한 '100Hz로 샘플링한 7Hz 사인파' 1초(7 cycle)를 FFT를 돌린 경우





이 경우 약간의 spectral leakage가 발생한다. Spectral leakage가 발생하는 이유는 관측하는 interval이 너무 제한되어 있었기 때문이라고 볼 수 있다.
(700 cycle vs. 7 cycle)


경우 3.
위와 동일한 '100Hz로 샘플링한 7Hz 사인파' 1.4초 (9.8 cycle)에 대해 FFT를 돌린 경우.


위 1과 2의 경우 cycle이 정수배였으나 이번에는 그렇지 않다. 즉, 신호의 끝 부분에서의 amplitude가 0이 아니다. 이런 경우에 glitch가 발생하게 되고 더 많은 spectral leakage를 발생하게 된다.



Spectral Leakage가 발생하면 두 가지 문제가 발생할 수 있다.
1. 원했던 주파수 요소의 에너지가 100% 표시되지 않는다.
2. 성분이 강한 신호의 Spectral leakage는 작은 신호를 가릴 수도 있다. 이런 경우엔 작은 신호를 확인하거나 찾기란 쉽지 않다.

그렇다면 Spectral leakage를 줄이는 방법은?

측정 시간의 끝을 불연속하게 끊나지 않게 하는게 한가지 방법이 있을것이다.
하지만 FFT돌리기 전에 모든 신호를 시간 영역에서 확인하고 FFT 할 수는 없기에-
측정 시간의 끝을 0에 가깝게 줄이는 방법을 택하면 그나마 좀 나아질 수 있다.
즉, windowing을 적용하는 방법이 있겠다.


Spectral Leakage는 FFT때문에 발생한다라고 규정짓기 보다는 관측할 수 있는 시간이 한정적이라서 발생한다고 볼 수 있다.