6

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

コード:

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);
4

2 に答える 2

8

Signal Processing Toolboxをお持ちの場合は、このspectrogram機能が役立つ場合があります。

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

これは本質的に短時間フーリエ変換(STFT)です。

于 2013-01-15T00:03:22.020 に答える
0

Signal Processing Toolboxをお持ちの場合は、スペクトログラムが最適です(Oli Charlesworthが述べたように)。

お持ちでない場合は、MATLAB CentralFileExchangeが常に一般的なものを探すのに適した場所です。

http://www.mathworks.com/matlabcentral/fileexchange/1553-spectrogram-short-time-ft-log-magnitude

これは、スペクトログラム機能の賢明でうまく機能する実装のようです。

于 2013-01-15T12:51:10.287 に答える