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