先比較一下使用後(上)與使用前(下,拿先前的圖借用)的圖片差異吧!可以看到差別非常多呢!!
首先,還記得spectrogram程式碼嗎?平時我們繪圖時都直接用spectrogram進行繪製,但其實也可以使用spectrogram產出相對應的數值,使用這些數值再來繪出全新的一張圖,這時在存檔就可以避免出現白色的雜點。
程式碼
[S,F,T]=spectrogram(x,1024,512,[],fs);%讀出聲音訊號轉換後的數值
>> whos
Name Size Bytes Class Attributes
F 22051x1 176408 double
S 22051x725 255791600 double complex
T 1x725 5800 double
fs 1x1 8 double
x 372733x1 2981864 double
用whos可以看到S可以對應上F(frequency)以及T(time),所以我們將這些資料取出後再重新繪製就可以得到我們新的圖了。
pcolor(T,F,log(abs(S))) %使用pcolor幫我們重新畫圖,x軸是時間T,y軸是頻率F,但這樣畫出來預設值為呈現黑色,請見下一行。
shading flat; %這樣顏色就漂亮的出來囉,flat與原本的spectrogram設定較為相像,若要改變參數也可再上網查詢。
成果!!
多兩行程式碼就可以漂亮的存出沒有資料遺失的圖囉!!
過了一陣子又發現新方法除痘,只要在繪圖前先設定繪圖方式即可,但這會使繪圖時間變較久。如下:
回覆刪除set(figure(1),'renderer','painters')