Instrument Control Toolbox

使用したサウンドカードによるデータ収集

典型的なデータ収集セッションは、次の4つのステップからなります。


  1. 初期化
2. コンフィギュレーション
3. 実行
4. 終了処理




音叉の基本周波数が 440Hz であることを確認するために、音を収集し、MATLAB で解析します。これは、以下に説明するセットアップの例です。


この例は、音叉の基本(最低)周波数が 440Hz であることを確認するものです。そのため、マイクロホンとサウンドカードを用いて音圧レベルデータを収集します。次に、音叉の周波数成分を調べるために、収集したデータに FFT 処理を行います。


サウンドカードの1chより2秒間の音圧レベルデータを収集します。音叉は基本周波数 440Hz で振動するので、サウンドカードのサンプリングレートは、最低サンプリングレートの 8000Hz に設定可能です。


音叉を振動させ、マイクロホンをその近傍に置き、トリガーを掛けて収集します。データ収集セッションの詳細な説明を以下に説明します。


初期化

最初のステップは、サウンドカードのアナログ入力オブジェクト(AI)の作成です。

AI = analoginput('winsound');

コンフィギュレーション

次に、AI にチャネルを1つ加え、8000Hz のサンプリングレートで2秒間のデータ収集を行うように設定します。

addchannel(AI, 1);
Fs = 8000;              % Sample Rate is 8000 Hz
set (AI, 'SampleRate', Fs)
duration = 2;           % 2 second acquisition
set(AI, 'SamplesPerTrigger', duration*Fs);

実行

データ収集開始の準備が整いました。デフォルトのトリガ動作は、startコマンド発行直後にデータ収集を開始します。収集を開始する前に、あらかじめ音叉をたたいて、マイクロホンに音が入っている(余韻が残っている)状態にします。

start(AI);

全てのデータを取り出します。

data = getdata(AI);

終了処理

全てのデータを取得すると、収集は終了します。収集セッションを終了するために、ワークスペースから AI オブジェクトを削除します。

delete(AI)

結果

音叉の周波数成分を調べ、結果をプロットしましょう。最初にデータのFFT処理し、その絶対値を計算します。

xfft = abs(fft(data));

次に、絶対値をdB値に変換し、実際の周波数成分(正の周波数成分)を取り出します。

mag = 20*log10(xfft);
mag = mag(1:end/2);

結果は、基本周波数が440Hz付近にあり、一次高調波が880Hz付近にあることを示しています。簡単な方法で、正確な基本周波数を見つけることができます。

[ymax,maxindex]=max(mag);

答えは441Hzです。


異なるハードウェアを使用する場合

この例は、異なるハードウェアを使用する場合でも、単純にコードを2行書き換えるだけで再利用できます。例えば、National Instruments のマルチファンクション・カードを使用する場合は、以下のようにアナログ入力オブジェクトを作成します。

AI=analoginput('nidaq','Dev1');
addchannel(AI,0)

同様に、HP-E1432Aをデータ収集目的で使用する場合は、以下のコードとなります。

AI=analoginput('mcc',8);
addchannel(AI,1)