S轉換

S轉換(s-transform)是一種時頻分析的工具。 和其他時頻分析工具一樣，透過S轉換，我們可以同時從時域以及頻域觀察一個信號的能量分布。S轉換的特別之處在它既保持與傅立葉變換的直接關係，又可在不同頻率有不同的解析度。此外，S轉換與小波轉換（wavelet transform）有密切的關係，或可視為連續小波轉換（continuous wavelet transform）的變形。S轉換的清晰度略優於加伯轉換（Gabor transform），而不如韋格納分佈（Wigner distribution function）、科恩克萊斯分佈、改良式韋格納分佈（Modified Wigner distribution function）。 一個信號x(t)的S轉換為 S x ( t , f ) = ∫ − ∞ ∞ x ( τ ) | f | e − π ( t − τ ) 2 f 2 e − j 2 π f τ d τ {\displaystyle S_{x}(t,\,f)=\int _{-\infty }^{\infty }x(\tau )\,|f|\,e^{-\pi (t-\tau )^{2}f^{2}}e^{-j2\pi f\tau }\,d\tau } 其中窗函數為高斯窗函數 w ( t , f ) = | f | e − π t 2 f 2 {\displaystyle w(t,f)=|f|e^{-\pi t^{2}f^{2}}} 藉著摺積定理 x ( t ) ∗ h ( t ) = F − 1 ( X ( f ) ⋅ H ( f ) ) {\displaystyle x(t)\ast h(t)={\mathcal {F}}^{-1}(X(f)\cdot H(f))} S轉換能以頻域 X ( f ) {\displaystyle X(f)} 表示， S x ( t , f ) = ∫ − ∞ ∞ ( x ( τ ) e − j 2 π f τ ) ( | f | e − π ( t − τ ) 2 f 2 ) d τ {\displaystyle S_{x}(t,f)=\int _{-\infty }^{\infty }(x(\tau )e^{-j2\pi f\tau })(|f|e^{-\pi (t-\tau )^{2}f^{2}})\,d\tau } 这里可将 S x ( t , f ) {\displaystyle S_{x}(t,f)} 看成 x ( t ) e − j 2 π f t {\displaystyle x(t)e^{-j2\pi ft}} 与 | f | e − π t 2 f 2 {\displaystyle |f|e^{-\pi t^{2}f^{2}}} 的卷积， 將 x ( τ ) e − j 2 π f τ {\displaystyle x(\tau )e^{-j2\pi f\tau }} 以及 | f | e − π ( t − τ ) 2 f 2 {\displaystyle |f|e^{-\pi (t-\tau )^{2}f^{2}}} 分別取傅立葉變換可得 S x ( t , f ) = ∫ − ∞ ∞ X ( f + α ) e − π α 2 / f 2 e j 2 π α t d α {\displaystyle S_{x}(t,f)=\int _{-\infty }^{\infty }X(f+\alpha )\,e^{-\pi \alpha ^{2}/f^{2}}\,e^{j2\pi \alpha t}\,d\alpha } 對一訊號 x ( t ) {\displaystyle x(t)} 進行S轉換，寫為 S x ( t , f ) = ∫ − ∞ ∞ x ( τ ) w ( t − τ , f ) e − j 2 π f τ d τ {\displaystyle S_{x}(t,f)=\int _{-\infty }^{\infty }x(\tau )\,w(t-\tau ,f)e^{-j2\pi f\tau }\,d\tau } 其中 w ( t , f ) {\displaystyle w(t,f)} 為S轉換之窗函數，常見之窗函數為高斯函數，即 w ( t , f ) = | f | e − π t 2 f 2 {\displaystyle w(t,f)=|f|e^{-\pi t^{2}f^{2}}} 事實上，S轉換之窗函數並不局限於高斯函數，考慮以下一般化型態的S轉換(generalized S transform): S x ( t , f , P ) = ∫ − ∞ ∞ x ( τ ) w ( t − τ , f , P ) e − j 2 π f τ d τ {\displaystyle S_{x}(t,f,P)=\int _{-\infty }^{\infty }x(\tau )\,w(t-\tau ,f,P)e^{-j2\pi f\tau }\,d\tau } 其中 w ( t , f , P ) {\displaystyle w(t,f,P)} 為 一般化之窗函數(generalized window function), 參數 P 為一系列數值而組成之矩陣，可控制window function，舉例來說 w ( t , f , γ ) = | f | e − π t 2 f 2 / γ 2 {\displaystyle w(t,f,\gamma )=|f|e^{-\pi t^{2}f^{2}/\gamma ^{2}}} ，此時 γ {\displaystyle \gamma } 為矩陣 P 內之唯一數值 通過選取較小的 γ {\displaystyle \gamma } 值，可得到時域上較窄的窗函數，提高時間軸的解析度，然而，頻率軸上的解析度將因此變差。 改善時頻兩域解析度的問題，可選擇非對稱的窗函數(asymmetric window)，在正方向(forward direction)上有較陡峭之斜率，反方向(backward direction)上有較緩之斜率，藉由犧牲終端時間的解析度(一般而言較不重要)換取初始時間上更好的解析度。 S轉換可以沿著時間軸方向積分，將可以得到 x ( t ) {\displaystyle x(t)} 的頻譜 X ( f ) {\displaystyle X(f)} 。推導如下， 利用Gaussian window所包含面積等於1的特性， ∫ − ∞ ∞ | f | e − π ( t − τ ) 2 f 2 d t = | f | ∫ − ∞ ∞ e − π ( t − τ ) 2 f 2 d t = 1 {\displaystyle \int _{-\infty }^{\infty }|f|e^{-\pi (t-\tau )^{2}f^{2}}\,dt=|f|\int _{-\infty }^{\infty }e^{-\pi (t-\tau )^{2}f^{2}}\,dt=1} 因此，沿著時間軸t積分， ∫ − ∞ ∞ S x ( t , f ) d t = ∫ − ∞ ∞ x ( τ ) [ ∫ − ∞ ∞ | f | e − π ( t − τ ) 2 f 2 d t ] e − j 2 π f τ d τ = X ( f ) {\displaystyle \int _{-\infty }^{\infty }S_{x}(t,f)\,dt=\int _{-\infty }^{\infty }x(\tau )\left[\int _{-\infty }^{\infty }|f|\,e^{-\pi (t-\tau )^{2}f^{2}}\,dt\right]\,e^{-j2\pi f\tau }\,d\tau =X(f)} 這表示S頻譜是可逆的，同時也提供一個簡單的逆轉換。 x ( τ ) = ∫ − ∞ ∞ [ ∫ − ∞ ∞ S x ( t , f ) d t ] e j 2 π f τ d f {\displaystyle x(\tau )=\int _{-\infty }^{\infty }\left[\int _{-\infty }^{\infty }S_{x}(t,f)\,dt\right]\,e^{j2\pi f\tau }\,df} = ∫ − ∞ ∞ X ( f ) e j 2 π f τ d f {\displaystyle =\int _{-\infty }^{\infty }X(f)\,e^{j2\pi f\tau }\,df} S轉換如同其他時頻分析轉換，皆可以設計波器來達到消除雜訊留下訊號的功用， 利用逆S轉換，我們可以設計一個S域的濾波器U(t,f)，對x(t)進行訊號處理 x f i l t e r ( τ ) = ∫ − ∞ ∞ [ ∫ − ∞ ∞ S x ( t , f ) ⋅ U ( t , f ) d t ] e j 2 π f τ d f {\displaystyle x_{filter}(\tau )=\int _{-\infty }^{\infty }\left[\int _{-\infty }^{\infty }S_{x}(t,f)\cdot U(t,f)\,dt\right]\,e^{j2\pi f\tau }\,df} S轉換相較於加伯轉換，雖在清晰度有較好的改善，但也有其缺點，就是運算複雜度變高，積分的範圍會隨著 f {\displaystyle f\,} 的增加而增加。 因此，這裡利用上面推導的頻譜表示式來推導離散時間S轉換 頻譜表示式 S x ( t , f ) = ∫ − ∞ ∞ X ( f + α ) e − π α 2 / f 2 e j 2 π α t d α {\displaystyle S_{x}(t,f)=\int _{-\infty }^{\infty }X(f+\alpha )\,e^{-\pi \alpha ^{2}/f^{2}}\,e^{j2\pi \alpha t}\,d\alpha } 令 t = n Δ T f = m Δ F α = p Δ F {\displaystyle t=n\Delta _{T}\,\,f=m\Delta _{F}\,\,\alpha =p\Delta _{F}} Δ T {\displaystyle \Delta _{T}\,} 表示取樣時間間隔 , Δ F {\displaystyle ,\Delta _{F}\,} 表示取樣頻率 如果要使用FFT的方式來實作，必須另加條件 Δ T ⋅ Δ F = 1 / N {\displaystyle \Delta _{T}\cdot \Delta _{F}=1/N} 首先先對 x ( t ) {\displaystyle x(t)} 做傅立葉變換得到 X ( f ) {\displaystyle X(f)} X [ m Δ F ] = 1 N ∑ k = 0 N − 1 x [ k Δ T ] e − j 2 π m k N {\displaystyle X[m\Delta _{F}]={\frac {1}{N}}\,\sum _{k=0}^{N-1}x[k\Delta _{T}]\,e^{\frac {-j2\pi mk}{N}}} 接著帶入頻譜表示式中， S x ( n Δ T , m Δ F ) = ∑ p = 0 N − 1 X [ ( p + m ) Δ F ] e − π p 2 m 2 e j 2 p n N {\displaystyle S_{x}(n\Delta _{T}\,,m\Delta _{F})=\sum _{p=0}^{N-1}X[(p+m)\,\Delta _{F}]\,e^{-\pi {\frac {p^{2}}{m^{2}}}}\,e^{\frac {j2pn}{N}}} 當 m=0 時，S轉換就定義成 S x ( n Δ T , 0 ) = 1 N ∑ k = 0 N − 1 x [ k Δ F {\displaystyle S_{x}(n\Delta _{T}\,,0)={\frac {1}{N}}\,\sum _{k=0}^{N-1}x[k\Delta _{F}} ] Step1 : 計算 X [ p Δ F ] {\displaystyle X[p\Delta _{F}]\,} ,這個步驟只需要計算一次。 Step2 : 計算 e − π p 2 m 2 {\displaystyle e^{-\pi {\frac {p^{2}}{m^{2}}}}} for f = m Δ F {\displaystyle f=m\Delta _{F}} Step3 : 將 X [ p Δ F ] {\displaystyle X[p\Delta _{F}]} 移動至 X [ ( p + m ) Δ F ] {\displaystyle X[(p+m)\Delta _{F}]} Step4 : 將Step2,Step3的結果相乘得到 B [ m , p ] = X [ ( p + m ) Δ F ] ⋅ e − π p 2 m 2 {\displaystyle B[m,p]=X[(p+m)\Delta _{F}]\cdot e^{-\pi {\frac {p^{2}}{m^{2}}}}} Step5 : 對B[m,p]取逆離散傅立葉變換(IDFT)可得到， S x ( n Δ T , m Δ F ) {\displaystyle S_{x}(n\Delta _{T}\,,m\Delta _{F})} 在 f = m Δ F {\displaystyle f=m\Delta _{F}} 的行向量 Step6 : 重複Step2~5直到 S x ( n Δ T , m Δ F ) {\displaystyle S_{x}(n\Delta _{T}\,,m\Delta _{F})} 全部定義完成。 S轉換與加伯轉換(Gabor Transform)很相似， G x ( t , f ) = ∫ − ∞ ∞ x ( τ ) e − π ( t − τ ) 2 e − j 2 π f τ d τ {\displaystyle G_{x}(t,f)=\int _{-\infty }^{\infty }x(\tau )\,e^{-\pi (t-\tau )^{2}}e^{-j2\pi f\tau }\,d\tau } S x ( t , f ) = ∫ − ∞ ∞ x ( τ ) | f | e − π ( t − τ ) 2 f 2 e − j 2 π f τ d τ {\displaystyle S_{x}(t,f)=\int _{-\infty }^{\infty }x(\tau )\,|f|e^{-\pi (t-\tau )^{2}f^{2}}e^{-j2\pi f\tau }\,d\tau } 唯一的不同就在於S轉換的Gaussian Window的寬度會隨著 f {\displaystyle f} 改變。 原因就是 f {\displaystyle f\,} 在高頻時，Gaussian Window寬度變小，時域解析度好；反之， f {\displaystyle f\,} 在低頻時，Gaussian Window寬度變寬，頻域解析度好。 但是，當 f → 0 {\displaystyle f\rightarrow 0} 時，Gaussian Window會無窮無盡的變寬，就喪失時頻分析只做局部分析的精神。 一種解決的方式是:使Gaussian Window寬度不再因 f 2 {\displaystyle f^{2}\,} 改變\，產生頻寬劇烈的變化， S轉換一般式 S x ( t , f ) = | s ( f ) | ∫ − ∞ ∞ x ( τ ) e − π ( t − τ ) 2 s 2 ( f ) e − j 2 π f τ d τ {\displaystyle S_{x}(t,f)=|s(f)|\int _{-\infty }^{\infty }x(\tau )\,e^{-\pi (t-\tau )^{2}s^{2}(f)}e^{-j2\pi f\tau }\,d\tau } s ( f ) {\displaystyle s(f)} 是一個相對平緩的曲線(見底下示意圖)，當 f → 0 {\displaystyle f\rightarrow 0} 時， s ( f ) ≠ 0 {\displaystyle s(f)\neq 0} S轉換是一種運算量高的時頻分析工具，尤其在低頻部分，Gaussian Window寬度變寬，頻域解析度比加伯轉換來的好，所以S轉換對於低頻訊號分析比較有優勢 例如:聲音訊號，人耳對高頻的部分沒有太特別的感覺，但在低頻部分卻比較敏感，如:中央Do = 262Hz,高八度Do = 512Hz 可以很清楚的聽出兩個不同的音， 但10000Hz 和 10170Hz對人來說差別不大，再說人耳對3KHz以內的聲音最敏感，所以能分析低頻訊號就顯得重要。 此時，就可以使用S轉換，來強調低頻訊號，而犧牲高頻訊號。 韋格納分佈是時頻分析工具中，具有高清晰度的一個，但最大的缺點是有交叉項（cross-term）的問題。若一個信號是由數個信號成份組合而成，那麼使用韋格納分佈來分析時就會受到兩兩信號成份之間的交叉項干擾，这将会产生一些不必要的噪声。一個信號x的韋格納分佈為 W x ( t , f ) = ∫ − ∞ ∞ x ( t + τ 2 ) x ∗ ( t − τ 2 ) e − j 2 π τ f d τ {\displaystyle W_{x}(t,f)=\int _{-\infty }^{\infty }x(t+{\frac {\tau }{2}})x^{*}(t-{\frac {\tau }{2}})e^{-j2\pi \tau f}\,d\tau } 交叉項是在積分中兩個x項相乘時產生的。S轉換的計算原理與韋格納分佈不同，是直接對 x ( τ ) {\displaystyle x(\tau )} 進行轉換，不會有交叉項的問題。 加伯轉換的定義為 G x ( t , f ) = ∫ − ∞ ∞ x ( τ ) e [ − π ( t − τ ) 2 f 2 ] e ( − j 2 π f τ ) d τ {\displaystyle G_{x}(t,f)=\int _{-\infty }^{\infty }x(\tau )e^{\left[-\pi (t-\tau )^{2}f^{2}\right]}e^{\left(-j2\pi f\tau \right)}d\tau } 我們知道加伯轉換是短時距傅立葉轉換的一種特殊形式，其中只要把短時距傅立葉轉換的窗函數用高斯函數來替代就成了加伯轉換；S轉換則可視為一種窗函數會隨f變化的加伯轉換；隨著頻率的升高，高斯函數在時域上的寬度會越來越窄，使得時域上的解析度會增加，反之犧牲頻域上的解析度。 加伯轉換和S轉換原理相同，兩者唯一不同的地方就是窗函數的 f 2 {\displaystyle f^{2}} 和強度 f {\displaystyle f} ，基本上都是由短時距傅立葉轉換延伸而來；兩者共有的好處是不會像韋格納分布一樣會有交叉項；又S轉換在低頻時的頻率解析度會優於加伯轉換。 連續小波轉換可以視為將一個信號對小波做相關（correlation）： W ( τ , d ) = ∫ − ∞ ∞ x ( t ) W ( t − τ , d ) d t {\displaystyle W(\tau ,\,d)=\int _{-\infty }^{\infty }x(t)\,W(t-\tau ,\,d)\,dt} 而S轉換可以視為連續小波轉換乘上一個相位項： S ( τ , f ) = e − j 2 π τ f W ( τ , d ) {\displaystyle S(\tau ,\,f)=e^{-j2\pi \tau f}W(\tau ,\,d)} 而其用的母小波為： w ( t , f ) = | f | exp ⁡ [ − π t 2 f 2 ] exp ⁡ [ − j 2 π f t ] {\displaystyle w(t,\,f)=|f|\,\exp[-\pi t^{2}f^{2}]\exp[-j2\pi ft]} 假設我們想要對一訊號 x ( t ) {\displaystyle x(t)} 做時頻分析 x ( t ) = c o s ( 2 π t ) , t < 10 , {\displaystyle x(t)=cos(2\pi t),t<10,} x ( t ) = c o s ( 2 π t ) , 10 ≤ t < 20 , {\displaystyle x(t)=cos(2\pi t),10\leq t<20,} x ( t ) = c o s ( 2 π t ) , 20 ≤ t . {\displaystyle x(t)=cos(2\pi t),20\leq t.} 如果使用一個寬度為1秒的矩形函數來做短時距傅立葉轉換會得到 如果使用一個加伯轉換會得到時頻分析圖 如果用S轉換會得到時頻分析圖 由上三圖可知，S轉換是一個在低頻時頻域解析度高，高頻時時域解析度高的時頻分析；舉例來說，對於100Hz與300Hz和1000Hz與1200Hz這兩組聲音，哪一組對於人耳會有明顯的差異呢? 答案是100Hz和300Hz，低頻時的頻率差異對於人耳較明顯，當頻率越高時，人耳就越難分辨出頻率的差異；同樣的道理，S轉換便符合我們的需求，低頻時訊號變化慢擁有低的時域解析度和擁有高的頻域解析度，高頻時因為訊號變化很快則擁有高的時域解析度和低的頻域解析度。 R. G. Stockwell, L. Mansinha, and R. P. Lowe, "Localization of the complex spectrum: the S transform," IEEE Trans. Signal Processing, vol. 44, no. 4, pp. 998–1001, Apr. 1996. Jian-Jiun Ding, Time frequency analysis and wavelet transform class note, the Department of Electrical Engineering, National Taiwan University (NTU), Taipei, Taiwan, 2010. Sitanshu Sekhar, Ganapati Panda and Nithin V George, "An Improved S-Transform for Time-Frequency Analysis," "IACC2009", pp. 315-319, March 2009. The S-transform with windows of arbitrary and varying shape, C. Robert Pinnegar, Lalu Mansinha, GEOPHYSICS, VOL.68, NO.1 (JANUARY-FEBRUARY 2003); P.381–385