函數 > 信號處理 > 聯合時頻分析 > 範例:短時傅立葉轉換
  
範例:短時傅立葉轉換
使用 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 函數的參數,或輸入信號中正弦曲線的頻率,並觀察繪圖如何變化。