範例:使用 WAV 檔案及建立頻譜圖
使用
READWAV 與
GETWAVINFO 函數從 WAV 檔案中讀取並取得格式資訊。
取得 WAV 資訊
1. 使用 GETWAVINFO 從聲音檔案取得資訊。此聲音檔案是 Stenella 鯨魚聲音樣本。您可以使用任何音樂播放器加以播放。
此向量包含頻道數、取樣率、解析度 (每個樣本的位元數),以及每個聲音的每秒平均位元數,音訊播放器裝置必須加以處理,才能即時播放音訊。
2. 計算向量變數。
讀取聲音檔案
1. 使用 READWAV 函數讀取聲音檔案,然後儲存為向量。
若 READWAV 傳回矩陣,則連續欄表示數據的個別頻道。
3. 繪製信號。
4. 使用
match、
max 及
min 函數求解含有最大量值與最小量值的樣本,然後求解其對應的取樣時間。
5. 繪製前 25000 個樣本,並使用標記顯示含有最大量值的樣本。
建立頻譜圖
將數據分成很小的時間片段來分析聲音數據,並檢視每個片段的頻率內容。此範例使用 128 個樣本片段。
1. 以 2 的次方定義切片大小的向量。
其中 ss 是片段矩陣中的列數。
2. 定義 0-90% 之間重疊係數的向量,增量為 10。
重疊不能為 100%。
3. 設定 overlap 係數,並使用 floor 和 ceil 函數定義矩陣的大小。
如果重疊設為零,Data 向量將會分為數個 ss 長內容塊。隨著重疊的增加,ss 長內容塊數目也會增加,如下列方程式所示:
每個片段大小和重疊係數的組合都會產生不同的片段矩陣維度:
使用 ss=128 與 overlap=40% 會產生需要花費很長時間來建構和繪製的 128x2602 矩陣。
4. 建立向量 TI,以便將 ti 設定為等於或小於 ti 值的 10 個值之一。
5. 將 ti 設定為 TI 中間元素中的一個,然後觀察工作表底部的等高線圖。
新的片段矩陣維度現在為:
6. 使用 Hamming 視窗為每個片段加窗。
7. 使用 log 函數來表示以分貝為單位的頻率。
8. 使用
dft (或已取代的
fft) 函數求解片段的傅立葉轉換。
若要使用已取代的 fft 函數,請停用上述區域,並啟用下方區域。
9. 使用等高線圖,以繪製 spectra。
10. 實驗片段大小的不同值 (ss)、overlap 與 ti。但是,為了觀察對計算和繪製時間的影響,建議您每次變更一個參數,將其他兩個參數設定為預設值 [128 0.4 82]。
ss、overlap 與 ti 的當前設定如下所示: