首页 文章

Matlab - 如何使用specgram函数?

提问于
浏览
0

我通过[data,fs,bit] = wavread('* .wav')加载了wav文件;我想使用specgram函数来可视化这个wav文件 .

像这样!

enter image description here

让我知道如何将wav文件可视化为此图片 . (我想分析wav文件声音的频率)

1 回答

  • 1

    叹息......我没有给出Matlab specgramspectrogram 的情节示例,但我会给出另一种方法 .

    首先,您要使用FFT将时域信号转换为短时频域(STFT):

    这可以通过matlab specgram 来完成:

    [data,fs,bit] = wavread('test.wav'); %//Read in WAV file
    %//Note if you have dual channel or multi-channel, you need to do each channel separately, or add them to create mono-channel. In my example, which is voice, I use a single channel recording.
    teststft = spectrogram(data); %//This is rough, and usually results in terrible results;
    %//I suggest you set your input parameters suitable for voice/music/etc - Note I used hamming window of 256 length, 50% overlap and 512 nfft - which creates roughly 30ms time frames, suitable for voice.
    
    teststft = spectrogram(data(:,1),hamming(256),50,512);
    
    %//In your plotting example, you have used something like the Log Magnitude response, which can be expressed as:
    testSTFT = log(abs(teststft));
    
    %//and finally, to plot:
    
    figure
    surf(STFT, 'edgecolor', 'none'); view(0,90); axis tight;
    xlabel('Time');
    ylabel('FrequencyDistribution');
    grid on;
    

    结果如下:

相关问题