例: WAV ファイルの使用とスペクトログラムの作成
READWAV関数と
GETWAVINFO関数を使用して WAV ファイルを読み込み、フォーマット情報を取得します。
WAV 情報の取得
1. GETWAVINFO を使用してサウンドファイルの情報を取得します。このサウンドファイルは、イルカ類の鳴き声をサンプリングしたものです。任意の音楽プレーヤーで再生できます。
ベクトルは、オーディオプレーヤーデバイス音声をリアルタイムで再生するために処理が必要なチャンネル数、サンプルレート、解像度 (サンプルあたりのビット数)、1 秒あたりの平均バイト数からなります。
2. ベクトル変数を評価します。
サウンドファイルの読み取り
1. READWAV 関数を使用してサウンドファイルを読み取り、ベクトルとして保存します。
READWAV により行列が返る場合、それに続く列はデータの別のチャンネルを表します。
2. length関数を使用して、サンプルの総数を計算します。
3. 信号をプロットします。
4. 関数
match、
max、および
minを使用してマグニチュードが最大および最小のサンプルを求め、対応するサンプル時間を求めます。
5. 最初の 25000 個のサンプルをプロットして、マーカーを使用して最大のマグニチュードを持つサンプルを示します。
スペクトログラムを作成します。
データを小さな時間のスライスに分割し、各スライスの周波数成分を表示してサウンドデータを分析します。この例では 128 サンプルのスライスを使用しています。
1. 2 のべき乗のスライスサイズのベクトルを定義します。
ここで、ss はスライス行列の行数です。
2. 0-90% まで 10 ずつ増加する重なり因子のベクトルを定義します。
重なりは 100% 以外でなければなりません。
3. 重なり因子を設定し、floor 関数と ceil 関数を使用して行列のサイズを定義します。
重なりがゼロに設定されている場合、Data ベクトルはいくつかの長さ ss のチャンクに分割されます。次の方程式のように、重なりが増えると長さ ss のチャンクの数も増えます
スライスサイズと重なり因子の組み合わせにより、それぞれ異なるスライス行列の次元になります。
ss=128 と overlap=40% を使用すると、128x2602 行列になり、作成とプロットに非常に長い時間がかかる可能性があります。
4. ti 以下となる 10 個の値のいずれかに ti を設定しやすくするために、ベクトル TI を作成します。
5. TI の中間成分のいずれかに ti を設定し、ワークシート下部の等高線図を確認します。
新しいスライス行列の次元は以下のようになります。
6. 各スライスを Hamming ウィンドウ処理します。
7. log 関数を使用して、周波数をデシベルで表します。
8. dft関数 (または廃止された
fft 関数) を使用して、スライスのフーリエ変換を求めます。
廃止された fft 関数を使用する場合、上記の領域を向こうにして次の領域を有効にします。
9. 等高線図を使用して spectra をプロットします。
10. さまざまな値のスライスサイズ (ss)、overlap、ti で実験します。ただし、計算およびプロット時間への影響を確認するため、一度に 1 つのパラメータだけを変更し、残りの 2 つはデフォルト値 ([128 0.4 82]) のままにすることをお勧めします。
ss、overlap、ti の現在の設定は次のとおりです。