短時距傅立葉變換

来自testwiki
imported>InternetArchiveBot2023年9月15日 (五) 16:39的版本 (补救2个来源,并将0个来源标记为失效。) #IABot (v2.0.9.5)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

Template:NoteTA Template:傅立葉變换

短時距傅立葉變換(Short-time Fourier Transform, STFT)是傅立葉變換的一種變形,也稱作加窗傅里叶变换(Windowed Fourier transform)或Time-dependent Fourier transform,用於決定隨時間變化的信號局部部分的正弦頻率和相位。實際上,計算短時距傅立葉變換的過程是將長時間信號分成數個較短的等長信號,然後再分別計算每個較短段的傅立葉轉換。通常拿來描繪頻域與時域上的變化,為時頻分析中其中一個重要的工具。

傅立葉轉換在概念上的區別

將訊號做傅立葉變換後得到的結果,並不能給予關於信號頻率隨時間改變的任何資訊。以下的例子作為說明:

x(t)={cos(440πt);t<0.5cos(660πt);0.5t<1cos(524πt);t1

傅立葉變換後的頻譜和短時距傅立葉轉換後的結果如下:

傅立葉轉換後, 橫軸為頻率(赫茲)
短時距傅立葉轉換, 橫軸為時間(秒),縱軸為頻率(赫茲)

由上圖可發現,傅立葉轉換只提供了有哪些頻率成份的資訊,卻沒有提供時間資訊;而短時傅立葉轉換則清楚的提供這兩種資訊。這種時頻分析的方法有利於頻率會隨著時間改變的信號,如音樂信號和語音信號等分析。

定義

連續短時傅立葉轉換

簡單來說,在連續時間的例子,一個函數可以先乘上僅在一段時間不為零的窗函數再進行一維的傅立葉變換。再將這個窗函數沿著時間軸挪移,所得到一系列的傅立葉變換結果排開則成為二維表象。數學上,這樣的操作可寫為:

X(t,f)=w(tτ)x(τ)ej2πfτdτ

另外也可用角頻率來表示:

X(t,ω)=w(tτ)x(τ)ejωτdτ

其中w(t)窗函數,窗函數種類有很多種,會在稍後再做仔細討論。x(t)是待變換的訊號。X(t,ω)w(tτ)x(τ)的傅立葉變換。 隨著t的改變,窗函數在時間軸上會有位移。经w(tτ)x(τ)後,信號只留下了窗函數截取的部分做最後的傅立葉轉換,所得到的結果為一複數函數,代表著信號隨時間與頻率變化的大小與相位。

離散短時傅立葉轉換

在離散時間的例子,資料會被切割成數個大量的帧,而每組帧通常會互相重疊,避免因切割方式造成邊界的誤差。而每組帧在各自進行傅立葉轉換後所得的複數結果會再進行相加,可得到每個點時間與頻率變化的大小與相位。數學上,這樣的操作可寫為:

𝐒𝐓𝐅𝐓{x[n]}(m,ω)X(m,ω)=n=x[n]w[nm]ejωn

相同地,其中w[n]窗函數x[n]是待變換的訊號。在這個例子裡,m是離散的且ω是連續的,但大部分實際的應用當中,短時距傅立葉轉換在電腦中都是以快速傅立葉轉換進行計算(見實現方法的快速傅立葉變換),而此時這兩個參數都是離散且被量化的。

Sliding 離散傅立葉轉換

當只想要得知特定少數的ω,或是短時距傅立葉轉換每次窗函數移動m的值,則短時距傅立葉轉換可以利用sliding DFT演算法更有效地計算出來。

反短時距傅立葉轉換

短時距傅立葉轉換是可逆的,也就是說原本的信號可以藉由反短時距傅立葉轉換將短時距傅立葉轉換後的信號還原。

其中最廣為接受的反短時距傅立葉轉換方法是重疊-相加之摺積法,此方法也促成了更多樣的信號處理方法。

反短時距傅立葉轉換,其數學類似傅立葉轉換,但須消除窗函數的作用,首先必須先將窗函數的總面積規模化使得

w(τ)dτ=1.

而從上也可輕易地得出

w(tτ)dτ=1 t

x(t)=x(t)w(tτ)dτ=x(t)w(tτ)dτ.

連續傅立葉轉換公式如下:

X(ω)=x(t)ejωtdt.

x(t)進行上述的替換:

X(ω)=[x(t)w(tτ)dτ]ejωtdt
=x(t)w(tτ)ejωtdτdt.

將積分順序進行交換:

X(ω)=x(t)w(tτ)ejωtdtdτ
=[x(t)w(tτ)ejωtdt]dτ
=X(τ,ω)dτ.

因此傅立葉轉換可以視為某種將x(t)所有的短時距傅立葉轉換的相位同調部分進行相加。

而反傅立葉轉換公式如下:

x(t)=12πX(ω)e+jωtdω,

因此 x(t)可以從X(τ,ω)被復原

x(t)=12πX(τ,ω)e+jωtdτdω.

x(t)=[12πX(τ,ω)e+jωtdω]dτ.

與上面所列的窗函數的式子進行比較,可得

x(t)w(tτ)=12πX(τ,ω)e+jωtdω.

對反傅立葉轉換公式中的X(τ,ω)來說τ是不變的

x(t)=w(t1t)1X(t1,f)ej2πftdf;  w(t1t)0
另外用角頻率來表示:
x(t)=12πw1(t1t)X(t1,w)ejwtdw

窗函數

窗函數通常滿足下列特性:

  1. w(t)=w(t),即為偶函數。
  2. max(w(t))=w(0),即窗函數的中央通常是最大值的位置。
  3. w(t1)w(t2),|t2||t1|,即窗函數的值由中央開始向兩側單調遞減。
  4. w(t)0,|t|,即窗函數的值向兩側遞減為零。

常見的窗函數有:方形、三角形、高斯函數等,而短時距傅立葉轉換也因窗函數的不同而有不同的名稱。而加伯轉換,即為窗函數是高斯函數的短時距傅立葉轉換,通常沒有特別說明的短時距傅立葉轉換,即為加伯轉換

非對稱窗函數

當在特殊應用時,窗函數特性的第一點可以不滿足,如下圖的非對稱窗函數w(t),其中B1B2。左圖為窗函數原本的圖形,而在計算短時距傅立葉變換時,需將窗函數轉到τ軸上得出w(tτ),換言之,欲得到的短時距傅立葉變換的結果需在t+B1的時間點才能算出,因此若B1愈小,即可愈快得結果,此種非對稱窗函數可應用在地震波、碰撞偵測...等,需要即時處理的應用。

優缺點

  • 優點:比起傅立葉轉換更能觀察出信號瞬時頻率的資訊。
  • 缺點:計算複雜度高

方形窗函數的短時距傅立葉轉換

概念

方形窗函數,B = 50,橫軸為時間(秒)

右圖即為方形窗函數的一個例子,其數學定義: w(t)={ 1;|t|B 0;|t|>B

可以隨要分析的信號,來調整B的大小(即調整方形窗函數的寬度)。至於B的選擇,將會在下面探討。

短時傅立葉轉換可以簡化為

X(t,f)=tBt+Bx(τ)ej2πfτdτ

反短時傅立葉轉換可簡化為

x(t)=X(t1,f)ej2πftdf;tB<t1<t+B

特性

其大部分的特性都與傅立葉轉換的特性相對應

  • 積分特性
X(t,f)df=tBt+Bx(τ)ej2πfτdfdτ={ x(0);|t|B 0;|t|>B
  • 位移特性(時間軸方向的移動)
tBt+Bx(τ+τ0)ej2πfτdτ=X(t+τ0,f)ej2πfτ0
  • 調變特性(頻率軸方向的移動)
tBt+B(x(τ)ej2πf0τ)ej2πfτdτ=X(t,ff0)
  • 線性特性
若有一信號h(t)=αx(t)+βy(t)H(t,f),X(t,f),Y(t,f)分別為h(t),x(t),y(t)做方形窗函數短時 距傅立葉轉換的結果,則H(t,f)=αX(t,f)+βY(t,f)
  • 能量積分特性
|X(t,f)|2df=tBt+B|x(τ)|2dτ
X(t,f)Y*(t,f)df=tBt+Bx(τ)y*(τ)dτ
  • 特殊信號
1. 當x(t)=δ(t)
X(t,f)={ 1;|t|B 0;|t|>B
2. 當x(t)=1
X(t,f)=2Bsinc(2Bf)ej2πft

方形窗函數寬度(B)的選取

方形窗函數短時距傅立葉轉換用不同窗函數寬度(B)的比較,橫軸為時間(秒),縱軸為頻率(赫茲)
  • 由上述特性中的特殊信號x(t)=δ(t)來分析,信號只有在t=0的時候有值;若短時距傅立葉轉換是理想的話,X(t,f)應該只有在t=0的時候有能量。但由上面的特性可發現,能量會出現在|t|B中間。因此,若我們取較小的B,則可使結果趨近理想。
  • 接著我們來分析x(t)=1,信號因為沒有改變,應該為DC。若短時距傅立葉轉換是理想的話,X(t,f)應該只有在f=0的時候有能量。但由上面的特性可發現,能量會沿著頻率軸呈現sinc函數。若我們取較大的B,可使sinc函數沿著頻率軸變窄,使得結果趨近理想。
  • 綜合以上說明,若我們使用較大的方形窗函數寬度(B),則X(t,f)時間軸的解析度會下降;頻率軸的解析度上升。若使用較小的B,則X(t,f)時間軸的解析度會上升;頻率軸的解析度下降。我們以下面做為例子說明:
x(t)={cos(2πt);t<10cos(6πt);10t<20cos(4πt);t20

結果如右圖所示,B越大則在頻率變化處(t = 10, 20)附近的頻率越不準確,即可能會有多個頻率成分出現。但同時,其他時間點的能量則較集中;沒有如B較小時,頻率散開或模糊的情形。

上述也是其中一個小波轉換及多解析度分析作為改進的方向,其中多解析度分析能在高頻時有較好的時間軸解析,而在低頻時能有較好的頻率軸解析,此種組合較契合許多實際的應用。

時間軸與頻率軸的解析度無法同時提升也與海森堡不確定性原理有關,即時間與頻率的標準差乘積有所限制,而高斯函數恰好能符合不確定性原理的極值,也就是兩者同時達到最好的解析度,而應用高斯函數的時頻分析方法即為加伯轉換,而在經過修改及多解析度分析後,成為了莫萊小波

優缺點

  • 優點:方形窗函數的短時距傅立葉轉換有許多可應用的數學特性,在數位的應用上所需的計算時間較少。
  • 缺點:時頻分析的表現較差

其他窗函數

高斯窗函數

概念

高斯窗函數的短時距傅立葉轉換又稱為加伯轉換。以下是高斯函數的數學定義,

w(t)=exp(πσt2)

據此,短時傅立葉轉換可以寫為

Gx(t,f)=eπ(τt)2ej2πfτx(τ)dτ

優缺點

  • 優點:可以在時間跟頻率上有更好的平衡,得到較清楚的時頻圖。
  • 缺點:因窗函數跟信號本身的乘法,計算時間跟複雜度都比較高。
三角形函數,橫軸為時間,B=1/2

概念

三角形窗函數如右圖所示,數學定義如下,

w(t)=max(1|t|,0)

w(t)={1|t|,|t|<2B;0,otherwise.

可使用在震幅改變的情況下,相對於方形窗函數,可更好的濾除雜訊。

海寧(Hanning/ Hann)窗函數

海寧函數

概念

海寧函數如右圖所示,數學定義如下,

w(t)={0.5+0.5cos(πt/B),when |t|B0,otherwise 

相較於三角形窗函數,海寧窗函數更為貼近現實訊號的趨勢,可進一步濾除雜訊。

漢明(Hamming)窗函數

漢明函數

概念

漢明窗函如右圖所示,數學定義如下,

w(t)={0.54+0.46cos(πt/B),when |t|B0,otherwise 

跟海寧窗函數類似,但兩端不為零。

海寧與漢明窗的區別[1]

窗函數有四個指標,分別為

  • 泄露指數 (Leakage Factor)
  • 主辦寬度 (Mainlobe width)
  • 旁辦衰減 (Sidelobe attenuation)
  • 旁辦滾降率 (Sidelobe roll-off rate)
    方形窗函數寬度(B)與STFT清晰率的取捨,橫軸為時間(秒),縱軸為頻率(赫茲)

因為漢明窗兩端不能到零,而海寧窗兩端為零。從以上頻率響應來看,漢明窗可以有效減少靠近的旁辦,但在較遠的旁辦洩漏比海寧窗嚴重。

如何決定窗函數

可根據以下條件來選取窗函數,

  • 複雜度,方形複雜度較低
  • 解析率,以方形為例,越寬的主辦可以得到更清楚的時頻圖,卻會把雜訊也一同顯示,反之則得到不清晰的時頻圖

在決定複雜度跟解析率後,可利用不同的窗函數達到更好的濾雜訊效果。

瑞利頻率

當Nyquist頻率是能被有意義分析的頻率最大值的限制,而瑞利頻率則是能被有限頻寬頻的窗函數解析的頻率最小值的限制。若給定一窗函數的長度是T秒,最低能被解析的頻率即為1/T Hz。

瑞利頻率在短時距傅立葉變化的應用中扮演重要的角色,像是在分析神經信號時。

頻譜(Spectrogram)

Spectrogram即短時傅立葉轉換後結果的絕對值平方,兩者本質上是相同的,在文獻上也常出現spectrogram這個名詞。

SPx(t,f)=|X(t,f)|2=|w(tτ)x(τ)ej2πfτdτ|2

應用[2][3]

應用短時距傅立葉變換分析聲音訊號

短時距傅立葉變換及其他工具經常用於分析音樂。

如右圖所示,

  1. 水平軸為頻率,左側為最低頻率,右側為最高頻率
  2. 條形高度(混和顏色表示)表示該頻帶內的頻率幅度
  3. 深度表示時間

音頻工程師使用這種視覺來獲取有關音頻樣本的信息。

此外,因頻率會隨時間而改變,短時距也可使用在以下情境,

  • 訊號取樣 (signal sampling),
  • 調變 (modulation),
  • 生物訊號 (biomedical signals),等等

若與時間無關,如卷積,照片等則不能使用短時距傅立葉變換來進行分析。而影片屬於3D訊號,其短時距傅立葉產物為6D訊號,故也不適用。

短時距傅立葉變換實現方法

從連續短時距傅立葉變化的定義出發

X(t,f)=w(tτ)x(τ)ej2πfτdτ

t=nΔt,f=mΔf,τ=pΔt ,則上述式子時域可從連續轉為離散

X(nΔt,mΔf)=p=w((np)Δt)x(pΔt)ej2πmpΔtΔfΔt

若當|t|>B,w(t)0BΔt=Q

上式可改寫為

X(nΔt,mΔf)=p=nQn+Qw((np)Δt)x(pΔt)ej2πmpΔtΔfΔt

直接運算

限制條件

(1)要滿足Nyquist criterion

Δt<12ΩΩ=Ωx+Ωw
x(τ)的頻寬為Ωx。而w(τ)的頻寬則為Ωww(tτ)的頻寬也為Ωw
因為在時域相乘相當於在頻域做摺積,因此x(τ)w(tτ)的頻寬為Ωx+Ωw(通常Ωx會遠大於Ωw,所以主要影響頻寬的是Ωx)

推導

X(t,f)=w(tτ)x(τ)ej2πfτdτ
轉換到離散形式(t=nΔt,f=mΔf,τ=pΔt),其中Δt=1fs
X(nΔt,mΔf)=p=w((np)Δt)x(pΔt)ej2πpmΔtΔfΔt,由於無限大的上下限實務上做不到,所以嘗試變成有限大的上下限。
假設w(t)0 for |t|>B,BΔt=Q
X(nΔt,mΔf)=p=nQn+Qw((np)Δt)x(pΔt)ej2πpmΔtΔfΔt

時間複雜度

TF(2Q+1)O(TFQ)
假設t-axis有T個取樣點,f-axis有F個取樣點,則我們總共要對TF個點做(2Q+1)次的運算,因此可得複雜度為TF(2Q+1)

優缺點

優點:簡單及有彈性(因為限制少)
缺點:複雜度較高



快速傅立葉變換

限制條件

(1)要滿足Nyquist criterion

Δt<12ΩΩ=Ωx+Ωw

(2)ΔtΔf=1N (N可為任意整數)

(3) N2Q+1 (做N點傅立葉轉換,輸入必要<=N)


推導

標準的離散傅立葉轉換式子為

Y[m]=n=0N1y[n]ej2πmnN

由直接運算得知如下公式

X(nΔt,mΔf)=p=nQn+Qw((np)Δt)x(pΔt)ej2πmpΔtΔfΔt

因此為了讓上式符合離散傅立葉轉換的上下界,令q=p(nQ)p=(nQ)+q代入上式即可得

X(nΔt,mΔf)=Δtej2π(Qn)mNq=0N1x1(q)ej2πqmN

其中 {x1(q)=w((Qq)Δt)x((nQ+q)Δt),for0q2Qx1(q)=0,for2Q<qN

運算步驟

假設t=n0Δt,(n0+1)Δt,,(n0+T1)Δt

f=m0Δf,(m0+1)Δf,,(m0+F1)Δf

步驟一:計算n0,m0,T,F,N,Q

步驟二:n=n0

步驟三:決定x1(q)

步驟四:X1(m)=FFT[x1(q)]

步驟五:轉換X1(m)X(nΔt,mΔf)

步驟六:設n=n+1,並回到步驟三,直到n=n0+T+1

  • 範例

{x(t)=cos(2πt),when t<10x(t)=cos(6πt),when 10t<20x(t)=cos(4πt),when t20

藉由取樣定理可得知Δt<16

假設f=55Δf=0.1,則經由f=mΔf可得m=5050

t=030Δt=0.1,則經由t=nΔt可得n=0300

步驟一:n0=0,m0=50,T=301,F=101,N=1ΔtΔf=100,Q=BΔt=10

步驟二:n=n0=0

步驟三:計算x1(q)(q=099)

步驟四:利用求得的x1(q)計算快速傅立葉轉換 X1[m]=q=0N1x1(q)ej2πqmN

步驟五:轉換X1(m)X(nΔt,mΔf)

X(nΔt,mΔf)=X1[m]Δtej2π(Qn)mN
  • 註:若是於程式中執行,要注意m可能為負數,所以需要利用到週期性性質X1[m]=X1[m+N]
X1[50]=X1[50],X1[49]=X1[51],,X1[1]=X1[99]
因此可將上式改為X(nΔt,mΔf)=X[((m))N]ej2π(Qn)mN,其中((m))N代表取m除以N的餘數

步驟六:設定n=n+1,回到步驟三直到n=n0+T1

時間複雜度

利用FFT計算q=0N1x1(q)ej2πqmN,其中每次FFT的時間複雜度為 Nlog2N

總時間複雜度為TNlog2NO(TNlog2N)

優缺點

優點:與直接運算相比,複雜度較低

缺點:較多限制,包括 {Δt<12(Ωx+Ωw)ΔtΔf=1NN2Q+1


使用快速傅立葉變換加上遞迴關係式

限制條件

(1)要滿足Nyquist criterion

Δt12ΩΩ=Ωx+Ωw

(2)ΔtΔf=1N

(3)N2Q+1

(4)需為方形窗函數的短時距傅立葉轉換


推導

因為是方形窗函數 w((np)Δt)=1,因此原式可由此關係變成以下式子

X(nΔt,mΔf)=p=nQn+Qx(pΔt)w((np)Δt)ej2πmpΔtΔfΔtX(nΔt,mΔf)=p=nQn+Qx(pΔt)ej2πmpΔtΔfΔt

而由此可看出n和n-1有遞迴關係,如下

X((n1)Δt,mΔf)=p=n1Qn1+Qx(pΔt)ej2πmpΔtΔfΔt=X(nΔt,mΔf)+x((nQ1)Δt)x((n+Q+1)Δt)


(1)以FFT計算X(n0Δt,mΔf)=Δtej2π(Qn0)mNq=0N1x1(q)ej2πqmNn0=min(n)

其中{x1(q)=x((nQ+q)Δt),for0q2Qx1(q)=0,forq>2Q


(2)利用遞迴關係式計算算X(nΔt,mΔf),n=n0+1max(n)

X(n0Δt,mΔf)=X((n1)Δt,mΔf)x((nQ1)Δt)ej2π(nQ1)mNΔt+x((n+Q)Δt)ej2π(n+Q)mNΔt

時間複雜度

(1)FFT計算一次 X(n0Δt,mΔf)=Δtej2π(Qn0)mNq=0N1x1(q)ej2πqmNn0=min(n)

  • 時間複雜度:O(Nlog2N)

(2)利用遞迴關係,計算n=n0+1時的數值,因此共會執行T-1次遞迴,如下式

X(n0Δt,mΔf)=X((n1)Δt,mΔf)x((nQ1)Δt)ej2π(nQ1)mNΔt+x((n+Q)Δt)ej2π(n+Q)mNΔt
每次遞迴都要計算x((nQ1)Δt)ej2π(nQ1)mNΔtx((n+Q)Δt)ej2π(n+Q)mNΔt兩個乘法(相當於2F的複雜度)
  • 時間複雜度:2F(T+1)O(TF)


總時間複雜度 2(T1)F+Nlog2NO(FT)

優缺點

優點:四種運算中,最低的複雜度O(TF)

缺點:

  1. 只適用於方形窗函數的短時傅立葉轉換
  2. 由於遞迴的關係,會有累加誤差。所以只要當中有小錯誤,誤差會累積到最後,造成無可預期的錯誤
  3. 不能用在不平衡的取樣點

使用Chirp-Z 轉換

限制條件

(1)要滿足Nyquist criterion

Δt12ΩΩ=Ωx+Ωw

推導

exp(j2πmpΔtΔf)=exp(jπp2ΔtΔf)exp(jπ(pm)2ΔtΔf)exp(jπm2ΔtΔf)

即可由直接運算的式子導出Chirp_Z變換的式子,如下所示

X(nΔt,mΔf)=Δtp=nQn+Qw((np)Δt)x(pΔt)ej2πmpΔtΔfX(nΔt,mΔf)=Δtejπm2ΔtΔfp=nQn+Qw((np)Δt)x(pΔt)ejπp2ΔtΔfejπ(pm)2ΔtΔf

運算步驟

Step1:x1[p]=w((np)Δt)x(pΔt)ejπp2ΔtΔf nQpn+Q

Step2:X2[n,m]=p=nQn+Qx1[p]c[mp]c[m]=ejπm2ΔtΔf

Step3:X(nΔt,mΔf)=Δtejπm2ΔtΔfX2[m,n]

時間複雜度

當n為定值時

(1)假設x1[p]=w((np)Δt)x(pΔt)ejπp2ΔtΔf 相乘時間複雜度為2Q+1

(2)令c[m]=ejπm2ΔtΔf,則p=nQn+Qx1[p]c[mp] convolution時間複雜度為 3Nlog2N

(3)Δtejπm2ΔtΔfp=nQn+Qw((np)Δt)x(pΔt)ejπp2ΔtΔfejπ(pm)2ΔtΔf相乘時間複雜度為 F

因此,總時間複雜度為T(2Q+1+F+3Nlog2N)O(TNlog2N)

雖然此實現方法和使用FFT計算的時間複雜度相同,但因為convolution相當於做三次FFT,因此實際操作時運算時間約為使用FFT計算的2~3倍

優缺點

優點:只有一項限制:Δt<12(Ωx+Ωw)

缺點:與前四種相比,複雜度是中間的。


Unbalanced Sampling for STFT and WDF

將直接法和快速傅立葉轉換方法做修正

1.直接法

X(t,f)=w(tτ)x(τ)ej2πfτdτ

修正後 :X(nΔt,mΔf)=p=nSQnS+Qw((nSp)Δτ)x(pΔτ)ej2πpmΔτΔfΔτ

其中, t=nΔt,f=mΔf,τ=pΔτ,B=QΔτ ,S=ΔtΔτ,ΔtΔτ

假設w(t)0 for |t|>B,則上下限可藉由以下推導而修正

t+BtBnΔt+QΔτnΔtQΔτ 則上限可以寫成nΔt+QΔτ==nSΔτ+QΔτ=Δτ(nS+Q),下限則以此類推

註:Δτ(輸入訊號的取樣間隔)

Δt(在t軸上的輸出訊號的取樣間隔)

然而,S=ΔtΔτ是整數會是比較好的。

  • 假設一聲音訊號:

{Δτ=144100Δt=1100 則經由上述公式可求得S=441,代表經由unbalanced sampling,我們跟原本Δt=Δτ=144100相比可減少441倍的取樣點。

時間複雜度

由於t軸的取樣點少了S倍,因此跟原本的直接運算複雜度相比,只要把TTS即可,如下:

複雜度:O(TSNlog2N)


2.快速傅立葉轉換

限制條件

(1) ΔτΔf=1N

(2) N=1ΔτΔf>2Q+1 : (ΔτΔf只要是整數的倒數即可)

(3) Δτ<12Ωw(τt)x(τ)的頻寬是 Ω

i.e. |FT{w(τt)x(τ)}|=|X(t,f)|0 ,當 |f|>Ω

過程

X(nΔt,mΔf)=p=nSQnS+Qw((nSp)Δτ)x(pΔτ)ej2πpmNΔτ

q=p(nSQ)p=(nSQ)+q

x1(q)=w((Qq)Δτ)x((nSQ+q)Δτ) for 0q2Q

x1(q)=0for 2Q<q<N

修正後:X(nΔt,mΔf)=Δτej2π(QnS)mNq=0N1x1(q)ej2πqmN

運算步驟

假設t=c0Δt,(c0+1)Δt,,(c0+C1)Δt=c0SΔτ,(c0S+S)Δτ,,[c0S+(C1)S]Δτ

f=m0Δf,(m0+1)Δf,,(m0+F1)Δf

τ=n0Δτ,(n0+1)Δτ,,(n0+T1)Δτ

步驟一:計算c0,m0,n0,C,F,T,N,Q

步驟二:n=c0

步驟三:決定x1(q)

步驟四:X1(m)=FFT[x1(q)]

步驟五:轉換X1(m)X(nΔt,mΔf)

步驟六:設定n=n+1及返回步驟三,直到n=c0+C1

複雜度

O(TSNlog2N)

Non-Uniform Δt

(1) 先用比較大的Δt

(2) 如果發現|X(nΔt,mΔf)||X((n+1)Δt,mΔf)| 之間有很大的差異,則在nΔt(n+1)Δt 之間選用比較小的取樣區間Δt1

(Δτ<Δt1<ΔtΔtΔt1Δt1Δτ皆為整數)

再用Unbalanced Sampling for STFT and WDF 中修正後的快速傅立葉轉換方法算出 X(nΔt+Δt1,mΔf)X(nΔt+2Δt1,mΔf)X((n+1)ΔtΔt1,mΔf)

(3) 以此類推,如果 |X(nΔt+kΔt1,mΔf)|,|X((n+1)Δt+(k+1)Δt1,mΔf)|的差距還是太大,則再選用更小的取樣間隔Δt2

(Δτ<Δt2<Δt1Δt1Δt2Δt2Δτ皆為整數)

  • 比較

若有一音樂信號總共有1.6秒,Δτ=144100

  1. 選擇Δt=Δτ,則共有44100*1.6+1=70561
  2. 選擇Δt=0.01=441Δτ,則共有100*1.6+1=161
  3. t隨時間不同有不同的選擇,如下
t=0,0.05,0.1,0.15,0.2,0.4,0.45,0.46,0.47,0.48,0.49,0.5,0.55,0.6,0.8,0.85,0.9,0.95,0.96,0.97,0.98,0.99,1,1.05,1.1,1.15,1.2,1.4,1.6,共29點
可以這樣做的原因為:有些音樂訊號在和弦與和弦中間幾乎沒有變化,因此可以挑選較大的Δt取樣;和弦在變換時,頻率會變化的較劇烈,因此變換和弦是需要用較多的取樣點。藉由此種non-uniform的取樣,可以讓我們大幅減少運算量,從最一開始的7056129可看出我們的運算量大幅降低。

参见

參考書目、資料來源

  1. Jian-Jiun Ding, Time frequency analysis and wavelet transform class notes, the Department of Electrical Engineering, National Taiwan University (NTU), Taipei, Taiwan, 2011.
  2. Alan V. Oppenheim, Ronald W. Schafer, John R. Buck : Discrete-Time Signal Processing, Prentice Hall, ISBN 0-13-754920-2
  3. Jian-Jiun Ding, Time frequency analysis and wavelet transform class notes, Graduate Institute of Communication Engineering, National Taiwan University (NTU), Taipei, Taiwan, 2017.
  4. Jian-Jiun Ding, Time frequency analysis and wavelet transform class notes, Graduate Institute of Communication Engineering, National Taiwan University (NTU), Taipei, Taiwan, 2020.
  5. Jian-Jiun Ding, Time frequency analysis and wavelet transform class notes, Graduate Institute of Communication Engineering, National Taiwan University (NTU), Taipei, Taiwan, 2022.