impulse response 측정하기
on
일반적으로 impulse response는 말 그대로 impulse를 측정하려는 시스템에 쏘아주고 그 시스템의 출력을 측정하는 것으로 이루어진다. 사실 이 방법이 가장 간단하다.이 과정은 신호처리 중에서 중요한 토픽중의 하나로 깊숙히 파고들어가는 분야인데, 여기서는 복잡한 가정이나 조건들은 다 건너뛰고 지극히 기초적인 random process만을 이용하여 정리한 것이다.그런데 이렇게 측정하기 어려운 경우가 있다. 측정시에 노이즈가 존재하는 경우인데, 이러한 경우엔 다음과 같은 방법을 쓸 수 있다.1. single tone을 쏘아서 주파수 응답을 측정 -> fourier transform으로 impulse response로 변환2. (white) noise를 쏘아보내고 그 출력을 측정 -> 입력과 출력의 cross correlation을 측정한 후 여기서 impulse response를 측정입력을 $u(t)$라고 하고 측정시 더해진 잡음을 $n(t)$라고 하면, 출력은 다음과 같이 측정된다. (이 때 시스템은 linear time invariant 하다고 본다.)\(y(t) = \int h(\tau) u(t-\tau) d \tau + n(t),\)여기서 $h(\tau)$가 system의 impulse response가 되겠다.입력이 white할 때 출력의 autocorrelation을 계산하면 다음과 같아진다.\(E\{|y(t)|^2} = |h(\tau)|^2 + \sigma_n^2,\)결국,\(h(\tau) = \sqrt{ E\{|y(t)|^2} - \sigma_n^2}\)여기서 noise variance는 알 수 없으므로 DC term을 날리는 것으로 대체한다.또는, 출력의 power spectrum을 계산한다.\(E |Y(f)|^2 = |H(f)|^2\sigma_u^2 + \sigma_n^2,\)따라서, 추정하려는 system의 frequency response는 다음과 같아진다.\(H(f) = \sqrt{\frac{E |Y(f)|^2 - \sigma_n^2}{\sigma_u^2}},\)여기서 noise variance가 충분히 작으면 그냥 무시하거나 DC term으로 간주하고 빼준다. 위의 설명한 방법 중 white noise를 이용한 방법을 사용하여 추정한 impulse response를 적용해 보았다.1. original sound
- simulated IR (512 FFT)
- simulated IR (1024 FFT)
- simulated IR (2048 FFT)
- simulated IR (4096 FFT)