B16 位相2

室長:実際のデータでみていこう。test.wavに20cmフルレンジを小型の密閉箱に入れてリスニングポイントで測定したデータが入ってる。

助手:例によってoctaveでtest.wavを読み込んで…..壁の1次反射が近いですね。100サンプルほどしか切り出せませんがやってみます。


a=wavread ("test.wav");
a=a(:,1);
b=pcmread("inverse44k2sec.pcm");
c=fftconv(a,b);
c2=c(148700:148800);
c2=mado2(c2);
[h w]=freqz(c2,1,4096,44100);
plot(w,arg(h));

何ですか?これは…

室長:時間がずれてるのだ。切り出したインパルスレスポンスが先頭から27サンプルずれてる。それを補正して表示して見れ。

助手:27サンプル、約0.61mSec先の位相をみれば良いのですね。


t=27/44100;
h2(1)=h(1);
for n=2:length(h)
  h2(n)=h(n)*(cos(2*pi*t*w(n))+sin(2*pi*t*w(n))*i);
endfor
plot(w,arg(h2));

大分ましになりました。

室長:角度の範囲が±πになっているので不連続になってる。連続のグラフにしてみてくれ。

助手:複素数の割り算で角度の差が計算できるので…


ar(1)=arg(h2(1));
for n=2:length(h2)
  ar(n)=ar(n-1)+arg(h2(n)/h2(n-1));
endfor
plot(w,ar);

室長:では次回はテキトーに左右の特性を揃える補正フィルタを作ってみよう。

2013年1月18日

次ページへ

目次へ