周波数と持続時間を可変パラメータとし、実行時にトーン周波数を生成することに興味があります。このサウンドファイルをMATLABで生成する最良の方法は何でしょうか?後で使用するためにスクリプトでアクセス可能にして、別の周波数/継続時間で同様の方法で生成された他のサウンドファイルと連結しますか?コメントには事前に感謝します。MATLABでデュアルトーン周波数をどのように生成しますか?
答えて
ベクトルの再生時間は、ベクトルの要素数とサンプリングレートによって決まります。たとえば、1000要素のベクトルを1 kHzで再生すると、1秒間持続します。 500 Hzで再生すると、2秒間続きます。したがって、最初に選択する必要があるのは、使用するサンプリングレートです。 aliasingを回避するには、サンプリングレートはtwice as large as the largest frequency component of the signalである必要があります。ただし、サンプリングレートに近い周波数の減衰を避けるために、それをさらに大きくすることもできます。 1キロヘルツのサンプリングレート、次の例では、(LINSPACEとSIN関数を使用して)指定された持続時間およびトーン周波数の音ベクトルを作成考える
:
Fs = 1000; %# Samples per second
toneFreq = 50; %# Tone frequency, in Hertz
nSeconds = 2; %# Duration of the sound
y = sin(linspace(0, nSeconds*toneFreq*2*pi, round(nSeconds*Fs)));
SOUNDを使用して1kHzで再生する場合機能、このベクターは2秒間50Hzのトーンを生成します。
sound(y, Fs); %# Play sound at sampling rate Fs
ベクターは、次にWAVWRITE関数を使用して、WAVファイルとして保存することができる。
wavwrite(y, Fs, 8, 'tone_50Hz.wav'); %# Save as an 8-bit, 1 kHz signal
サウンドベクターは、WAVREAD機能を使用して後で読み込むことができます。 2つのサウンドベクトルを連結する場合は、両方が同じサンプリングレートを使用するように設計されていることを確認する必要があります。
Fs変数に頻度を指定しますか?私は同じ時間に特定のトーンを生成する方法を考え出す体系的な方法を持っていたいと思います。それについてあなたの推奨は何ですか? – stanigator
@stanigator:より一般的にするためにコードを改訂しました。サンプリング周波数、トーン周波数、および継続時間を指定してサウンドベクトルを計算します。 – gnovice
gnoviceのコードに問題があるようです。私は彼がlinspace-functionを乱したと思う。同じ周波数をさまざまなサンプリング周波数と比較するときは、自分で確認できます。音は異なりますが、明らかに違うはずはありません。
(私は愚かだ。MATLABのサウンド機能を使用する場合は、あなたが音を生成するのに使用したのと同じサンプリング周波数を使用してください。そうしないと、あなたはつもり悪い時間があります。)
ここでは、音色生成機能を包括する関数があります。
function pureTone (frequency, duration, amplitude, sampleFreq, save2file)
% Generate pure tones.
% Enter at least 1 argument.
% Defaults are:
% duration 1 sec
% amplitude 1
% sampleFreq 48000 Hz
% save2file no
%--------------------
% If you want to save the tone to a file, provide a name.
switch nargin
case 0
error('Enter a frequency.')
case 1
duration = 1;
amplitude = 1;
sampleFreq = 48000;
save2file = 0;
case 2
amplitude = 1;
sampleFreq = 48000;
save2file = 0;
case 3
sampleFreq = 48000;
save2file = 0;
case 4
save2file = 0;
end
t = linspace(0, duration, duration * sampleFreq);
% http://de.wikipedia.org/wiki/Sinuston
s = amplitude * sin(2 * pi * frequency * t);
sound(s, sampleFreq);
if save2file
wavwrite(s, sampleFreq, 32, save2file);
end
end
- 1. MATLABで特定の周波数のパルス波を生成する方法
- 2. 正負周波数のMATLAB周波数ビン
- 3. matlabを使用して異なる周波数の正弦波を生成するにはどうすればよいですか?
- 4. fftデータセットからの周波数matlab
- 5. 周波数応答関数(MATLAB noise)
- 6. 周波数領域でコンボリューションをどのように実装できますか?
- 7. nltk naivebayesクラシファイアでどのように周波数を追加できますか?
- 8. Rでビン周波数テーブルを生成するには?
- 9. JavaScript WebAudioは複数の周波数でサウンドを生成します
- 10. 特定のサウンド周波数を生成するには?
- 11. matlabで電波伝搬パターンを生成していますか?
- 12. どのように三角波、特に周波数を操作できますか?
- 13. 周波数を変えて連続トーンを生成するにはどうしたらいいですか?
- 14. Clojureでは、どのようにトランスデューサで「周波数」の高性能バージョンを作成できますか?
- 15. タイムステップはプログラムのサンプリング周波数に関連していますか? MatLabの
- 16. Android:周波数を生成するには?
- 17. MATLABの信号データから周波数を決定
- 18. ヒートマップベースの値(周波数ではない)を作成するにはどうすればよいですか?
- 19. イメージノイズ周波数を生成する方法は?
- 20. エラーログ周波数
- 21. 周波数テーブル
- 22. は周波数
- 23. 周波数カウント
- 24. 周波数テーブルからサイドバイサイドボックスプロットを作成するにはどうすればよいですか?
- 25. MATLAB - .wavファイルの時間 - 周波数グラフをプロットする
- 26. 低周波火災ベースのデータをより低い周波数で照会
- 27. mp3の周波数
- 28. 周波数を数え、周波数をゼロにする方法は?
- 29. どのようにして周波数と振幅を同時に変更できますか?
- 30. サイコロの周波数を印刷するにはどのように垂直
http://www.mathworks.com/help/techdoc/ref/sound.html –