periodic signal🚧

periodic signal

「週期訊號」。每隔固定時間就會重複的訊號。

數學家稱作週期數列(離散)、週期函數(連續)。

period

「週期」。開始重複的時間。

多串週期訊號疊加,仍是一串週期訊號,週期是最小公倍數。

一串週期訊號分隔為多串週期訊號,此處不討論。

maximum / minimum / peak / foot

「最大值」「最小值」「峰」「谷」。全域極值、局部極值。

sinusoidal signal

「弦型訊號」。訊號呈現正弦函數、餘弦函數、歐拉公式。

弦型訊號是週期訊號的重要特例。請見本站文件「wave」。

frequency

「頻率」。週期的倒數。一單位時間的訊號重複次數。

週期訊號,倒數沒有任何意義。弦型訊號,倒數才有意義。

倒數源自弦波。週期的倒數恰好是弦波一單位時間的振動次數。

amplitude

「振幅」。數值軸,訊號高低範圍的一半。

週期訊號,一半沒有任何意義。弦型訊號,一半才有意義。

一半源自弦波。高低範圍的一半恰好是弦波數學式子之倍率。

spectrum(frequency spectrum)

「頻譜」。一串週期訊號分隔為多串週期訊號,求得各串週期訊號的振幅與頻率。

主流做法是傅立葉轉換:一串週期訊號分隔為多串弦型訊號。

頻譜習慣畫成函數圖形:橫軸是頻率,縱軸是振幅。

週期訊號的主角是週期與峰谷。弦型訊號的主角是頻率與振幅。因為大家經常使用傅立葉轉換將週期波分解成複弦波,所以週期訊號的敘事主角變成頻率與振幅。

