2017-08-30 114 views
0

我想得到一個與spectrogram函數得到的相同類型的陰謀,我試圖與contour但我沒有得到相同的結果。我寫了一個比較這兩個情節的小函數。該功能記錄音頻一秒鐘,然後繪製頻譜圖。積結果的得到一個像譜圖在MATLAB中的陰謀

function graph_comparison 
    a = audiorecorder(44100,16,1); 
    recordblocking(a,1); 
    y = getaudiodata(a); 
    figure 
    subplot(1,2,1); 
    spectrogram(y); 
    s = spectrogram(y); 
    subplot(1,2,2); 
    contour(mag2db(abs(s))); %mag2db converts intensity in db 
    %rotate the second plot 
    view(-90, 90); 
    set(gca, 'ydir', 'reverse'); 
end 

實施例: enter image description here

+1

如果你想達到'spectrogram'的相同結果,你爲什麼不簡單地使用它? – Jepessen

+0

,因爲我需要先處理數據,所以在我的真實代碼中我使用變量's',但是我喜歡''spectrogram'給出的那種繪圖。 – Nisba

回答

1

我發現了它,它是足以與imagesc取代contour

+0

你也可以試試'contourf'。 –

+0

謝謝,但看起來比輪廓更醜,如果有很多關卡,否則我得到一些信息 – Nisba

+1

是的,'imagesc'是要走的路。但是要注意imagesc:當你調用'imagesc(x,y,z)'時,它不會將像素位置分配給'x'和'y'。例如,這可以工作:'imagesc([ - 1 1],[10 20],randn(100,100))',因爲'imagesc'只是使用'x'和'y'來獲取盤區。這是一個混亂,它花了一段時間才弄清楚。 –