首页 文章

MATLAB - 绘制.wav文件的时频图

提问于
浏览
6

我正在研究一个项目,该项目涉及使用波形文件查看音高/频率随时间的变化(我是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);

2 回答

  • 8

    如果您有信号处理工具箱,那么您可能会发现spectrogram函数很有用 .

    如果不这样做,那么您可以通过计算时域数据的连续(可能重叠)窗口段的FFT来手动实现相同的效果,然后绘制幅度 .

    这基本上是short-time Fourier transform(STFT) .

  • 0

    如果你有信号处理工具箱,光谱图是要走的路(正如Oli Charlesworth所说) .

    如果你没有它,MATLAB中央文件交换总是一个寻找一般的东西的好地方 .

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

    这似乎是频谱图功能的合理且良好工作的实现 .

相关问题