sampling theorem(Nyquist's theorem)

「取樣定理」。一串弦型訊號,從連續變離散。如果想要藉由離散訊號得知連續訊號的頻率,那麼取樣頻率必須大於等於頻率兩倍。至於振幅,已經無法得知了。

取樣定理可以推廣為週期訊號。主流做法是傅立葉轉換:一串週期訊號分隔為多串弦型訊號。如果想要得知每串弦型訊號的頻率,取樣頻率必須大於等於最大頻率兩倍。

random signal🚧

random signal

「隨機訊號」。每個數值都是隨機變數。所有數值形成隨機程序。

理想的名稱應是「浮動訊號」。請見本站文件「floating number」。

random process的頻譜

隨機過程,實施「傅立葉轉換」,從時域變頻域。

普通的隨機過程:無解析解,頻譜混亂。

滿足wide-sense stationary條件的隨機過程:有解析解。兩兩的共相關數,可求得頻譜。具備傅立葉轉換的相關數學特性,諸如線性、卷積乘法對偶、能量守恆。

然而,滿足wss條件的隨機過程,就是每個數字幾乎一樣的數列。缺乏討論意義,也無法解決現實問題。數學家目前僅發現wss條件,尚未發現更具討論意義的條件。

noise

「雜訊」或「噪訊」。雜訊沒有明確定義。目前大家認為雜訊包含幾種意義:一、不被需要的訊號、冗餘的訊號。二、沒有規律的訊號、不可預測的訊號。三、無法擬合數學模型的訊號。

大家觀察各種真實現象,命名為各種雜訊。大家也利用浮動訊號建立數學模型,創造出各種雜訊。維基百科整理了一份列表:

例如「Gaussian white noise」:高斯白雜訊。每個隨機變數都是常態分布,其平均數(浮動中心)和變異數(浮動範圍)均相同。恰好屬於白雜訊。

noise的頻譜

大家仿照光譜由紅到紫的特性,嘗試分類雜訊。

 white: 強度為常數
  grey: 強度符合人類聽覺曲線。(不那麼白)
   red: 強度正比於頻率倒數平方。  以頻率對數為座標軸,漸減6dB。
  pink: 強度正比於頻率倒數。    以頻率對數為座標軸,漸減3dB。(不那麼紅)
violet: 強度負正比於頻率倒數平方。 以頻率對數為座標軸,漸增6dB。
  blue: 強度負正比於頻率倒數。   以頻率對數為座標軸,漸增3dB。(不那麼紫)

noise reduction(denoising)

分離並消除隨機訊號,通常稱作「去雜訊」或「降噪」。

假設雜訊是高頻,於是套用low-pass filter。轉換到頻域、刪除高頻強度、轉換回時域。

https://www.mathworks.com/help/wavelet/ug/wavelet-denoising.html

peak analysis🚧

frame

「框」。擷取一段訊號,以此判斷極值。這段訊號長度必須涵蓋一個週期,才能判斷極值。

peak detection

找到波形的尖峰。

一、消除鋸齒:方法很多,諸如
 口、時域的平滑效果(k點平均數)(k點中位數)。
 口、頻域的刪除高頻(高頻形成鋸齒)。
 口、時域的linear prediction(迴歸函數)。
二、尋找極值:中央高、兩側低。
三、估計峰尖:極值前後,三點做拋物線內插,求出拋物線頂點。

peak continuation

找到頻譜的尖峰。

尖峰隨著時間連續變化。追蹤每個時刻的尖峰位置。

periodicity analysis🚧

frame

「框」。擷取一段訊號,以此判斷週期。這段訊號長度必須涵蓋多個週期,才能判斷週期。

periodicity detection(frequency detection)

找到波形的週期。

數學、物理學、訊號學,總是預設我們可以得到特定時間點、特定瞬間的頻率。計算學無這款好空事志。計算學只能得到一段時間(一段訊號)的頻率,並且假裝它是特定瞬間的頻率。

peak detection:找到兩個波峰,位置相減得到波長,波長倒數得到頻率。僅適合純音。
zero-crossing rate:波形穿越零的次數。僅適合純音。
 ACF:位移、相乘、加總(內積)。各種位移量,找最大值。
AMDF:位移、相減再絕對值、加總(絕對值誤差)。各種位移量,找最小值。
 YIN:位移、相減再平方、加總(平方誤差)。各種位移量,除以累積和,找最小值。
複合:例如 ACF / (AMDF + 1.0),找最大值。

frequency tracking

找到頻譜的尖峰。

頻率隨著時間連續變化。追蹤每個時刻的頻率高低。

spectrum analysis🚧

Fourier analysis

Fourier transform:波形分解成一群弦波,頻率為整數倍。

傅立葉轉換的計算結果,經常轉換成頻譜。除了廣為人知的頻譜之外,還有許多衍生產物,命名方式是翻轉字母順序,非常搞笑。

specmurt和cepstrum主要用於共鳴聲音,例如樂器聲、說話聲。共鳴產生諧音:強度頻譜上,強度規律地出現,其頻率呈倍數。頻率軸取log,讓出現間隔成為等距,叫做specmurt。強度規律地出現,宛如波,於是有人再度套用一次傅立葉轉換找到基頻(個人認為莫名其妙),叫做cepstrum。由於頻譜有一些重大缺點,又加上計算時間長,所以並不好用。

spectrum:頻譜。分為強度頻譜、相位頻譜。
specmurt:名稱不詳。頻譜的座標軸,頻率取log,符合人類聽覺感受。
cepstrum:倒頻譜。強度頻譜,強度值取log,實施(逆向)傅立葉轉換。

wavelet analysis

Wigner-Ville distribution

power analysis🚧

energy detection

找出訊號的能量。

週期訊號可以分隔為多串弦型訊號。能量就是每個弦型訊號的振幅的平方和。

能量就是頻譜逐項平方總和。就這樣。

根據Parseval's theorem,可以直接在時域求得能量。

Parseval's theorem:時域共軛乘法等於頻域共軛乘法。

Parseval's theorem:時域逐項平方總和等於頻域逐項平方總和。

Parseval's theorem
N-1              N-1
sum x*(n) y(n) = sum x̂*(n) ŷ(n)     where x* = conjugate(x)
n=0              n=0

Parseval's theorem (special case)
N-1           N-1
sum |x(n)|² = sum |x̂(n)|²     where x̂ = fourier(x)
n=0           n=0
Spectrum Sensing: Enhanced Energy Detection Technique Based on Noise Measurement
Teager–Kaiser Energy Operator
TK[x(t)] = ẋ(t)² - x(t)ẍ(t)
TK[x(n)] = x(n)² - x(n+1)x(n-1)

power spectral density estimation

找出特定頻段的功率。

功率就是頻譜單項平方,最後除以訊號長度。就這樣。

energy:能量。每個弦型訊號的振幅的平方和。每個訊號的平方和。
power:功率。能量除以時間。每單位時間的能量。
discrete-time signal
E = sum |x̂(f)|²       energy
Eₓₓ(f) = |x̂(f)|²      energy spectral density
P = E / N             power
Pₓₓ(f) = Eₓₓ(f) / N   power spectral density (periodogram)
continuous-time signal
https://en.wikipedia.org/wiki/Spectral_density

    +∞
E =  ∫ |x̂(f)|² df              energy
    -∞

    +∞
  =  ∫ |x(t)|² dt              Parseval's theorem
    -∞

Eₓₓ(f) = |x̂(f)|²               energy spectral density

         1  t₀+½T
P = lim ———   ∫   |x(t)|² dt   power
    T→0  T  t₀-½T

         1  +∞
  = lim ———  ∫ |xᴛ(t)|² dt     let xᴛ(t) = x(t) w(t)
    T→0  T  -∞                 w is rectangle window

         1  +∞
  = lim ———  ∫ |x̂ᴛ(f)|² df
    T→0  T  -∞

             |x̂ᴛ(f)|²
Pₓₓ(f) = lim ————————          power spectral density
         T→0    T

然而,針對隨機訊號,事情相當棘手。隨機訊號的傅立葉轉換毫無規律。幸運的是,滿足wss條件的隨機訊號,可以利用Wiener–Khinchin theorem,以自相關函數的傅立葉轉換求得能量譜密度、功率譜密度。仔細考慮自相關函數超出邊界的訊號該如何處理,衍生各種演算法。

針對一般訊號,如果雜訊部分恰是滿足wss條件的隨機訊號,就可以使用這些演算法。

專著《Digital Signal Processing: Principles, Algorithms and Applications》。

Wiener–Khinchin theorem
rₓₓ(k) = sum x*(n) x(n+k)   autocorrelation function
Sₓₓ(f) = r̂ₓₓ(k)             energy spectral density

以傅立葉轉換,求得功率譜密度。

Bartlett's method:等分K段,每段M點。每段分別求得功率譜密度,再求平均數。

             1  M-1
Pₓₓ⁽ⁱ⁾(f) = ——— sum |x(n) exp(-𝑖2πfn)|²
             M  n=0

          1   K
Pₓₓ(k) = ——— sum Pₓₓ⁽ⁱ⁾(f)
          K  i=1

Welch's method:一、每段互相交疊一部分。二、窗函數。

             1  M-1
Pₓₓ⁽ⁱ⁾(f) = ——— sum |x(n) w(n) exp(-𝑖2πfn)|²
            M U n=0

           1  M-1
where U = ——— sum w(n)²
           M  n=0

以自相關函數的傅立葉轉換,求得功率譜密度。

periodogram:自相關函數。超出範圍不計入。左右對稱。

         ⎧  1  N-m-1
rₓₓ(k) = ⎪ ———  sum x*(n) x(n+k)   k = 0 ... N-1
         ⎨ N-m  n=0
         ⎪ 
         ⎩ rₓₓ*(-k)                k = -1 ... -(N-1)

           N-1
Pₓₓ(f) =   sum   rₓₓ(k) exp(-𝑖2πfk)
         k=-(N-1)

periodogram:自相關函數。超出範圍視作零。左右移位。

         ⎧  1  N-k-1
rₓₓ(k) = ⎪ ———  sum x*(n) x(n+k)   k = 0 ... N-1
         ⎪  N   n=0
         ⎨ 
         ⎪  1   N-1
         ⎪ ———  sum x*(n) x(n+k)   k = -1 ... -(N-1)
         ⎩  N  n=|k|

           N-1
Pₓₓ(f) =   sum   rₓₓ(k) exp(-𝑖2πfk)
         k=-(N-1)

Blackman–Turkey method:一、自相關函數。二、窗函數。

           M-1
Pₓₓ(f) =   sum   rₓₓ(k) w(k) exp(-𝑖2πfk)
         k=-(M-1)

以autoregressive model的係數,求得功率譜密度。

Yule–Walker method:前向誤差

                    p
Pₓₓ(f) = σ² / |1 + sum a(k) exp(-𝑖2πfk)|²
                   k=1
                    p
where σ² = rₓₓ(0) prod (1 - |a(k)|²)
                   k=1

Burg's method:前向誤差加上後向誤差

自相關函數做特徵分解,求得功率譜密度。

https://huipinghuang.work/MyPDFs/CaponandMUSIC.pdf
https://en.wikipedia.org/wiki/MUSIC_(algorithm)
https://www.mathworks.com/help/signal/ug/music-and-eigenvector-analysis-methods.html
eigenanalysis

onset detection

找到非雜訊的起點。

https://jneuroengrehab.biomedcentral.com/articles/10.1186/s12984-023-01268-8

envelope analysis🚧

envelope detection

找出波形的包絡線。

波形劇烈變動,處處尖峰;波形簡化為包絡線,容易辨認尖峰。

聲音訊號波形的包絡線(時域):
 回、正向傅立葉轉換,數列後半(共軛對稱部分)設為0,
   逆向傅立葉轉換,取絕對值,乘以2。
 回、Hilbert transform,取絕對值。
   效果同上。
                                   |  assume g(t) x cos(wt)
1. fourier transform               |  G(f) ⋅ 0.5 ⋅ (delta(w) + delta(-w))
2. negative frequency: value -> 0  |  G(f) ⋅ 0.5 ⋅ delta(w)
3. inverse fourier transform       |  0.5 g(t) x e𝑖wt
4. abs                             |  0.5 |g(t)|
5. multiply 2                      |  |g(t)|
強度頻譜的包絡線(頻域):
 回、聲音訊號實施linear prediction,轉換到頻域。稱作LPC spectrum。
   linear prediction的項數,設定成尖峰數量的兩倍(共軛對稱)。pole即尖峰。
 回、強度頻譜套用low-pass filter。因其具有平滑效果。
   不合邏輯,比較少用。
 回、承上,改成取log,並且改成在頻域實施low-pass filter。
   此即cepstrum乘上0或1。
   不合邏輯,比較少用。

Hibert–Huang transform:找出波形的包絡線的中間線。

mode analysis🚧

mode decomposition

https://pmc.ncbi.nlm.nih.gov/articles/PMC7962053/
variational mode decomposition
empirical mode decomposition
Hilbert vibration decomposition
https://www.powerworld.com/WebHelp/Content/MainDocumentation_HTML/Transient_Stability_Dialog_ResultAnalysisModalAnalysis.htm

signal separation

假定數據是關鍵因子的加權平均數。真實世界有許多自然現象是加權平均數,例如合力就是施力的加權平均數。

例如麥克風錄到一段演奏,嘗試分隔出每種樂器的聲音。

例如相機拍到一個場景,嘗試分隔出光線的來源與強度。

例如RFID收到一段訊號,嘗試分隔出訊號的原始波形。

https://en.wikipedia.org/wiki/Signal_separation
independent component analysis
wavelet analysis

measure🚧

logarithmic scale

人類對振幅、頻率、能量、……的感受程度不呈線性增長,而是大致呈對數增長。數量級越大越不靈敏。

修改比例尺,使得對數增長變成線性增長,稱作「對數尺度」。

細分三種方式:

一、振幅、頻率、能量、……的座標軸數值取exp。

二、振幅、頻率、能量、……的座標軸間距取exp再倒數。

三、振幅、頻率、能量、……的數值取log。

一與二沒有更動數值,只對圖表動手腳。三更動數值,可用於各種用途,像是編入數學公式、設計指數指標。本文以三為主。

人類慣用十進位,於是取log₁₀,得到位數(減一)。教科書慣用微積分,於是取logₑ,也就是自然對數ln,得到玄學。

順便介紹兩個常見指標。

數量級:取log₁₀。最後再取整數,簡潔呈現結果。

order of magnitude = floor(log₁₀(P))

分貝:給定數值、自訂基準數值,兩者的數量級差異。最後再乘以10,突顯第一位小數(十分位小數)。

                  ⎛ P  ⎞
decibel = 10 log₁₀⎜ —— ⎟ = 10 (log₁₀(P) - log₁₀(P₀))
 (dB)             ⎝ P₀ ⎠

數量級和分貝只是粗略指標,不能直接相加。一切計算必須使用原始數值。據說期末考都會考分貝加法,據說總有同學不會計算。

dynamic range

人類(或儀器)能夠感受的振幅、頻率、能量、功率、……範圍有限。上界數值、下界數值,稱作「動態範圍」。

也有人將上界數值、下界數值,分別換算成數量級,再求得兩個數量級的差異,當作「動態範圍」。

也有人將兩個數量級的差異,還原成原本數值,形成上界數值、下界數值的比值,當作「動態範圍」。

signal similarity measure

兩串訊號的相似程度。有許多種指標。

MSE和ZNCC最常用,其它只是鋪陳。

MAE宛如絕對值誤差。MSE宛如平方誤差。為了讓相似程度不受取樣頻率影響,一律除以訊號長度N。

RMSE宛如直線距離。兩個向量改成了兩串訊號。

ZNCC宛如相關係數。兩個隨機變數(分布)改成了兩串訊號。

mean absolute error

       1  N-1
MAE = ——— sum |a(n) - b(n)|
       N  n=0

mean squared error

       1  N-1
MSE = ——— sum |a(n) - b(n)|²
       N  n=0

root mean squared error
                     _______________________
                    |  1  N-1
RMSE = sqrt(MSE) =  | ——— sum |a(n) - b(n)|²
                   V   N  n=0

root mean squared logarithmic error
          _____________________________________________
         |  1  N-1
RMSLE =  | ——— sum |log₁₀(a(n) + 1) - log₁₀(b(n) + 1)|²
        V   N  n=0
cross correlation

     N-1                           N-1
CC = sum a(n) b*(n)   or   CC(k) = sum a(n) b*(n-k)
     n=0                           n=0

zero-mean normalized cross correlation

           cov(a,b)
ZNCC = ———————————————
       √ var(a) var(b)

where mean(a)  = sum a(n) / N
      var(a)   = sum |a(n) - mean(a)|² / N
      cov(a,b) = sum ((a(n) - mean(a))(b*(n) - mean(b*))) / N

signal quality measure

一串訊號的品質好壞程度。有許多種指標。

這些指標,大家習慣再換算成分貝。

signal-to-noise ratio 訊噪比

      power(signal)   sum |a(n)|²
SNR = ————————————— = ———————————
      power(noise)    sum |w(n)|²

where â = fourier(a)
      energy(a) = sum |â(n)|² = sum |a(n)|²
      power(a) = energy(a) / N

peak signal-to-noise ratio 峰值訊噪比

          ENERGY_RANGE               |R|²
PSNR = —————————————————— = ——————————————————————
       MSE(signal, noise)   sum |a(n) - w(n)|² / N

where range of signal = [-R, +R]
      range of energy of signal = [0, |R|²]
      fluctuation of energy of signal = |R|² - 0 = |R|²