안녕하세요.

혼자서는 고민하고 구글링도 해 보았지만 진도가 막혀서 질문 드립니다.

하나는 FFT 관련하여 이론적인 질문이고 다른 하나는 MFC에서 그래프를 그릴 수 있는 방법에 대한 질문입니다.

 

44100Hz로 샘플링 된 음악 파일이 있습니다.

여기서 1024개 샘플씩 잘라서 FFT를 돌립니다. 

그 결과 나오는 아웃풋 1024개(정확히는 real 1024, imaginary 1024) 값은 주파수 축에서 0~44100Hz까지 범위를 표현합니다.

하지만 샘플링 이론에 의해 1024개 아웃풋 중 절반인 512개 만 의미있는 값으로 이는 0~22050Hz의 범위를 나타냅니다.

여기서 인풋 1024개 샘플만을 가지고 FFT 결과 44100Hz까지 주파수 도메인을 표현할 수 있다는 것과, 그 중 절반인 512개 만이 의미있는 값이라는 것이 이해가 가지 않습니다. 샘플링 이론으로 22000Hz까지 표현하기 위해서 샘플링 rate가 44000Hz이상이어야 하는 것은 알겠습니다만;;

아웃풋 512개를 가지고 0~22000Hz까지 그래프를 그려보면(real과 imag를 제곱하여 magnitude를 그려보면) 아주 낮은 대역과 20000Hz 부근만 값이 크게 솟고 나머지 부분은 크게 튀는 값의 100~1000분의 1 수준입니다.

일반적으로 음악을 주파수 축으로 바꾸었을 때 굉장히 낮은 대역과 굉장히 높은 2만 Hz이상의 대역만 값이 튀는 것이 정상적인 걸까요. 특히나 2만Hz이상의 값이 확 튀는 것이 이상합니다. 또한 200Hz 밑의 대역과 1000~2000HZ 대역 값이 100배, 1000배 가까이 차이날 수가 있을까요?

 

두번째 질문은 FFT 결과 나온 데이터 값을 가지고 그래프를 그리려고 합니다.

1024개 데이터 값을 엑셀 그래프처럼 표현하고 싶은데 어떤식으로 접근해야 할까요?

 

글 읽어주셔서 감사합니다. 조금이라도 도움이 될만한 부분이 있으면 조언 부탁드립니다.