2013-01-15 41 views
5

私は、波のファイルを使ってピッチ/周波数の変化を調べるプロジェクトに取り組んでいます(私はMATLABを初めて使っていますが、 。私は時間 - 振幅グラフと周波数 - 振幅(FFTの後)グラフを見ることができますが、どのように周波数を分離し、各時点でそれを表示できますか?MATLAB - .wavファイルの時間 - 周波数グラフをプロットする

コード:

filename = '/Users/Username/Sample_1.wav' 

[y, fs] = wavread(filename); 
y = y(:,1); 
dt = 1/fs; 
t = 0:dt:(length(y)*dt)-dt; 
plot(t,y); xlabel('Seconds'); ylabel('Amplitude'); 

transformed = fft(y); 
mag = abs(transformed); 
plot(mag); 
+2

あなたは「どのように周波数を分離し、各時点でそれを表示できますか?これにはいくつかの良い答えがありますが、それは重要ですが、あなたが望む意味での瞬時周波数などはないことを認識することが重要です。言い換えれば、各時点に一意に対応する頻度値は存在しません(または、少なくとも、時間領域データからその情報を導き出すことはできません。可能であれば、ハイゼンベルグの不確実性の原則に違反します) 。 –

答えて

7

あなたはSignal Processing Toolboxのを持っている場合は、spectrogram機能が便利かもしれません。

そうでない場合は、時間領域データの連続した(おそらく重複している)ウィンドウセグメントのFFTを計算し、振幅をプロットすることで同じ効果を手動で達成できます。

これは基本的にshort-time Fourier transform(STFT)です。

+0

あなたの(OP)がやろうとしていることは、時間 - 周波数分析の範囲内にあります。興味があれば、短期フーリエ変換(MATLABのスペクトログラム関数が使用するもの)などのテクニックを使用して書かれた記事がたくさんあります。これは楽しい話題です! – notthetup

+0

あなたの助けてくれてありがとう!私は実際に線グラフの線に沿って何かを探していましたが、スペクトログラムを読むことを学ぶことができると思います。 – airplaneman19

+0

@ airplaneman19:私は助けてくれると嬉しいです。しかし、上記のBjornのコメントに注意してください。 –

関連する問題