Rig file 분석 (5)

생각보다 IR처리에 복잡한 연산이 들어갔음을 확인했다. 대략적으로 전개하고자 한다.Profile된 data는 주파수 별 amplitude가 들어가있는 것처럼 보이지만, 실제로 하나의 값에 두 개의 값, 즉 진폭과 위상 정보를 같이 가지고 있을 수 있도록 처리했다. 실제로 response는 256개 이지만 처리되는 것은 512개로서 다음과 같이 전개해보기로 한다.Profile data를 $X_k$라고 하자. 주파수 영역에 정의되어있다. 이것을 다음과 같이 처리한다. 1. Natural log를 씌운 후 IFFT한다. 두 배의 샘플 사이즈의 공간에 대칭이 되도록 만들어 IFFT 결과가 실수가 되도록 유도한다. 즉 $ IFFT (\ln (X_k)) $ 1. 앞에서 얻은 결과로부터 대칭이 되는 나머지 절반을 0으로 지워버려 최종 결과로 얻어질 impulse response가 절반이 되게끔 해준다. 1. 다시 FFT하여 주파수 영역으로 변환한다. 이때 나온 결과에서 실수 값에는 exp를 적용하고 허수 값은 phase로 처리하여 $e^{[Re{\hat{X}_k}]} exp (j {[Im{\hat{X}_k}]})$ 되게끔 한다. 1. 이 결과를 다시 IFFT하여 최종적인 impulse response를 얻는다.과연 이게 뭐하는 짓인가 생각해보게 되는데, 과정을 거꾸로 거슬러 올라가서 생각해보면 1. 측정된 impulse response를 FFT해본다. audio signal은 실수이므로 FFT결과는 대칭으로 나타날 것이다. 1. 나타난 결과에서 amplitude는 ln를 씌워 실수로 몰아넣고, phase를 계산하여 허수에 몰아넣는다. 1. 앞의 결과를 가지고 IFFT해본다. 여기서 amplitude와 phase를 보면 1의 결과가 0을 중심으로 대칭이므로, 마찬가지로 대칭이 되므로 IFFT 결과는 실수로 나타나게 될 것이다. 그러나, 1의 impulse response와 비교하면 ln을 씌웠으므로 진폭이 줄어들은 결과가 나타나게 되고 마찬가지로 결과는 비대칭한 형태가 된다. 여기서 FFT하게 되면 그 결과가 실수로 나올 수 있도록 일부러 0을 중심으로 complex conjuate하게끔 다시 꾸며준 다음 FFT한다. 1. 위 결과는 complex conjugate한 신호를 FFT 했으므로 실수로 나타난다. 이 결과에 exp를 계산한다. FFT의 response만 가지고 FIR filter를 꾸미게 되면 해당 filter는 linear response를 갖게 되지만 causual한 특성을 가져야 되니 시간적으로 대칭된 형태를 갖게 되고, linear phase의 특성을 가지게 되니 좋긴하겠지만 delay 가 늘어나고 natural하지 않은 응답, 즉 신호가 본격적으로 나타나기도 전에 echo가 먼저 나타나는 현상을 보여주는데, 위 열거한 방법을 쓰게 되면 주파수 응답은 거의 같지만 impulse response를 원래 그대로의 짧은 형태로 가져갈 수 있어 좋다.