範例:短時傅立葉轉換
使用 stft 函數可計算信號短時傅立葉轉換 (STFT),其中頻譜特性會隨時間改變。
此函數會傳回一個矩陣,其欄包含輸入信號的傅立葉轉換,並不時依 s 樣本分隔。就信號 x(t) 而言,STFT 會以連續時間定義為:
其中 w(t) 是實數移動取窗,用於將轉換的影響侷限在特定的時間附近。
雙螺距信號
下列信號是由發生在不同時間的兩個頻率不同的正弦曲線所組成。
1. 定義信號元件。
2. 繪製複合信號。
STFT 包含有關信號的頻率內容及出現頻率的時間之資訊。
3. 使用 100 個頻率樣本、時間步距 30 及漢明窗,計算 STFT。
此為 100 x 56 矩陣 (長度 L 的信號中時間步距為 30 的共有 56 個)
4. 計算平方量值。
5. 將所得出的輪廓儲存為 BMP 圖像。
(v_spec_rotated.bmp)
圖像不僅顯示兩個頻率,也會顯示發生的時間。但是,頻譜圖會出現稱為局部取捨的小損失。若要達成時間局部化 (亦即由 STFT 指出正弦曲線有作用的時間),則需要在時域中有較短的窗。相反地,好的頻率局部化需要較長的時間窗。此取捨會進一步依存所用的窗類型、考慮的信號、時間與頻率。
6. 為加以說明,將以如上相同的信號計算 STFT 與頻譜圖,但使用長度為 300 而非 100 的頻率窗。
7. 將所得出的輪廓儲存為 BMP 圖像。
(v_nbspec_rotated.bmp)
使用較長的窗計算 STFT 會有較佳的頻率解析度,但其時間解析度不會一樣好。此時間頻率取捨可透過其他時間頻率函數加以避免;例如 timefreq 與 timecorr。
自訂加窗
本例中的頻率窗會以零向上填滿傅立葉轉換的長度。
1. 定義窗長度與上升餘弦百分比。
窗長度不可以大於傅立葉轉換的長度。
2. 重新調整窗係數的刻度,使窗具有單位能量。
3. 計算 STFT 與頻譜圖。
4. 將所得出的輪廓儲存為 BMP 圖像。
(v_spec2_rotated.bmp)
嘗試變更 stft 函數的參數,或輸入信號中正弦曲線的頻率,並觀察繪圖如何變化。