0

このようなパラメータを使用してオーディオ信号を生成するのを手伝ってもらえますか:

  • サンプルレート = 8000 Hz、
  • 単核症、
  • サンプルあたり 16 ビット。

符号付きリトルエンディアン表現 (LSB、MSB) で、ヘッダーなしでサンプルをファイルに書き込む必要があります。たとえば、サンプルの値が 32767 (この表現では最大) の場合、0xFF7F として保存されます。

この信号には、いくつかのトーンが含まれている必要があります。私はトーンを生成するためのそのようなコードを持っています:

 frequency = 2000;
 duration = 2;
 amplitude = 1;
 sampleFreq = 8000;

t = linspace( 0, duration, duration * sampleFreq );
s = amplitude * sin( 2 * pi * frequency * t ) + amplitude * sin( 2 * pi * frequency/2 * t ) + amplitude * sin( 2 * pi * frequency*2 * t );

8000 Hz のサンプル レートでベクトル (モノラル) を作成します。しかし、LSB,MSB 規則を使用して 16 ビットでサンプルを書き込む方法がわかりません。

よろしく。

4

1 に答える 1

1

wavewriteまたはaudiowriteのいずれかを使用できます。 変数に格納されたデータを という名前の WAVE ファイルにwavwrite(s,filename)書き込みます。入力は一重引用符で囲まれた文字列です。データのサンプル レートは 8000 Hz で、16 ビットと見なされます。エンディアンの問題がある場合は、 swapbytes関数 を使用して、ビッグ エンディアンの出力をリトル エンディアンに (またはその逆に) フォーマットできます。sfilenamefilename
s = swapbytes(s)

次のSO回答を使用してヘッダーを削除できます

于 2013-01-22T11:06:23.297 に答える