impulse response 측정하기

일반적으로 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

  1. simulated IR (512 FFT)
  1. simulated IR (1024 FFT)
  1. simulated IR (2048 FFT)
  1. simulated IR (4096 FFT)