エコーで距離
「エコー」で試したことを元に距離を測ってみます。
Silverlightアプリケーションで、図をクリックすると実行します。
結論はあまり上手く行きません。
方法の問題か、環境の問題なのかもまだわかりません。もう少し試してみます。
音速
距離は音速から計算しますが、音速の正しい値はわかりません。
多くの場合、メートルで表され、小数点以下1桁か2桁で、数センチ以下の精度です。
また、温度、湿度、気圧の影響で変化します。0℃ と 20℃では、2m近く違います。
さらに、空気の流れがあれば大きく変わります。
「音の伝播」、「音速と音高」
方法
スピーカとマイクを並べて置いて、スピーカーから決まった周波数の正弦波を150ms再生します。
マイクには、150ms に反響を加えた時間の信号が入力されると言うものです。
プログラムで、スピーカーから再生を指示しても、実際に何時鳴るかはわかりません。
再生機構の発振器の正確さを利用しようとするものです。
スピーカーからは、サンプリングレート 16,000Hz で再生しています。
マイクからは、サンプリングレート 48,000Hz で入力しています。
振幅
最初の図の赤い線は、振幅の大きさを表しています。
1ms間の振幅のレンジをプロットしています。
1ms中に複数の周期が含まれないと成り立たないので、2,000Hz以上の音を使います。
実行してみると、赤の線の立ち上がりから立下りは、ほぼ 150ms でした。
反響や残響は、振幅値としてはほとんど表れていません。
相関
最初の図の青い線は、相関係数を表しています。
振幅値としては、小さくなっていても、信号の周期性から、一定時間、スピーカー出力の影響があることが分かります。
相関係数が0.5の線を下る向きに切った点で、距離を算出してみました。
相関係数も1msごとに計算しています。
ただし、これは変化が大きかったので、前後の数ミリ秒の区間で計算したものを使っています。
|