system

system

「系統」。多變量函數,輸入一串訊號、輸出一串訊號。

訊號每項拆開來看,系統由許多函數組成。

簡易範例:每項加1的系統、每項延遲1時刻的系統。

當全部函數都相同,僅索引值(時刻)不同,可以簡化成一個函數。每到一個新時刻,輸入一個新數字、輸出一個新數字。

system model

system model

以訊號格式分類
1. SISO system / MIMO system
2. discrete-time system / continuous-time system
3. open-loop system / closed-loop system

SISO system / MIMO system

輸入輸出只有一串訊號
輸入輸出有許多串訊號
SISO system:

       ┌─────┐ 
x ────→│  f  │────→ y
       └─────┘

MIMO system:

x₀ ────→┌─────┐────→ y₀
x₁ ────→│  f  │────→ y₁
x₂ ────→└─────┘

discrete-time system / continuous-time system

訊號是離散數列/連續函數。
sequence x[n] = (x[0], x[1], x[2], ...)
function x(t)

訊號數值則沒有明講。
訊號數值可以離散(整數,經過量化)、也可以連續(浮點數)。

只談橫軸,不談縱軸。
後綴-time就是為了強調此事。但是很多人省略後綴-time。
函數x(t),經常省略括號,寫成函數x。
數列x[n],亦可省略括號,寫成數列x。
為了避免混淆數列和數字,以下內容將採用此標記方式:
數列x:一連串數字x[0] x[1] ...。
數字x[n]:數列第n項。
discrete-time system:

x[n]                            y[n]
  ↑ ╷╷              ┌─────┐       ↑ ╷╷       
  ├┴┴┴┴┬┬┬┬→n  ────→│  f  │────→  ├┴┴┴┴┬┬┬┬→n
  │     ╵╵          └─────┘       │     ╵╵   

continuous-time system:

x(t)                            y(t)
  ↑ /‾\             ┌─────┐       ↑ /‾\
  ├─̸───⃥────̸→t  ────→│  f  │────→  ├─̸───⃥────̸→t
  │    \_/          └─────┘       │    \_/

open-loop system / closed-loop system

開迴路系統:輸入訊號經過系統得到輸出訊號
閉迴路系統:輸出訊號也做為輸入訊號
input signal:  x = (x[0], x[1], ...)
output signal: y = (y[0], y[1], ...)
open-loop system:   y = f(x)
closed-loop system: y = f(x,y)
SISO system (denoted by functional):

  y = f(x,y)

SISO system (denoted by functions):

  ⎧ y[0] = f₀(x[0], x[1], x[2], ...,       y[1], y[2], ...)
  ⎨ y[1] = f₁(x[0], x[1], x[2], ..., y[0],       y[2], ...)
  ⎩   :                          :

  等號兩側的y不能有相同時刻。為了形成函數。
  另外也不能出現迴圈。
  以圖論術語來說:必須是有向無環圖DAG。
open-loop system:

       ┌─────┐ 
x ────→│  f  │────→ y
       └─────┘

closed-loop system:

       ┌─────┐
x ────→│  f  │──┬─→ y
    ┌─→└─────┘  │
    └───────────┘

system — LTI system

引言

系統模型千變萬化,其中線性非時變系統是重要特例。電子系統、機械系統幾乎都是這種特例。教科書優先介紹這種特例。

線性非時變系統的演算法,已經被鑽研得相當透徹。本世紀完全沒有變革。即便學會這些演算法,你也難以推陳出新。線性非時變系統的演算法,只是衍生變種。它們源自數值線性代數、矩陣運算。即便學會這些演算法,那也只是細枝末節。

MATLAB專精矩陣運算,也專精訊號處理。線性非時變系統的演算法,MATLAB一應俱全。一行指令就能解決問題。大家沒有閒情逸致鑽研演算法細節。我也沒有閒情逸致介紹MATLAB指令。

理論上與實務上都已大功告成。剩下的就是整理了。

system model

system model

以數學性質分類
4. causal system / noncausal system
5. time-invariant system / time-variant system
6. linear system / nonlinear system
重要特例
linear time-invariant causal system (LTI system)

causal system / time-invariant system / linear system

因果系統:輸入變數索引值小於等於輸出變數索引值。
非時變系統:輸入移位導致輸出移位。
線性系統:輸入相加導致輸出相加、輸入倍率導致輸出倍率。
(1) causal system

  ⎧ y[0] = f₀(x[0])
  ⎪ y[1] = f₁(x[0], x[1], y[0])
  ⎨   :         :
  ⎪ y[n] = fₙ(x[0], ..., x[n], y[0], ..., y[n-1])
  ⎩   :         :

  y只能是過去時刻。為了形成函數。

(2) time-invariant system (translation-invariant system)

  y +⃡ k = f(x +⃡ k, y +⃡ k)

  ⎧ y[0+k] = f₀(x[0+k], x[1+k], ...)
  ⎨ y[1+k] = f₁(x[0+k], x[1+k], ...)
  ⎩    :               :

  <=> fₙ₊ₖ(x[0], x[1], ...) = fₙ(x[k], x[k+1], ...)
      ∀n≥0 and ∀k≥0

(3-1) additive system

  y₁ + y₂ = f(x₁ + x₂, y₁ + y₂)

  ⎧ y₁[0] + y₂[0] = f₀(x₁[0] + x₂[0], x₁[1] + x₂[1], ...)
  ⎨ y₁[1] + y₂[1] = f₁(x₁[0] + x₂[0], x₁[1] + x₂[1], ...)
  ⎩       :                          :

(3-2) homogeneous system of order 1

  k y = f(k x, k y)

  ⎧ k y[0] = f₀(k x[0], k x[1], k x[2], ...)
  ⎨ k y[1] = f₁(k x[0], k x[1], k x[2], ...)
  ⎩     :                   :

Now you can understand why people prefer functional.
An illustration is even better. However, I am lazy to do that.
x是數列/函數的名稱。
x +⃡ k是索引值/輸入變數加k。x[n+k]。
x + k是元素值/輸出變數加k。x[n]+k。
x +⃡ k是我自己發明的運算符號。

當輸入變數、輸出變數有許多個,
那麼這種運算符號無法勝任。
偏微分運算也有一樣的問題,詳情請見這篇文章:
https://math.stackexchange.com/questions/3266639/
運算符號必須標記變數編號。這些事情留給後人解決吧。

linear time-invariant causal system (LTI system)

大家習慣省略causal。
在線性非時變系統當中,
因果系統:遞迴函數的輸入變數都是過去時刻與當前時刻。
非時變系統:遞迴函數不因時刻而變。
線性系統:遞迴函數是線性函數。
causal & time-invariant <=> recurrence

  y[n] = f(x[n], ..., x[n-p], y[n-1], ..., y[n-q])

  where f ≜ f₀ = f₁ = ...
        p ≥ 0
        q ≥ 1
        x[n] ≜ 0 , if n < 0
        y[n] ≜ 0 , if n < 0

therefore, LTI system can be denoted by recurrence.

(1) causal system
    p ≥ 0 and q ≥ 1
(2) time-invariant system
    f₀ = f₁ = ...
(3) linear system
    y₁[n] + y₂[n] = f(x₁[n] + x₂[n], ...)
    k y[n] = f(k x[n], ...)
              中譯 意譯
cause (noun)  原因 原因
cause (verb)  導致 因而
cause (conj)  因為 原因是(because的精簡講法)
causal (adj)  因果 原因的
系統視作函數,同時滿足三種性質:
因果性、時間不變性、線性(加性、倍性)。
causal和linear是肯定詞彙。time-invariant卻是否定詞彙。
其中必有蹊蹺。

不變和等變是兩種不同的概念。
一、X不變系統:輸入套用X,輸出仍然不變。
二、X等變系統:輸入套用X,輸出也會套用X。
1. X-invariant system:   f(X(x,y)) = f(x,y)
2. X-equivariant system: f(X(x,y)) = X(y)

此處應是等變!
本來應該稱作時間等變系統time-equivariant system,
結果卻誤植為時間不變系統time-invariant system。
古人分不清楚兩者差別。成為歷史共業。
訊號學稱作時間不變系統time-invariant system。
數學稱作位移不變系統translation-invariant system。
很少人稱作移位不變系統shift-invariant system。

LTI system

linear constant-coefficient difference equation / linear constant-coefficient differential equation

線性非時變系統,教科書習慣介紹這兩種:
線性常係數差分方程式:離散時間系統。加權總和。用於電腦計算。
線性常係數微分方程式:連續時間系統。微分加權總和。用來描述物理現象。

注意到,權重是常數。
也就是說,方程式的係數是常數,不隨時刻而變。

線性非時變系統,可以表示成線性遞迴函數。
方程式的變數,源自輸入訊號、輸出訊號。
方程式的變數,都在同一條船上,只有時刻不同,因而形成遞迴函數。

一階微分=取前一個時刻。
二階微分=取前兩個時刻。
linear constant-coefficient difference equation:
  a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ... + aₚ x[n-p]
= b₀ y[n] + b₁ y[n-1] + b₂ y[n-2] + ... + b₉ y[n-q]

linear constant-coefficient differential equation:
  a₀ x(t) + a₁ x′(t) + a₂ x″(t) + ... + aₚ x⁽ᵖ⁾(t)
= b₀ y(t) + b₁ y′(t) + b₂ y″(t) + ... + b₉ y⁽𐞥⁾(t)

moving average model / autoregressive model

線性常係數差分方程式,細分三種款式。
移動平均數模型:開迴路系統。輸入訊號的加權總和=輸出訊號。
自迴歸模型:閉迴路系統。輸出訊號的加權總和=輸出訊號。
兩種都用:閉迴路系統。輸入訊號的加權總和=輸出訊號的加權總和。
denoted by functional:

MA model    y = f(x)
AR model    y = f(y)
ARMA model  y = f(x,y)

denoted by recurrence:

MA model    y[n] = f(x[n], x[n-1], ..., x[n-p])
AR model    y[n] = f(      y[n-1], ..., y[n-q])
ARMA model  y[n] = f(x[n], x[n-1], ..., x[n-p],
                           y[n-1], ..., y[n-q])
y[n] and y[n-1]...y[n-q] at opposite side:

MA model    y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
AR model    y[n] =           b₁ y[n-1] + ... + b₉ y[n-q]
ARMA model  y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
                           + b₁ y[n-1] + ... + b₉ y[n-q]

y[n] and y[n-1]...y[n-q] at same side:

MA model    a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p] = y[n]
AR model    b₀ y[n] + b₁ y[n-1] + ... + b₉ y[n-q] = 0
ARMA model  a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
          = b₀ y[n] + b₁ y[n-1] + ... + b₉ y[n-q]
ARMA model = linear constant-coefficient difference equation
有件事情需要考慮:
最終項y[n]、其餘項y[n-1]...y[n-q],放在等號同側還是異側。
係數b[0]相差一個負號。

統計學家採用異側,訊號學家採用同側。
教科書採用其中一種。你得自己小心區分同側異側。
兩者各有優點。
異側的優點:容易求值。
同側的優點:容易做z-transform、容易算transfer function。

system model

LTI system
 ├ linear constant-coefficient difference equation
 │  ├ MA model
 │  ├ AR model
 │  └ ARMA model
 └ linear constant-coefficient differential equation

system parameter

系統參數就是那些權重。
a₀, a₁, ... aₚ, b₀, b₁, ..., b₉

有了系統模型、系統參數,就能完全知道系統是什麼。

system — hybrid system

引言

系統模型可以改得更加複雜,例如內部狀態、啟動函數。

Kálmán在1960年代首度使用內部狀態,並且建構數學理論。當時的登月太空梭Apollo系列,即是採用了Kálmán filter。

想像一下你人在台北車站門口廣場、手上有一支筆。玉山山頂擺著一顆西瓜。幫你的筆安裝一套飛行制御系統,讓你的筆扔出去之後自動瞄準玉山山頂並且射中那顆西瓜。這就是登月計畫。

生物學家在20世紀首度發現啟動函數,但是沒有工程應用。直到21世紀深度學習崛起,啟動函數才獲得重視。

自從深度學習出現residual neural network,啟動函數ReLU開始受到重視。大家查覺ReLU是條件函數。條件函數可做邏輯判斷。系統串聯與並聯可做一連串邏輯判斷。系統前饋與回饋可做細膩的邏輯判斷。

數學家從未討論條件函數、從未建立數學理論。儘管大家創造出各式各樣的系統模型,但是由於缺乏數學理論,所以無法精準評比優劣。一切都是靠感覺,很不科學。

system model

system model

以附加元件分類
1. system with internal state        (state-space model)
2. system with activation function   (neural network)
3. system with stochastic transition (probabilistic system)
4. system with stochastic process    (stochastic system)
內部狀態:複製一份輸入訊號,套用另一個系統,當作第二道輸入訊號。
啟動函數:輸出訊號,套用一個函數,調整輸出訊號強弱。
隨機變遷:輸入訊號、輸出訊號、系統,改成機率分布函數。
隨機過程:輸入訊號、輸出訊號,追加雜訊。
system with internal state:

               ┌───┐
u ──┬─────────→│ g │──→ y
    │  ┌───┐ ┌→│   │
    └─→│ f │─┤ └───┘
    ┌─→│   │ │
    │  └───┘ │x
    └────────┘

system with activation function:

     ┌───┐   ┌────┐
x ──→│ f │──→│ _╱ │──→ y
     └───┘   └────┘

system with stochastic transition:

     ┌─────┐
     │⟜---⊸│
x ──→│⟜---⊸│──→ y     我要想一下怎麼用文字畫出全連接
     │⟜---⊸│
     └─────┘
        f

system with stochastic process:

     d           e
     │           │
     ↓+  ┌───┐   ↓+
x ──→⊕──→│ f │──→⊕──→ y
    +    └───┘  +

system with internal state

請見本站文件「state-space model」。

internal state

⎰ x[n+1] = fₙ(x[n], u[n])
⎱ y[n]   = gₙ(x[n], u[n])

u: input signal
y: output signal
x: internal state
u是輸入訊號
y是輸出訊號
g是系統(開迴路)

x是內部狀態
f是另一個系統(閉迴路)

x是追加的第二道輸入訊號。
複製一份u,套用另一個系統f,當作第二道輸入訊號x。

符號意義被更動,u和x地位對調,f和g地位對調。
阿就古人當初沒有考慮清楚。成為歷史共業。

causal system / time-invariant system / linear system

time-variant causal system with internal state:
⎰ x[n+1] = fₙ(x[n], u[n])
⎱ y[n]   = gₙ(x[n], u[n])

time-invariant causal system with internal state:
⎰ x[n+1] = f(x[n], u[n])
⎱ y[n]   = g(x[n], u[n])

linear time-variant causal system with internal state:
⎧ x[n+1] = aₙ₀ x[n] + aₙ₁ x[n-1] + ... + aₙₚ x[n-p]
⎨        + bₙ₀ u[n] + bₙ₁ u[n-1] + ... + bₙ₉ u[n-q]
⎪ y[n]   = cₙ₀ x[n] + cₙ₁ x[n-1] + ... + cₙᵣ x[n-r]
⎩        + dₙ₀ u[n] + dₙ₁ u[n-1] + ... + dₙₛ u[n-s]

linear time-invariant causal system with internal state:
⎧ x[n+1] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
⎨        + b₀ u[n] + b₁ u[n-1] + ... + b₉ u[n-q]
⎪ y[n]   = c₀ x[n] + c₁ x[n-1] + ... + cᵣ x[n-r]
⎩        + d₀ u[n] + d₁ u[n-1] + ... + dₛ u[n-s]

representation

polynomial representation:
⎧ x[n+1] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
⎨        + b₀ u[n] + b₁ u[n-1] + ... + b₉ u[n-q]
⎪ y[n]   = c₀ x[n] + c₁ x[n-1] + ... + cᵣ x[n-r]
⎩        + d₀ u[n] + d₁ u[n-1] + ... + dₛ u[n-s]

matrix representation:
⎰ x⃗[n+1] = A x⃗[n] + B u⃗[n]
⎱ y⃗[n]   = C x⃗[n] + D u⃗[n]

state-space model

訊號學家自創一個詞彙state-space model。
嚴格來說是三件事情,但是整包稱作state-space model:
一、系統追加內部狀態(internal state)。
二、多項式推廣為矩陣(polynomial -> matrix)。
  多項式可以視作矩陣的特例。
三、多項式等價地改寫成矩陣(matrix representation)。
  藉由companion matrix。

state原義是指特定時刻,各個變數的數值,所組成的數組。
state space原義是指所有時刻,全部的數組。
訊號學家沒有考慮清楚,胡亂用詞。
上述三件事情與state space完全無關。
成為歷史共業。

state transition / state estimation

狀態變遷:內部狀態從x[n]變成x[n+1]。藉由公式x[n+1] = A x[n]。
狀態估計:已知輸入訊號u、輸出訊號y,找到內部狀態x。

system with activation function

請見本站文件「neural network」。

ReLU

branch,或者說是if,從二元邏輯推廣成連續函數。
因為branch不是線性函數,所以不會形成線性系統。

fuzzy logic

把布林數的AND和OR運算,變成函數的min和max運算。
Karnik–Mendel algorithm

system with stochastic transition

請見本站文件「hidden Markov model」。

stochastic transition

隨機變遷:函數的每個對應,推廣成隨機變數。
此處針對系統。
function:

       ⎧ y₀ , if x = x₀         f(x)
f(x) = ⎨ y₁ , if x = x₁           ↑   ╷
       ⎪ y₂ , if x = x₂           │ ╷│││╷
       ⎩    :                     └┴┴┴┴┴┴┴─→x

stochastic transition:

         ⎡ P₀₀ P₀₁ P₀₂ ... ⎤    P(y|x)
P(y|x) = ⎢ P₁₀ P₁₁ P₁₂ ... ⎥      ↑ y  請自己畫上棒棒
         ⎢ P₂₀ P₂₁ P₂₂ ... ⎥      │╱
         ⎣  :   :   :      ⎦      └────────→x

where Pᵢⱼ = P(y = yⱼ | x = xᵢ)

transition matrix / transition function

變遷矩陣:隨機變遷表示成矩陣。訊號的數字是整數。
變遷函數:隨機變遷表示成二元函數。訊號的數字是整數、實數。
方便起見,上述範例採用整數。

stochastic matrix / doubly stochastic matrix

stochastic matrix:

(1) 0 ≤ Pᵢⱼ ≤ 1  for all i and j

(2) P₀₀ + P₀₁ + P₀₂ + ... = 1

    P₁₀ + P₁₁ + P₁₂ + ... = 1

    P₂₀ + P₂₁ + P₂₂ + ... = 1

           :

doubly stochastic matrix:

(3) P₀₀   P₀₁   P₀₂
     +     +     +
    P₁₀   P₁₁   P₁₂ ...
     +     +     +
    P₂₀   P₂₁   P₂₂
     +     +     +
     :     :     :
     ‖     ‖     ‖
     1     1     1
變遷矩陣細分為兩種。
隨機矩陣:一、每個元素皆介於0到1。
       (畢竟是機率。)
     二、各個橫條總和皆為1。
       (一個輸入數值,其對應輸出的機率總和為1。)
雙隨機矩陣:三、各個直條總和也皆為1。
        (輸出數值亦然。)

大家習慣採用雙隨機矩陣。
優點:數學性質較強。例如特徵值絕對值均小於等於1。
優點:反函數是轉置矩陣。
優點:矩陣求解的鬆弛法會收斂。

state transition

state-space model與probabilistic system互相對應。
表面上可以視作非隨機矩陣推廣成隨機矩陣。
私底下則不能一概而論。
state-space model的狀態不是原義。
probabilistic system的狀態是原義。
system model      | architecture
---------------------------------------------
AR model          | AR model
???               | AR model --> MA model
state-space model | ARMA model --> MAMA model
system model      | with stochastic transition
----------------------------------------------------
AR model          | Markov chain
???               | hidden Markov model
state-space model | input–output hidden Markov model
AR model:

x⃗[n+1] = A x⃗[n]

???:

⎰ x⃗[n+1] = A x⃗[n]
⎱ y⃗[n]   = C x⃗[n]

state-space model:

⎰ x⃗[n+1] = A x⃗[n] + B u⃗[n]
⎱ y⃗[n]   = C x⃗[n] + D u⃗[n]

u: input signal
y: output signal
x: internal state
Markov chain:

P(q[t] = j) = sum P(q[t] = j | q[t-1] = i) P(q[t-1] = i)
               i

hidden Markov model:

⎧ P(q[t] = j) = sum P(q[t] = j | q[t-1] = i) P(q[t-1] = i)
⎨                i
⎪ P(o[t] = k) = sum P(o[t] = k | q[t] = j) P(q[t] = j)
⎩                j

input–output hidden Markov model:

https://proceedings.neurips.cc/paper/1994/file/8065d07da4a77621450aa84fee5656d9-Paper.pdf

q: hidden state (latent variable)
o: output signal (observable variable)
Markov chain = discrete-time system
Markov process = continuous-time system

state estimation

state-space model: Kálmán filter
hidden Markov model: Bayes filter

system with stochastic process

請見本站文件「noise」。

stochastic process

隨機過程:數列的每個數字,推廣成隨機變數。
此處針對訊號。
sequence:

x = (x[0], x[1], ...)

stochastic process:

    ⎛ P(x[0])            P(x[1])                 ⎞
X = ⎜    ↑                  ↑                    ⎟
    ⎜    │ ╷╷││╷╷           │ ╷╷││╷╷         ... ⎟
    ⎝    └┴┴┴┴┴┴┴┴→x[0] ,   └┴┴┴┴┴┴┴┴→x[1] ,     ⎠
訊號的數值,從固定的改成浮動的。
一個數值從固定數字改成浮動數字(隨機變數)。
一道訊號從固定數列改成浮動數列(隨機過程)。

stochastic system

stochastic system:
   all signals are stochastic processes
=> all signals are sequences with noise

                               noise       noise
                               X-E[X]      Y-E[Y]
                                 │           │
       ┌───┐            signal   ↓+  ┌───┐   ↓+  signal
X ────→│ f │────→ Y  =   E[X] ──→⊕──→│ f │──→⊕──→ E[Y]
       └───┘                    +    └───┘  +

noise

浮動數字擁有指標。大家習慣只看平均數和變異數。
浮動數列則是有平均數數列和變異數數列。
大家習慣抽取平均數們,成為固定數字,當作訊號。
剩餘的數值們,仍是浮動數字,其平均數們全是零,當作雜訊。

disturbance

noise: affect signal
disturbance: affect system
LTI state-space system:
⎰ x⃗[n+1] = A x⃗[n] + B u⃗[n]
⎱ y⃗[n]   = C x⃗[n] + D u⃗[n]

noise:
⎰ (x⃗[n+1] + nx⃗[n+1]) = A (x⃗[n] + nx⃗[n]) + B (u⃗[n] + nu⃗[n])
⎱ (y⃗[n]   + ny⃗[n]  ) = C (x⃗[n] + nx⃗[n]) + D (u⃗[n] + nu⃗[n])

disturbance:
⎰ x⃗[n+1] = A x⃗[n] + B u⃗[n] + w⃗[n]
⎱ y⃗[n]   = C x⃗[n] + D u⃗[n] + v⃗[n]
一、訊號追加雜訊:
每道訊號都要追加雜訊,
然後一律挪到等號右側,疊加成一道雜訊。
如此一來,雜訊隨時刻而變。導致無法計算。

二、系統追加擾動:
改弦易轍,只有x[n+1]和y[n]追加雜訊,
然後一律挪到等號右側,形成一道雜訊。
如此一來,雜訊不隨時刻而變。得以計算。

system analysis

system analysis

「系統分析」。工程師觀察現實世界現象,視作系統。藉由輸入訊號、輸出訊號,判斷系統模型、系統參數。

以下章節只針對線性非時變系統。

system analysis — convolution kernel

引言

訊號學家自創一個詞彙impulse response。
我認為這個詞彙不太妥當。因為這個詞彙有兩種意義。
原義:輸入訊號是脈衝函數,所得到的輸出訊號。
引申義:系統從遞迴函數改寫成卷積,所對應的離散數列/連續函數。
    (只適用LTI system。)
本章所談的是引申義。
後面章節會區分原義和引申義,而且會有兩者同時登場的情況。

我認為應該另造一個詞彙。
方便起見,下文稱作卷積核convolution kernel。
這個詞彙不是我自己亂編的。
https://www.dspguide.com/ch6/2.htm
https://books.google.com.tw/books?id=78TgCwAAQBAJ&pg=SA4-PA57

convolution

convolution (denoted by sequence):

  a ∗ b = c

convolution (denoted by numbers):

  a[0]b[0] = c[0]
  a[0]b[1] + a[1]b[0] = c[1]
  a[0]b[2] + a[1]b[1] + a[2]b[0] = c[2]
      :
  a[0]b[n] + a[1]b[n-1] + a[2]b[n-2] + ... + a[n]b[0] = c[n]

convolution = shift and dot product:

  (a[0], ..., a[n]) ∙ (b[0],   0 ,   0 , ...       ) = c[0]
  (a[0], ..., a[n]) ∙ (b[1], b[0],   0 , ...       ) = c[1]
  (a[0], ..., a[n]) ∙ (b[2], b[1], b[0], ...       ) = c[2]
          :                          :                  :
  (a[0], ..., a[n]) ∙ (b[n], ... , b[2], b[1], b[0]) = c[n]

convolution kernel

MA model

MA model:

  a₀ x[n] + a₁ x[n-1] + ... + aₖ x[n-k] = y[n]

convolution:

  x ∗ a = y

convolution kernel:

  a = (a₀, a₁, ..., aₖ)
linear recurrence representation
線性遞迴函數表示法:系統視作權重。

y[n] = a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ... + aₖ x[n-k]

convolution representation
卷積表示法:系統視作移動視窗。
輸入訊號超出頭端,必須視作0。
輸出訊號超出尾端,必須視作未定義。

(x[0], ..., x[n]) ∙ (a₀,  0,  0, ...       ) = y[0]
(x[0], ..., x[n]) ∙ (a₁, a₀,  0, ...       ) = y[1]
(x[0], ..., x[n]) ∙ (a₂, a₁, a₀, ...       ) = y[2]
        :                      :                 :
(x[0], ..., x[n]) ∙ (      ... , a₂, a₁, a₀) = y[n]
(x[0], ..., x[n]) ∙ (      ... , a₃, a₂, a₁) = NaN
        :                        :              :
(x[0], ..., x[n]) ∙ (      ... ,  0,  0, aₖ) = NaN

         x        ∗            a             = y
數學式子可以寫成a ∗ x = y,也可以寫成x ∗ a = y。卷積交換律。
原理是頭尾顛倒計算,總和一樣。

ARMA model

進階的系統模型,也可以改寫成卷積,求得卷積核。
然而過程更加複雜。請見solution章節。

system analysis — transfer function

引言

訊號學家自創一個詞彙transfer function。
我認為這個詞彙不太妥當。因為這個詞彙沒有切中核心。
不過以下還是沿用這個名詞。

藉由生成函數,convolution kernel變成transfer function。
藉由乘法卷積對偶,定義transfer function等於𝓩(y) / 𝓩(x)。

z-transform

generating function / z-transform

┌────────────┐  𝓩  ┌────────────┐
│  sequence  │────→│ polynomial │
└────────────┘     └────────────┘
z-transform (denoted by sequence):

  𝓩{x} = X(z)
         ^^^^
         polynomial function of z
         its name is uppercase X

z-transform (denoted by numbers):

  𝓩{(x[0], x[1], x[2], ...)} = x[0]z⁰ + x[1]z⁻¹ + x[2]z⁻² + ...
property:

(1) 𝓩{x +⃡ k} = zᵏ 𝓩{x}           translation invariance
(2) 𝓩{x₁ + x₂} = 𝓩{x₁} + 𝓩{x₂}   additivity
(3) 𝓩{k x} = k 𝓩{x}              homogeneity of degree 1

property (in style of textbook) (I don't recommend this):

    𝓩{x[n]} = X(z)
(1) 𝓩{x[n + k]} = zᵏ X(z)              translation invariance
(2) 𝓩{x₁[n] + x₂[n]} = X₁(z) + X₂(z)   additivity
(3) 𝓩{k x[n]} = k X(z)                 homogeneity of degree 1
mathematics                       │ signal processing
───────────────────────────────────────────────────────────────
sequence                aₙ        │ signal             x
formal variable         x         │ frequency variable z
generating function     𝓖(aₙ)     │ z-transform        𝓩{x}
characteristic equation 𝓖(aₙ) = 0 │                    𝓩{x} = 0
roots                   x₁,x₂,⋯   │ poles/zeros        𝑧₀,𝑧₁,⋯

(let x = z⁻¹)
                      中譯    意譯
transform (verb)      變換/轉換 轉換的行為(函數)
transform (noun)      變換/轉換 轉換的結果(輸出)
transformation (noun) 變換/轉換 轉換的行為(函數)

類似詞彙:
inverse / inverse / inversion
estimate / estimate / estimation
count / count / counting
sort / sort / sorting

transformation從動詞變成名詞。
動詞transform加上字尾-ation變成名詞。
一件行為,加上字尾,視作名詞,稱作action noun。

z-transform是指轉換的結果。
至於轉換的行為,訊號學家沒有特地取名。

generating function是指轉換的結果。
generating function transformation是指轉換的行為。

linear transform是指轉換的結果。習慣連帶討論加性與倍性。
linear transformation是指轉換的行為。經常改寫成矩陣。
geometric transformation是指轉換的行為。平移、縮放、旋轉。
舉了一些例子,現在各位應該能夠區分差異了。

convolution–multiplication duality (convolution theorem)

┌────────────┐  𝓩  ┌────────────┐
│  sequence  │────→│ polynomial │
└────────────┘     └────────────┘
       ∗                  ×
┌────────────┐  𝓩  ┌────────────┐
│  sequence  │────→│ polynomial │
└────────────┘     └────────────┘
       ‖                  ‖
┌────────────┐  𝓩  ┌────────────┐
│  sequence  │────→│ polynomial │
└────────────┘     └────────────┘
convolution theorem:

  𝓩{a∗b} = 𝓩{a} 𝓩{b}

convolution:

  (a∗b)[n] = a[0]b[n] + a[1]b[n-1] + a[2]b[n-2] + ...

number -> sequence:

  a∗b = a[0] b + a[1] (b -⃡ 1) + a[2] (b -⃡ 2) + ...

z-transform:

  𝓩{a∗b}
= 𝓩{a[0] b + a[1] (b -⃡ 1) + a[2] (b -⃡ 2) + ...}
= a[0] 𝓩{b} + a[1] 𝓩{b -⃡ 1} + a[2] 𝓩{b -⃡ 2} + ...
= a[0] 𝓩{b} + a[1] z⁻¹ 𝓩{b} + a[2] z⁻² 𝓩{b} + ...
= (a[0] + a[1] z⁻¹ + a[2] z⁻² + ...) 𝓩{b}
= 𝓩{a} 𝓩{b}
只有數列可以有z-transform。
因此將數字改成數列。
從計算學的角度來看,數字改成數列,宛如平行計算。

數學家和訊號學家不區分數字和數列,一律標記成x[n]。
閱讀教科書的數學式子,你得靠自己區分。

另外必須假設:
訊號超過頭端(負索引值),必須視做0。
訊號往左移位可以超過頭端(負索引值)。
原理請見本站文件「transformation」。
線性代數的相似變換、傅立葉轉換的乘法卷積對偶,都是此原理。

transfer function

z-transform / transfer function / zero / pole

  time domain         z-domain
┌────────────┐  𝓩  ┌────────────┐
│   input    │────→│ generating │
│   signal   │     │  function  │
└────────────┘     └────────────┘
       ∗                  ×
┌────────────┐  𝓩  ┌────────────┐
│ convolution│────→│  transfer  │
│   kernel   │     │  function  │
└────────────┘     └────────────┘
       ‖                  ‖
┌────────────┐  𝓩  ┌────────────┐
│   output   │────→│ generating │
│   signal   │     │  function  │
└────────────┘     └────────────┘
順向通過系統:時域sequence convolution=z域polynomial multiplication。
反向通過系統:時域sequence deconvolution=z域polynomial division。
input signal:      x
output signal:     y
z-transform:       𝓩{x} and 𝓩{y}
transfer function: 𝓩{y} / 𝓩{x}
zeros:             roots(𝓩{y}) = {z : 𝓩{y} = 0}
poles:             roots(𝓩{x}) = {z : 𝓩{x} = 0}
z-transform:數列=>多項式
convolution theorem:數列加權總和=>多項式乘法
transfer function:輸出訊號作為分子多項式,輸入訊號作為分母多項式。
zero:分子多項式的根(多項式變成0)。
pole:分母多項式的根(多項式變成±∞)。
大家用示波器看zero pole,然後反向推理系統是什麼。

MA model

MA model:

  a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ... = y[n]

z-transform:

  𝓩{a} 𝓩{x} = 𝓩{y}

transfer function:

  𝓩{y}
  ———— = 𝓩{a}
  𝓩{x}

zero / pole:

  zeros ≜ roots(𝓩{y}) = roots(𝓩{a})
  poles ≜ roots(𝓩{x}) = ∅

AR model

AR model:

  b₀ y[n] + b₁ y[n-1] + b₂ y[n-2] + ... = 0

z-transform:

  𝓩{b} 𝓩{y} = 0

transfer function:

  𝓩{y}
  ———— = undefined
  𝓩{x}

zero / pole:

  zeros ≜ roots(𝓩{y}) = undefined
  poles ≜ roots(𝓩{x}) = undefined

ARMA model

ARMA model:

    a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ...
  = b₀ y[n] + b₁ y[n-1] + b₂ y[n-2] + ...

z-transform:

  𝓩{a} 𝓩{x} = 𝓩{b} 𝓩{y}

transfer function:

  𝓩{y}   𝓩{a}
  ———— = ————
  𝓩{x}   𝓩{b}

zero / pole:

  zeros ≜ roots(𝓩{y}) = roots(𝓩{a})
  poles ≜ roots(𝓩{x}) = roots(𝓩{b})
MA model = all-zero system
AR model = all-pole system

延伸閱讀:shift operator

shift operator

時域數列位移k,導致頻域多項式乘上zᵏ。
數學家稱作translation invariance。
𝓩{x +⃡ k} = zᵏ 𝓩{x}

訊號學家直接在時域定義一個新的運算。
訊號學家稱作shift operator。有人寫成L,有人寫成q。
x +⃡ 1 = L x

教科書慣用的表示法,不區分數字與數列。
x[n+1] = L x[n]

shift operator有一個嚴重的問題。
由於省略了生成函數這個步驟,導致數學式子無法區分時域與頻域。
舉例來說,卷積、轉移函數,通通改用shift operator。

convolution:

  (a∗x)[n] = a[0]x[n] + a[1]x[n-1] + a[2]x[n-2] + ...
           = a[0]x[n] + a[1] L⁻¹ x[n] + a[2] L⁻² x[n] + ...
           = (a[0] + a[1] L⁻¹ + a[2] L⁻² + ...) x[n]
           = A(L) x[n]

transfer function of ARMA model:

    a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ...
  = b₀ y[n] + b₁ y[n-1] + b₂ y[n-2] + ...

  => A(L) x[n] = B(L) y[n]
  => y[n] = (A(L) / B(L)) x[n]
  => y[n] = G(L) x[n]             let G = A/B

有些人,刻意省略括號,把G(L)改寫成G。
有些人,把G(L)改寫成G(z)、G(s)、G(ω)、G(e)。
不少人這樣做,甚至是那些赫赫有名的教科書。

   y[n] = G x[n]      something like matrix computation
   y[n] = G(s) x[n]   merging frequency and time series

因此在訊號學當中,非常不適合使用shift operator。
訊號學的基調就是時域頻域互動。大家隨時都得區分時域頻域。
尤其是演算法,系統識別/系統實現演算法基本上分成時域頻域兩大類型。
所以說喔,以shift operator處理transfer function,根本是在亂搞。
當你遇到教科書使用shift operator,你得自己小心區分時域頻域。
本文不使用shift operator。

x[n]無法區分數字與數列。
L無法區分時域與頻域。
曾經有人聲稱control theory is dead。
我認為其中一個原因,正是源自這種浪漫的數學符號。
事情講不清楚,哪可能進一步研究發展。當然就會dead。
shift operator罪該萬死、死有餘辜。
然而,這種事情是因地制宜。
繪製system diagram、設計電子電路,那麼shift operator有巨大優勢。
A(L)是多項式。加法是並聯,乘法是串聯,L是串聯一個延遲元件。
全程都在時域完成。完全不需要涉及頻域。

實作演算法,有兩種方式:程式語言、電子電路。
如果是程式語言,那麼千萬別用shift operator。
如果是電子電路,那麼shift operator非常好用。

Laplace transform

exponential generating function / Laplace transform

┌────────────┐  𝓛  ┌────────────┐
│  sequence  │────→│ polynomial │
└────────────┘     └────────────┘
Laplace transform (denoted by sequence):

  𝓛{x} = X(s)
         ^^^^
         polynomial function of s
         its name is uppercase X

Laplace transform (denoted by numbers):

                                   s⁰       s⁻¹       s⁻²
  𝓛{(x[0], x[1], x[2], ...)} = x[0]—— + x[1]——— + x[2]——— + ...
                                   0!        1!        2!
property (nothing changed):

(1) 𝓛{x +⃡ k} = sᵏ 𝓛{x}           translation invariance
(2) 𝓛{x₁ + x₂} = 𝓛{x₁} + 𝓛{x₂}   additivity
(3) 𝓛{k x} = k 𝓛{x}              homogeneity of degree 1

differential operator

採用拉普拉斯轉換,原因不是連續函數,原因是微分運算。

linear constant-coefficient difference equation
有三種運算:位移、倍率、加法。
z轉換足矣。拉普拉斯轉換亦可,然而殺雞焉用牛刀。

linear constant-coefficient differential equation
有四種運算:追加微分。
z轉換無法處理微分。必須換成拉普拉斯轉換。

思路如下:
微分運算的不動點是exp(x)。
exp(x)的泰勒級數,第n項的係數是1/n!。
生成函數每一項必須額外乘上1/n!,形成「指數生成函數」。
如此一來,即便遇到微分,生成函數也不需要重新計算各項係數。
https://math.stackexchange.com/questions/105800/

discrete Laplace transform / continuous Laplace transform

z-transform:

┌────────────┐  𝓩  ┌────────────┐
│  sequence  │────→│ polynomial │
└────────────┘     └────────────┘

discrete Laplace transform:

┌────────────┐  𝓛  ┌────────────┐
│  sequence  │────→│ polynomial │
└────────────┘     └────────────┘

continuous Laplace transform:

┌────────────┐  𝓛  ┌────────────┐
│  function  │────→│  integral  │
│            │     │  transform │
└────────────┘     └────────────┘
z-transform:

              ⎧          ⎫
  𝓩{x} = sum  ⎨ x[n] z⁻ⁿ ⎬
        n=0⋯∞ ⎩          ⎭

discrete Laplace transform:

              ⎧      s⁻ⁿ ⎫
  𝓛{x} = sum  ⎨ x[n] ——— ⎬
        n=0⋯∞ ⎩       n! ⎭

continuous Laplace transform:

         ⌠∞ ⎧               ⎫
  𝓛{x} = ⎮  ⎨ x(t) exp(-st) ⎬ dt
         ⌡0 ⎩               ⎭
線性常係數差分方程式是離散訊號、線性常係數微分方程式是連續訊號。
針對微分運算,必須使用拉普拉斯轉換。
針對連續訊號,拉普拉斯轉換必須推廣成連續版本。
大家提到拉普拉斯轉換,心照不宣是指連續版本。

很多人將拉普拉斯轉換解讀成z轉換的連續版本,但是這種解讀不太對。
拉普拉斯轉換其實也有離散版本、應當先講離散版本。
嚴格來說,z轉換是普通生成函數,拉普拉斯轉換是指數生成函數。性質截然不同。

錯誤的解讀方式:
一、z轉換和拉普拉斯轉換兩者對比,宛如離散和連續兩者對比。

正確的解讀方式:
一、z轉換(普通生成函數)。無法推廣為連續版本。
二、z轉換的重要變種是拉普拉斯轉換(指數生成函數)。可以推廣成連續版本。
三、z轉換與拉普拉斯轉換的重要特例是傅立葉轉換。可以推廣為連續版本。
四、推廣為連續版本,前提是積分結果受限(不會是正負無限大)。
五、離散z轉換可以改寫成連續拉普拉斯轉換,稱作bilinear transform。

table

經典函數的z轉換、拉普拉斯轉換,
古聖先賢已經推導出答案、整理成表格。
我們直接查表即可。

網頁、書籍,已經有很多現成表格。
自己挑個喜歡的來看。我就不提供了。
z-transform table
https://www.google.com/search?q=z-transform+table&udm=2

Laplace transform table
https://www.google.com/search?q=Laplace+transform+table&udm=2

bilinear transform

訊號學家自創一個詞彙bilinear transform。
訊號學的bilinear transform,
線性代數的bilinear transform,
兩者完全無關。

因為電腦無法計算線性常係數微分方程式,所以只好轉換成線性常係數差分方程式。
利用線性常係數差分方程式的計算結果,間接求得線性常係數微分方程式的計算結果。
此時需要使用bilinear transform。
好長。
mapping from z-domain to s-domain
https://www.youtube.com/watch?v=acQecd6dmxw
https://www.google.com/search?q=mapping+from+s-domain+z-domain+transfer+function&udm=2
z-transform形成z-domain 
Laplace transform形成s-domain。

system analysis — solution

引言

差分方程式/微分方程式,求解,找到其數學公式。

solution

convolution kernel

   time domain              z-domain
┌────────────────┐  𝓩  ┌────────────────┐
│ linear         │────→│ characteristic │
│ recurrence     │     │ equation       │
└────────────────┘     └────────────────┘
        │                      │
        │ shift and            │ divide zⁿ at
        │ dot product          │ both sides
        ↓                      ↓
┌────────────────┐  𝓩  ┌────────────────┐
│ convolution    │────→│ characteristic │
│ kernel         │     │ equation       │
└────────────────┘     └────────────────┘
先前提到MA model可以輕鬆得到卷積核。
現在額外引入z-transform,形成上圖。

進階的系統模型,也可以改寫成卷積,求得卷積核。
方法是藉由z-transform。

explicit formula / closed-form solution

遞迴公式的解,其數學公式習慣稱作explicit formula。
方程式的解,其數學公式習慣稱作closed-form solution。
總之就是solution。中譯公式解。

implict form / explicit form

隱式:方程式,等號兩側都有未知數。
顯式:方程式,僅等號右側有未知數。
方程式求解,本質就是隱式變成顯式。
system:
implicit form L(x,y) = 0
explicit form y = f(x)

linear constant-coefficient difference equation:
implicit form L(x,x-⃡1,x-⃡2,...,y,y-⃡1,y-⃡2,...) = 0
explicit form y[n] = ...

linear constant-coefficient differential equation:
implicit form L(x,x′,x″,...,y,y′,y″,...) = 0
explicit form y(t) = ...

linear constant-coefficient difference equation

solution

   time domain            z-domain
┌───────────────┐  𝓩  ┌───────────────┐
│ implicit form │━━━━🢂│ implicit form │
└───────────────┘     └───────────────┘
        │                     ┃
        │ find                ┃ 1 & 2
        │ solution            ┃
        ↓                     🢃
┌───────────────┐  𝓩⁻¹┌───────────────┐
│ explicit form │🡸━━━━│ explicit form │
└───────────────┘     └───────────────┘

1. polynomial factorization
2. partial fraction expansion
linear constant-coefficient difference equation:
(with zero initial condition)

  a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ...
= b₀ y[n] + b₁ y[n-1] + b₂ y[n-2] + ...

  where x[0] = 0

z-transform (time domain -> z-domain):

  a₀ z⁰ X(z) + a₁ z⁻¹ X(z) + a₂ z⁻² X(z) + ...
= b₀ z⁰ Y(z) + b₁ z⁻¹ Y(z) + b₂ z⁻² Y(z) + ...

  (a₀ z⁰ + a₁ z⁻¹ + a₂ z⁻² + ...) X(z)
= (b₀ z⁰ + b₁ z⁻¹ + b₂ z⁻² + ...) Y(z)

transfer function:

       Y(z)   a₀ z⁰ + a₁ z⁻¹ + a₂ z⁻² + ...
F(z) = ———— = —————————————————————————————
       X(z)   b₀ z⁰ + b₁ z⁻¹ + b₂ z⁻² + ...

polynomial factorization:

       Y(z)   (z-𝑧₀)(z-𝑧₁)(z-𝑧₂)...
F(z) = ———— = —————————————————————
       X(z)   (z-𝑝₀)(z-𝑝₁)(z-𝑝₂)...

partial fraction expansion (when all poles are distinct):

        C₀     C₁     C₂
F(z) = ———— + ———— + ———— + ...
       z-𝑝₀   z-𝑝₁   z-𝑝₂

where C₀ = ... , C₁ = ... , C₂ = ...

inverse z-transform (z-domain -> time domain):

f[n] = C₀ 𝑝₀ⁿ + C₁ 𝑝₁ⁿ + C₂ 𝑝₂ⁿ + ...
線性常係數差分方程式求解(隱式改成顯式,並且找到公式),
計算過程其實就是對偶變換和對偶運算,繞一圈回來。
一、最初是線性常係數差分方程式。
二、改寫成transfer function(時域轉頻域)。形成多項式分式。
三、改寫成因式分解。分母的根pole、分子的根zero。
四、改寫成部分分式。形成分式連加。
五、改寫成公式解(頻域轉時域)。形成power sum。
https://eng.libretexts.org/Bookshelves/Electrical_Engineering/Signal_Processing_and_Modeling/Signals_and_Systems_(Baraniuk_et_al.)/04%3A_Time_Domain_Analysis_of_Discrete_Time_Systems/4.08%3A_Solving_Linear_Constant_Coefficient_Difference_Equations
上述公式只討論其中一種情況:不重複實根。
總共三種情況:不重複實根、重複實根、共軛複根。
公式解略有不同。
詳情請見講義:
https://control.asu.edu/Classes/MAE318/318Lecture07.pdf

linear constant-coefficient differential equation

solution

   time domain            s-domain
┌───────────────┐  𝓛  ┌───────────────┐
│ implicit form │━━━━🢂│ implicit form │
└───────────────┘     └───────────────┘
        │                     ┃
        │ find                ┃ 1 & 2
        │ solution            ┃
        ↓                     🢃
┌───────────────┐  𝓛⁻¹┌───────────────┐
│ explicit form │🡸━━━━│ explicit form │
└───────────────┘     └───────────────┘

1. polynomial factorization
2. partial fraction expansion
linear constant-coefficient differential equation:
(with zero initial condition)

  a₀ x(t) + a₁ x′(t) + a₂ x″(t) + ...
= b₀ y(t) + b₁ y′(t) + b₂ y″(t) + ...

  where x(0) = x′(0) = x″(0) = ... = 0

Laplace transform (time domain -> s-domain):

  a₀ s⁰ X(s) + a₁ s¹ X(s) + a₂ s² X(s) + ...
= b₀ s⁰ Y(s) + b₁ s¹ Y(s) + b₂ s² Y(s) + ...

  (a₀ s⁰ + a₁ s¹ + a₂ s² + ...) X(s)
= (b₀ s⁰ + b₁ s¹ + b₂ s² + ...) Y(s)

transfer function:

       Y(s)   a₀ s⁰ + a₁ s¹ + a₂ s² + ...
F(s) = ———— = ———————————————————————————
       X(s)   b₀ s⁰ + b₁ s¹ + b₂ s² + ...

polynomial factorization:

       Y(s)   (s-𝑧₀)(s-𝑧₁)(s-𝑧₂)...
F(s) = ———— = —————————————————————
       X(s)   (s-𝑝₀)(s-𝑝₁)(s-𝑝₂)...

partial fraction expansion (when all poles are distinct):

        C₀     C₁     C₂
F(s) = ———— + ———— + ———— + ...
       s-𝑝₀   s-𝑝₁   s-𝑝₂

where C₀ = ... , C₁ = ... , C₂ = ...

inverse Laplace transform (s-domain -> time domain):

          C₀          C₁          C₂
f(t) = ————————— + ————————— + ————————— + ...
       exp(-𝑝₀t)   exp(-𝑝₁t)   exp(-𝑝₂t)

     = C₀ exp(𝑝₀t) + C₁ exp(𝑝₁t) + C₂ exp(𝑝₂t) + ...
https://tutorial.math.lamar.edu/classes/de/IVPWithLaplace.aspx
https://lpsa.swarthmore.edu/LaplaceXform/InvLaplace/InvLaplaceXformPFE.html

system analysis — stability

引言

藉由解的數學公式,判斷穩定性。

滿足穩定性,才能形成穩態,才能控制。
不滿足穩定性,輸出可能正負無限大。
導致電路過載燒掉、動力機械暴衝、反應槽爆炸。

stability

BIBO stability

輸入收限輸出受限穩定性:
當輸入訊號受限(不會出現正負無限大),則輸出訊號也受限。

換句話說:
卷積核絕對值總和受限。卷積核L¹-norm受限。
‖x‖ = max(x[0], x[1], ..., x[n])         L-norm
‖f‖₁ = |f[0]| + |f[1]| + ... + |f[n]|     L¹-norm
bounded input signal:

    |x[n]| < ∞ for all n≥0
<=> ‖x‖ < ∞

bounded output singal:

    |y[n]| < ∞ for all n≥0
<=> ‖f‖₁ ‖x‖ < ∞

(⟹)

|y[n]| = |(f ∗ x)[n]|
       = |f[0]x[n] + f[1]x[n-1] + ...|
       ≤ |f[0]||x[n]| + |f[1]||x[n-1]| + ...
       ≤ |f[0]|‖x‖ + |f[1]|‖x‖ + ...
       = (|f[0]| + |f[1]| + ...) ‖x‖
       = ‖f‖₁ ‖x‖

(⟸)

let x = (‖x‖, ‖x‖, ...)
    y = (‖y‖, ‖y‖, ...)
    f₁ = (|f[0]|, |f[1]|, ...)

(f₁ ∗ x)[n] ≥ y[n] ≥ y[n]

BIBO stability:

    if |x[n]| < ∞ then |y[n]| < ∞      for all n≥0
<=> if ‖x‖ < ∞ then ‖f‖₁ ‖x‖ < ∞     for all n≥0
<=> ‖f‖₁ < ∞                           for all n≥0
https://en.wikipedia.org/wiki/BIBO_stability

internal stability

內部穩定性:
系統互相結合,形成大型系統。每道訊號都受限。

換句話說:
兩兩結合、三三結合、四四結合、……,通通都是BIBO stability。
https://electronics.stackexchange.com/questions/114893/

linear constant-coefficient difference equation

BIBO stability

explicit formula:

f[n] = C₀ 𝑝₀ⁿ + C₁ 𝑝₁ⁿ + C₂ 𝑝₂ⁿ + ...

BIBO stability (and steady state is zero):

    if |x[n]| < ∞ then |y[n]| < ∞    for all n≥0
<=> if ‖x‖ < ∞ then ‖f‖₁ ‖x‖ < ∞   for all n≥0
<=> ‖f‖₁ < ∞                         for all n≥0
<=> |Cᵢ pᵢⁿ| < ∞                     for all n≥0 and i≥0
<=> |pᵢⁿ| < ∞                        for all n≥0 and i≥0
<=> |pᵢ| < 1                         for all i≥0
stability criterion:
線性常係數差分方程式的情況下:所有pole都在複平面單位圓內或上。
訊號學家還希望收斂至零:所有pole都在複平面單位圓內。

stability test:
(1) 直覺的方法是使用多項式函數求根演算法,求得所有pole。
    經典演算法是companion matrix求特徵值,時間複雜度O(N³T)。
(2) 特殊的方法是使用特殊數學公式,檢查正負號。
    經典演算法是Jury's test,時間複雜度O(N²)。

linear constant-coefficient differential equation

BIBO stability

explicit formula:

f(t) = C₀ exp(𝑝₀t) + C₁ exp(𝑝₁t) + C₂ exp(𝑝₂t) + ...

BIBO stability (and steady state is zero):

    if |x(t)| < ∞ then |y(t)| < ∞    for all t≥0
<=> if ‖x‖ < ∞ then ‖f‖₁ ‖x‖ < ∞   for all n≥0
<=> ‖f‖₁ < ∞                         for all n≥0
<=> |Cᵢ exp(𝑝ᵢt)| < ∞                for all t≥0 and i≥0
<=> |exp(𝑝ᵢt)| < ∞                   for all t≥0 and i≥0
<=> Re{𝑝ᵢt} < 0                      for all t≥0 and i≥0
<=> Re{𝑝ᵢ} < 0                       for all i≥0
stability criterion:
線性常係數微分方程式的情況下:所有pole都在左半複平面。
訊號學家還希望收斂至零:所有pole都在左半複平面,但不含虛軸。

stability test:
(1) 直覺的方法是使用多項式函數求根演算法,求得所有pole。
    經典演算法是companion matrix求特徵值,時間複雜度O(N³T)。
(2) 特殊的方法是使用特殊數學公式,檢查正負號。
    經典演算法是Routh–Hurwitz test,又稱Routh array,時間複雜度O(N²)。

steady state

initial value / final value

初始值:訊號頭端數值。x[0]、y[0]。
終末值:訊號尾端數值。x[n]、y[n]。

initial condition

ARMA model:

y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
               + b₁ y[n-1] + ... + b₉ y[n-q]

initial condition of differential equation:

x[0]  = x₀
x[-1] = x₋₁ , ... , x[-p] = x₋ₚ
y[-1] = y₋₁ , ... , y[-q] = y₋₉

initial condition of system:

x[-1] = x₋₁ , ... , x[-p] = x₋ₚ
y[-1] = y₋₁ , ... , y[-q] = y₋₉

initial value of input signal:

x[0] = x₀
微分方程式的初始條件、系統的初始條件,
兩者稍微有點差別。

微分方程式的初始條件:
遞迴公式的初始值。其數量恰好足夠,得以讓遞迴公式運作。
一、輸入訊號、輸出訊號的負索引值數值。
二、輸入訊號的初始值。

系統的初始條件:
系統預設數值。其數量恰好足夠,得以讓系統運作。
使得輸入訊號的初始值得以代入系統、得到輸出訊號的初始值。
一、輸入訊號、輸出訊號的負索引值數值。

transient state / steady state

暫態:輸出訊號演變過程,轉瞬即逝。受到輸入訊號初始值影響。
穩態:輸出訊號演變結果,歷久不衰。輸出訊號最終值趨近常數函數。
線性非時變系統的性質:
一、初始條件影響暫態與穩態。
二、輸入訊號只會影響暫態、不會影響穩態。
三、一旦滿足穩定性,必定形成穩態。
  換句話說:一旦輸出訊號受限,其最終值必定趨近常數函數。
  簡單來說:受限則收斂。
四、承上,輸出訊號可以定義成暫態加穩態。
  暫態趨近零函數、穩態趨近常數函數。
  暫態是singular solution、穩態是particular solution。
五、藉由轉移函數,可以求得輸出訊號的初始值、終末值(穩態)。
  其數學公式稱作初始值定理、終末值定理。
MA model:
(1) system parameter: one amplification factor
(2) stability: all poles at origin
(3) convergence: converge to zero at infinity

ARMA model:
(1) system parameter: two amplification factor
(2) stability: minimum phase / non-minimum phase
(3) convergence: initial condition matters

linear constant-coefficient difference equation

initial value theorem:

lim y[n] = lim Y(z)
n→0        z→∞

final value theorem:

lim y[n] = lim (z-1) Y(z)
n→∞        z→0

linear constant-coefficient differential equation

initial value theorem:

lim y(t) = lim s Y(s)
t→0        s→∞

final value theorem:

lim y(t) = lim s Y(s)
t→∞        s→0
https://eng.libretexts.org/Bookshelves/Electrical_Engineering/Signal_Processing_and_Modeling/Introduction_to_Linear_Time-Invariant_Dynamic_Systems_for_Students_of_Engineering_(Hallauer)/08%3A_Pulse_Inputs_Dirac_Delta_Function_Impulse_Response_Initial_Value_Theorem_Convolution_Sum/8.06%3A_Derivation_of_the_Initial-Value_Theorem
https://eng.libretexts.org/Bookshelves/Electrical_Engineering/Signal_Processing_and_Modeling/Introduction_to_Linear_Time-Invariant_Dynamic_Systems_for_Students_of_Engineering_(Hallauer)/15%3A_Input-Error_Operations/15.03%3A_Derivation_of_the_Final-Value_Theorem

system diagram — system diagram

引言

LTI system串聯/並聯/前饋/回饋,整體視作一個系統,仍是LTI system。
非常棒的數學性質。
藉由時域convolution kernel,證明變得容易。
藉由頻域transfer function,公式變得漂亮。

system diagram

block diagram

series connection:            parallel connection:

                                       ┌────┐
                                   ┌──→│ f₁ │───┐
     ┌────┐   ┌────┐               │   └────┘   ↓+
x ──→│ f₁ │──→│ f₂ │──→ y     x ───┤            ⊕──→ y
     └────┘   └────┘               │   ┌────┐   ↑+
                                   └──→│ f₂ │───┘
                                       └────┘

feedforward connection:       feedback connection:

     ┌───────────┐
     │   ┌───┐   ↓-               +    ┌───┐
x ───┴──→│ f │──→⊕──→ y       x ──→⊕──→│ f │───┬──→ y
         └───┘  +                  ↑-  └───┘   │   
                                   └───────────┘
方塊圖沒有國際標準。
大家按照下述習慣來畫。

一、訊號:箭號。側邊填入訊號名稱(亦可不填),小寫字母,可省略括號。
二、系統:方框。內部填入卷積核/轉移函數名稱,小寫/大寫字母,可省略括號。
三、訊號分岔:圓點(亦可不畫)。
四、訊號匯合:圓框。內部填入加法符號+/加總符號∑。側邊填入正負號。
五、輸入訊號:箭號起點填入輸入訊號名稱。側邊即可不填。
六、輸出訊號:箭號終點填入輸出訊號名稱。側邊即可不填。

畫圖這種事情硬要用文字解釋,徒增痛苦。
我還真沒看過其他人用文字介紹方塊圖怎麼畫。
                    時域  頻域
input singal  輸入訊號  x[n]  X(z)
output singal 輸出訊號  y[n]  Y(z)
system        系統    f[n]  F(z)

signal-flow graph

Mason's rule
https://en.wikipedia.org/wiki/Mason's_gain_formula

LTI system

series connection:

   ┌───────┐   ┌───────┐           ┌────────────┐
──→│ F₁(z) │──→│ F₂(z) │──→  =  ──→│ F₁(z)F₂(z) │──→
   └───────┘   └───────┘           └────────────┘

parallel connection:

       ┌───────┐               ┌───────────────┐
───┬──→│ F₁(z) │──→⊕──→  =  ──→│ F₁(z) + F₂(z) │──→
   │   └───────┘   ↑+          └───────────────┘
   │   ┌───────┐   │
   └──→│ F₂(z) │───┘
       └───────┘

feedback connection:

                               ┌────────────────┐
 x   e ┌───────┐     y         │     F₁(z)      │
──→⊕──→│ F₁(z) │───┬──→  =  ──→│ —————————————— │──→
  -↑   └───────┘   │           │ 1 + F₁(z)F₂(z) │
   │   ┌───────┐   │           └────────────────┘
   └───│ F₂(z) │←──┘
       └───────┘

Y = F₁E = F₁(X-F₂Y) = F₁X - F₁F₂Y        skip (z)
X = (Y + F₁F₂y)/F₁ = Y(1 + F₁F₂)/F₁
Y/X = F₁/(1+F₁F₂)
4.
──→ F₁ ─┬─→ F ──→  =  ──→ F₁ ──→ F ─┬─→
──→ F₂ ─┘             ──→ F₂ ──→ F ─┘

5.
──→ F ──┬─→ F₁ ──→  =  ─┬─→ F ──→ F₁ ──→
        └─→ F₂ ──→      └─→ F ──→ F₂ ──→

6.
──┬─→ F₁ ──┬──→  =  ──→ 1/F₂ ──┬─→ F₂ ──→ F₁ ──┬──→ 
 -└── F₂ ←─┘                  -└───────←───────┘
當主角是函數。
串聯series:函數複合。
並聯parallel:函數相加。
回饋feedback:遞迴函數。

當主角是時域convolution kernel。
串聯series:卷積核卷積。
並聯parallel:卷積核相加。
回饋feedback:我曷知。

當主角是頻域transfer function。
串聯series:傳遞函數相乘。
並聯parallel:傳遞函數相加。
回饋feedback:傳遞函數連分數。

system analysis — system response

引言

給予特殊的輸入訊號,獲得特殊的輸出訊號。
種什麼因得什麼果。稱作系統響應。
觀察因果,進而找出卷積核、轉移函數的數值。

system response

symbol / numeral

            | symbol               | numeral
------------| ---------------------| ----------------------
convolution | solution             | (1) evaluation
kernel      |                      | (2) impulse response
------------| ---------------------| ----------------------
transfer    | division of two      | (1) evaluation
function    | generating functions | (2) frequency response
卷積核和轉移函數可以表示成符號(函數)或數值(函數值)。
一般來說,先求得符號、再求得數值。
脈衝響應、頻率響應則是可以直接求得數值。

系統求解:已知系統參數,找到卷積核、轉移函數的符號。
系統響應:不知系統參數,找到卷積核、轉移函數的數值。
脈衝響應:讓輸入訊號是脈衝函數,以便找到卷積核的數值。
頻率響應:讓輸入訊號是複弦波,以便找到轉移函數的數值。

線性非時變系統,擁有特殊數學性質。
即便我們完全不知道系統模型、系統參數,
我們還是可以利用脈衝響應、頻率響應,
直接得到卷積核、轉移函數的數值。

impulse response / frequency response

impulse response:輸入訊號是脈衝函數,所得到的輸出訊號。
frequency response:輸入訊號是複弦波,所得到的輸出訊號。
impulse response:

x[n]                            y[n] ╷
  ↑                 ┌─────┐       ↑ ╷││╷╷
  ╿────────→n  ────→│  f  │────→  ╿┴┴┴┴┴┴┴┴→n
  │                 └─────┘       │
impulse fuction                 convolution kernel

frequency response:

x[n]                            y[n]
  ↑ ╷╷              ┌─────┐       ↑╷││╷
  ├┴┴┴┴┬┬┬┬→n  ────→│  f  │────→  ├┴┴┴┴┬┬┬┬→n
  │     ╵╵          └─────┘       │    ╵││╵
complex sinusoid                complex sinusoid
impulse response:

given x = (1, 0, 0, 0, 0, ...)
then  f = y

impulse response (in style of textbook):

given x[n] = ⎰ 1 , if n = 0
             ⎱ 0 , if n > 0
then  f[n] = y[n]

frequency response:

given x[n] = exp(𝑖ωn)
then  y[n] = F(exp(𝑖ω)) exp(𝑖ωn)
           = |F(exp(𝑖ω))| exp(𝑖ωn + ∠F(exp(𝑖ω)))

identity of convolution / invariance of convolution

1. identity of convolution
   => convolution kernel = impulse response

2. invariance of convolution
   => eigenvector is power sequence (x⁰, x¹, x², ...)
      where x is arbitrary complex number
   => eigenvector can be complex sinusoid exp(𝑖ωn)
      let x = exp(𝑖ω) and ω is arbitrary real number
   => eigenvalue λ is amplification factor
      and frequency ω is invariant
   => ...... (skip over proof)
   =>   amplification factor λ from frequency response
      = function value F(exp(𝑖ω)) of transfer function
在代數領域,大家習慣討論。
一、零元素&恆等元素
二、不動點&不變量
此處討論卷積運算的恆等元素和不變量。
其數學性質有實際應用。

一、恆等元素:脈衝函數與任意函數的卷積,結果仍是相同函數。

實際應用:
針對LTI system,
當輸入訊號是脈衝函數,
那麼輸出訊號恰是卷積核。

二、不變量:對特定頻率特徵值

實際應用:
針對LTI system,
輸入訊號是複弦波,輸出訊號也會是複弦波。
處處放大因子(一個複數)皆相等。
放大因子是特徵值,恰好等於轉移函數的函數值。

換句話說:
輸入訊號是複弦波,輸出訊號也會是複弦波。
頻率不變,僅振幅和相位改變。
振幅縮放倍率和相位偏移差距,構成轉移函數。

impulse response

impulse response

為了方便理解脈衝響應,
此處提供系統模型與系統參數,仔細推導一遍。

MA model

MA(1) model:

x ─────┬────────────→⊕───→ y
       ↓            +↑
   ┌───────┐         │
   │ delay │         │
   └───────┘         │
       │     ┌────┐  │
       └────→│ ×a │──┘
             └────┘

y[n] = x[n] + a x[n-1]

impulse response:

f[0] = y[0] = x[0]          = 1
f[1] = y[1] = x[1] + a x[0] = a
f[2] = y[2] = x[2] + a x[1] = 0
f[3] = y[3] = x[3] + a x[2] = 0
  :      :         :          :

transfer function:

      ┌──────────┐
x ───→│ 1 + az⁻¹ │───→ y
      └──────────┘

F(z) = f[0] z⁰ + f[1] z⁻¹ + ... = 1 + az⁻¹

Y(z) = (1 + az⁻¹) X(z)

AR model

AR(1) model:

   ┌─────────────┬────→ y
   │             ↓
   │         ┌───────┐
   │         │ delay │
   │         └───────┘
   │  ┌────┐     │
   └──│ ×b │←────┘
      └────┘

y[n] = b y[n-1]

impulse response and transfer function are undefined.
since there is no input signal.

ARMA model

ARMA(1,1) model:

x ─────┬────────────→⊕─→⊕─────────────┬────→ y
       ↓            +↑ +↑             ↓
   ┌───────┐         │  │         ┌───────┐
   │ delay │         │  │         │ delay │
   └───────┘         │  │         └───────┘
       │     ┌────┐  │  │  ┌────┐     │
       └────→│ ×a │──┘  └──│ ×b │←────┘
             └────┘        └────┘
            MA                  AR

y[n] = b y[n-1] + x[n] + a x[n-1]

impulse response:

f[0] = y[0] = x[0]       = 1
f[1] = y[1] = b y[0] + a = b + a
f[2] = y[2] = b y[1]     = b¹ (b + a)
f[3] = y[3] = b y[2]     = b² (b + a)
  :      :        :           :
f[n] = y[n] = b y[n-1]   = bⁿ⁻¹ (b + a)

transfer function:

      ┌──────────┐
      │ 1 + az⁻¹ │
x ───→│ ———————— │───→ y
      │ 1 - bz⁻¹ │
      └──────────┘

F(z) = 1 + sum { bⁿ⁻¹ (b + a) z⁻ⁿ }
          n=1⋯∞

           (b + a)z⁻¹
     = 1 + ——————————
            1 - bz⁻¹

       1 + az⁻¹
     = ————————
       1 - bz⁻¹
ARMA(p,q) model:

x ───────┬────────────→⊕─→⊕─────────────┬──────→ y
     ┌───────┐        +↑ +↑         ┌───────┐
   ⎧ │ delay │         │  │         │ delay │ ⎫
   ⎪ └───────┘ ┌────┐  │  │  ┌────┐ └───────┘ ⎪
   ⎪     ├────→│ ×a │─→⊕  ⊕←─│ ×b │←────┤     ⎪
   ⎪ ┌───────┐ └────┘ +↑ +↑  └────┘ ┌───────┐ ⎪
   ⎪ │ delay │         │  │         │ delay │ ⎪
   ⎪ └───────┘ ┌────┐  │  │  ┌────┐ └───────┘ ⎪
 q ⎨     ├────→│ ×a │─→⊕  ⊕←─│ ×b │←────┤     ⎬ p
   ⎪     :     └────┘ +↑ +↑  └────┘     :     ⎪
   ⎪     :             │  │             :     ⎪
   ⎪     :             :  :             :     ⎪
   ⎪ ┌───────┐         :  :         ┌───────┐ ⎪
   ⎪ │ delay │         :  :         │ delay │ ⎪
   ⎪ └───────┘ ┌────┐  │  │  ┌────┐ └───────┘ ⎪
   ⎪     └────→│ ×a │──┘  ⊕←─│ ×b │←────┤     ⎪
   ⎩           └────┘    +↑  └────┘ ┌───────┐ ⎪
                          │         │ delay │ ⎪
                          │  ┌────┐ └───────┘ ⎪
                          └──│ ×b │←────┘     ⎪
                             └────┘           ⎭
              MA                  AR

y[n] = x[n] + a₁ x[n-1] + a₂ x[n-2] + ... + aₚ x[n-p]
            + b₁ y[n-1] + b₂ y[n-2] + ... + b₉ y[n-q]
統計學當中,
ARMA(p,q)硬性規定:
一、a₀ = 1。
二、y[n]和y[n-1]在等號異側。
 (導致b變號。導致轉移函數分母變成減號。)
自己小心。

frequency response

frequency response (in theory)

frequency response:

x[n]                            y[n]          gain |F(exp(𝑖ω))|
  ↑ ╷╷              ┌─────┐       ↑  ╷││╷    
  ├┴┴┴┴┬┬┬┬→n  ────→│  f  │────→  ├┬┬┴┴┴┴┬┬┬┬→n
  │     ╵╵          └─────┘       ││╵    ╵││╵
complex sinusoid                  ╶─→
                                  phase shift -∠F(exp(𝑖ω))
given x[n] = exp(𝑖ωn)
then  y[n] = |F(exp(𝑖ω))| exp(𝑖ωn + ∠F(exp(𝑖ω)))
輸入訊號是複弦波,輸出訊號也是複弦波,
頻率不變,僅振幅與相位改變。

輸入訊號是複弦波,頻率ω。
測量輸出訊號的振幅縮放比例|F(exp(𝑖ω))|、相位偏移差距-∠F(exp(𝑖ω))。
稱作增益gain、相移phase shift。
視作複數長度、複數角度,
還原成一個複數,
即是轉移函數F(z)的函數值,其中z = exp(𝑖ω)。
phase/phase shift is positive = shift right = time delay
phase/phase shift is negative = shift left  = time advance

訊號相位、系統相移,兩者正負意義相同,兩者移動方向一致。
相位/相移若是正數,訊號/輸出訊號則是右移、延遲。
相位/相移若是負數,訊號/輸出訊號則是左移、提前。

x[n] = exp(𝑖ωn - φ)
phase is φ

given x[n] = exp(𝑖ωn)
then  y[n] = |F(exp(𝑖ω))| exp(𝑖ωn + ∠F(exp(𝑖ω)))
phase shift is -∠F(exp(𝑖ω))

頻率響應的放大因子的複數角度,
頻率響應實際測量得到的相移,
兩者相差一個負號。

frequency response (in practice)

given x[n] = cos(ωn)
then  y[n] = |F(exp(𝑖ω))| cos(ωn + ∠F(exp(𝑖ω)))
given x[n] = cos(ωn)
           = (1/2) exp(+𝑖ωn) + (1/2) exp(-𝑖ωn)
then  y[n] = (1/2) |F(exp(𝑖ω))| exp(+𝑖ωn + ∠F(exp(𝑖ω)))
           + (1/2) |F(exp(𝑖ω))| exp(-𝑖ωn - ∠F(exp(𝑖ω)))
           = |F(exp(𝑖ω))| cos(ωn + ∠F(exp(𝑖ω)))
現實世界的訊號,不能是複數,只能是實數。

輸入訊號不能是複數exp波,只好改成實數sin波/實數cos波,
藉由實數sin波/實數cos波的頻率響應,反推複數exp波的頻率響應。
很幸運地,增益gain、相移phase shift,仍然相同。

思路如下:
cos波拆成兩個複數exp波疊加。
線性非時變系統,輸入分解,各自通過系統,輸出相加,結果一樣。
理論上:輸入訊號是複數exp波,
    輸出訊號也是複數exp波。
實務上:輸入訊號是實數sin波/實數cos波。
    輸出訊號也是實數sin波/實數cos波。

frequency response (in practice)

real consine wave with amplitude α and phase φ:

given x[n] = α cos(ωn + φ)
then  y[n] = α |F(exp(𝑖ω))| cos(ωn + φ + ∠F(exp(𝑖ω)))

spectrum of system

frequency response at frequency ω:

given x[n] = α cos(ωn + φ)
then  y[n] = α |F(exp(𝑖ω))| cos(ωn + φ + ∠F(exp(𝑖ω)))

spectrum of system at frequency ω:

|F(exp(𝑖ω))| = ‖y‖ / ‖x‖
             = max(abs(y)) / max(abs(x))
             ≈ max(y) / max(x)
∠F(exp(𝑖ω)) = argmax r₝ₓ
            = argmax dot(y +⃡ k, x)
                 k

Fourier transform

Fourier transform

頻率響應:可求得轉移函數的一個函數值。(多項式函數求值)
傅立葉轉換:一口氣求得生成函數/轉移函數的多個函數值。(多項式函數多點求值)

數學理論請見本站文件「convolution」。
解讀方式請見本站文件「wave」。
                     (symbol)                (numeral)
 time domain         z-domain             frequency domain
┌───────────┐  𝓩  ┌────────────┐ evaluate  ┌───────────┐
│  input    │────→│ generating │──────────→│ spectrum  │
│  signal   │     │  function  │←──────────│ of input  │
└───────────┘     └────────────┘interpolate└───────────┘
      ∗                  ×                       ×      
┌───────────┐  𝓩  ┌────────────┐ evaluate  ┌───────────┐
│convolution│────→│  transfer  │──────────→│ spectrum  │
│  kernel   │     │  function  │←──────────│ of system │
└───────────┘     └────────────┘interpolate└───────────┘
      ‖                  ‖                       ‖      
┌───────────┐  𝓩  ┌────────────┐ evaluate  ┌───────────┐
│  output   │────→│ generating │──────────→│ spectrum  │
│  signal   │     │  function  │←──────────│ of output │
└───────────┘     └────────────┘interpolate└───────────┘
 time domain     frequency domain
┌───────────┐  𝓕  ┌───────────┐
│  input    │────→│ spectrum  │
│  signal   │     │ of input  │
└───────────┘     └───────────┘
      ∗                 ×      
┌───────────┐  𝓕  ┌───────────┐
│convolution│────→│ spectrum  │
│  kernel   │     │ of system │
└───────────┘     └───────────┘
      ‖                 ‖      
┌───────────┐  𝓕  ┌───────────┐
│  output   │────→│ spectrum  │
│  signal   │     │ of output │
└───────────┘     └───────────┘

spectrum of signal

amplitude spectrum:     phase spectrum:

|X(exp(𝑖ω))|            ∠X(exp(𝑖ω))
  ↑                       ↑
  │    ╷│╷                │   │╷
  ├───┴┴┴┴┴┴─→ω           ├───┴┴┴┬┬┬─→ω
  │                       │       ╵│
訊號頻譜:
生成函數的函數值們。

兩種計算方式:
一、訊號做傅立葉轉換。
二、訊號除以複弦波,然後每項相加。得到一種頻率的函數值。

1. spectrum(signal) = Fourier(signal)
2. sum(signal / complex sinusoid)
因為真實世界的訊號幾乎都是一堆波,
所以大家用傅立葉轉換,把訊號分解成波。
原本訊號稱作時域(座標軸是時間)。
傅立葉轉換之後稱作頻域(座標軸是頻率)。
訊號實施傅立葉轉換(時域轉頻域),形成頻譜。
一串數列的傅立葉轉換是一串數列,每個數值都是複數。
一個數值對應一種頻率的複弦波的振幅和相位。
複數長度是振幅。每個數值的振幅,形成振幅頻譜。
複數角度是相位。每個數值的相位,形成相位頻譜。
振幅頻譜:各種頻率的複弦波的振幅。
相位頻譜:各種頻率的複弦波的相位。
兩者合稱頻譜。

spectrum of system

gain spectrum:          phase-shift spectrum:

|F(exp(𝑖ω))|            ∠F(exp(𝑖ω))
  ↑                       ↑
  │    ╷│╷                │   │╷
  ├───┴┴┴┴┴┴─→ω           ├───┴┴┴┬┬┬─→ω
  │                       │       ╵│
系統頻譜:
轉移函數的函數值們。

兩種計算方式:
一、卷積核做傅立葉轉換。
二、輸出訊號頻譜除以輸入訊號頻譜。(訊號做傅立葉轉換,然後對應項相除)。
三、做很多次頻率響應。

1. spectrum(system) = Fourier(convolution kernel)

                      spectrum(output signal)
2. spectrum(system) = ———————————————————————
                      spectrum(input signal)

3. spectrum(system) = ratio of frequency responses
輸入訊號、輸出訊號,拆解成各種頻率的複弦波疊加,
線性非時變系統:各種頻率的複弦波分別套用系統。
卷積不變量:各種複弦波的頻率保持不變。
系統,即是每種頻率的複弦波的振幅縮放比例、相位偏移差距。
卷積核實施傅立葉轉換(時域轉頻域),形成系統頻譜。
或者,輸出頻譜除以輸入頻譜,形成系統頻譜。
一串數列的傅立葉轉換是一串數列,每個數值都是複數。
一個數值對應一種頻率的複弦波的振幅縮放比例和相位偏移差距。
複數長度是振幅。每個數值的振幅,形成增益頻譜。
複數角度是相位。每個數值的相位,形成相移頻譜。
增益頻譜:各種頻率的複弦波的振幅縮放比例。
相移頻譜:各種頻率的複弦波的相位偏移差距。
大家習慣簡單地稱作振幅頻譜、相位頻譜。
兩者合稱頻譜。

frequency response

注意到,正向傅立葉轉換是除以複弦波。
特徵函數(x⁰, x¹, x², ...)設定為x = z⁻¹ = exp(-𝑖ω)。
為何正向傅立葉轉換採用除法?為了讓訊號拆解成複弦波疊加。
為何z轉換採用負號次方?為了配合正向傅立葉轉換。

正向傅立葉轉換的放大因子的複數角度,恰是相移,負負得正。
頻率響應的放大因子的複數角度,不是相移,記得帶負號!
兩者相差一個負號。

延伸閱讀:4 types of Fourier transform

Fourier transform

輸入丨輸出丨名稱
一一十一一十一一一一一一一一一一一一一一一一一一一一一
離散丨離散丨discrete Fourier transform
離散丨連續丨discrete-time Fourier transform
連續丨離散丨Fourier series
連續丨連續丨(continuous-time) Fourier transform
數學當中,Fourier transform總共有四種版本。
輸入是離散數列(離散時間)/連續函數(連續時間)。
輸出是離散數列(離散頻率)/連續函數(連續頻率)。
輸入有兩種版本、輸出有兩種版本,交叉配對,得到四種版本。
名稱不好記。

一、離散時間離散頻率:
  離散傅立葉轉換discrete Fourier transform。

z轉換,其多項式分別代入N種特定數值,
z = exp(𝑖(2π/N)f),f從0到N-1。
拉普拉斯轉換,其多項式分別代入N種特定數值,
s = 𝑖(2π/N)f,f從0到N-1。

二、離散時間連續頻率:
  離散時間傅立葉轉換discrete-time Fourier transform。

z轉換,其多項式分別代入∞種特定數值,
z = exp(𝑖ω),ω從-∞到+∞。
拉普拉斯轉換,其多項式分別代入∞種特定數值,
s = 𝑖ω,ω從-∞到+∞。
自然數f推廣成複數ω。重點在於連續頻率。

三、連續時間離散頻率:
  傅立葉級數Fourier series。

拉普拉斯轉換,其積分變換分別代入N種特定數值,
s = 𝑖(2π/N)f,f從0到N-1。

四、連續時間連續頻率:
  連續時間傅立葉轉換continuous-time Fourier transform。

拉普拉斯轉換,其積分變換分別代入∞種特定數值,
s = 𝑖ω,ω從-∞到+∞。
四種版本各自都是雙射函數(各自擁有逆向轉換)。
(離散版本需要追加限制條件:週期函數。)
實務上,不使用這些版本。
實務上,輸出只能是離散數列(離散頻率)。
實務上,輸出長度與輸入長度沒必要相等(逆向轉換沒必要存在),
你想算哪幾個頻率,就去算那幾個頻率。
利用頻率響應來計算。

如果需要進行高速計算,那麼採用第一個版本。
需要將訊號長度N調整成2的次方,透過補零。
其演算法通稱「快速傅立葉轉換」,時間複雜度O(NlogN)。

Laplace transform

傅立葉轉換:振幅為1、相位為0、頻率為定值,平穩振動的波。
拉普拉斯轉換:振幅頻率相位為各種數值。

傅立葉轉換是特例,拉普拉斯轉換是通例,導致教科書很喜歡用拉普拉斯轉換。
然而拉普拉斯轉換在現實世界當中沒有對應的物理現象。
而且拉普拉斯轉換的時間複雜度和空間複雜度遠遠大於傅立葉轉換。
因此實務上只會使用傅立葉轉換。完全不用拉普拉斯轉換。

拉普拉斯轉換用來在網路論壇裝逼。用來假裝自己講話有份量。

sparse Fourier transform

只計算特定頻率的振幅與相位。速度較快。
http://groups.csail.mit.edu/netmit/sFFT/
http://people.csail.mit.edu/indyk/fourier-gsip.pdf

system analysis — system operation

引言

系統的各種運算:
求值(順向通過系統,求得輸出訊號。)
求解(反向通過系統,求得輸入訊號。)
迴歸(已知輸入訊號、輸出訊號、系統模型,求得系統參數。)
反函數(對調輸入訊號、輸出訊號。)
四種運算都有時域和頻域兩種解法。
頻域解法的時間複雜度較低,但是沒人用!
一、系統參數通常很少。傅立葉轉換反而浪費時間。
二、系統參數無法完美轉換到頻域。

MA model

representation

polynomial representation
多項式表示法:系統視作權重

y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₖ x[n-k]

matrix representation no.1
矩陣表示法:系統視作矩陣

⎡ a₀  0  0 ...  0  0  0 ⎤ ⎡ x[0] ⎤   ⎡ y[0] ⎤
⎢ a₁ a₀  0 ...  0  0  0 ⎥ ⎢ x[1] ⎥   ⎢ y[1] ⎥
⎢ a₂ a₁ a₀ ...  0  0  0 ⎥ ⎢   :  ⎥   ⎢   :  ⎥
⎢  :  :  :      :  :  : ⎥ ⎢   :  ⎥ = ⎢   :  ⎥
⎢  0  0  0 ... a₀  0  0 ⎥ ⎢   :  ⎥   ⎢   :  ⎥
⎢  0  0  0 ... a₁ a₀  0 ⎥ ⎢   :  ⎥   ⎢   :  ⎥
⎣  0  0  0 ... a₂ a₁ a₀ ⎦ ⎣ x[n] ⎦   ⎣ y[n] ⎦
            A                 x          y

polynomial representation no.2
多項式表示法:輸入訊號視作權重

y[n] = x[n] a₀ + x[n-1] a₁ + ... + x[n-k] aₖ

matrix representation no.2
矩陣形式:輸入訊號視作矩陣

⎡ x[0]     0    ...   0      ⎤          ⎡ y[0] ⎤
⎢ x[1]   x[0]   ...   0      ⎥ ⎡ a₀ ⎤   ⎢ y[1] ⎥
⎢   :      :          :      ⎥ ⎢ a₁ ⎥   ⎢   :  ⎥
⎢   :      :          :      ⎥ ⎢  : ⎥ = ⎢   :  ⎥
⎢   :      :          :      ⎥ ⎢  : ⎥   ⎢   :  ⎥
⎢ x[n-1] x[n-2] ... x[n-k-1] ⎥ ⎣ aₖ ⎦   ⎢   :  ⎥
⎣ x[n]   x[n-1] ... x[n-k]   ⎦          ⎣ y[n] ⎦
              X                  a          y

operation

MA model   │ y = f(x)
─────────────────────
evaluation │ find y
resolution │ find x
regression │ find f
inversion  │ find f⁻¹
求值(順向通過系統)
求解(反向通過系統)
迴歸(求系統)
反函數(求反系統)

evaluation

求值(順向通過系統):滑動視窗,取加權平均數。時間複雜度O(NK)。

resolution

求解(反向通過系統):滑動視窗,解加權平均數方程式。時間複雜度O(NK)。

regression

迴歸(求系統):兩種方式。
一、X a = y。
  虛擬反矩陣。三種數學公式。O(NK² + K³)。
  請見本站文件「linear least squares」。
二、Xᵀ X a = Xᵀ y。
  X拉高,Xᵀ X變成常對角矩陣,a變成近似解。
  X拉高,Xᵀ X a = Xᵀ y稱作Wiener–Hopf equation。
  先算Xᵀ X和Xᵀ y,再求解。
  有多種演算法。時域O(NK + K²)、頻域O(NlogN + KlogK)。
  請見本站文件「Toeplitz matrix」、「Fourier transform」。

專著《Adaptive Filter Theory》。
第一種方式:

y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₖ x[n-k]

⎡ x[0]     0    ...   0        0    ⎤          ⎡ y[0] ⎤
⎢ x[1]   x[0]   ...   0        0    ⎥ ⎡ a₀ ⎤   ⎢   :  ⎥
⎢ x[2]   x[1]   ...   0        0    ⎥ ⎢  : ⎥   ⎢   :  ⎥
⎢   :      :          :        :    ⎥ ⎢  : ⎥ = ⎢   :  ⎥
⎢   :      :          :        :    ⎥ ⎢  : ⎥   ⎢   :  ⎥
⎢   :      :          :        :    ⎥ ⎣ aₖ ⎦   ⎢   :  ⎥
⎣ x[n]   x[n-1] ... x[n-k+1] x[n-k] ⎦          ⎣ y[n] ⎦
                 X                      a          y

X a = y             linear equation (overdetermined system)
Xᵀ X a = Xᵀ y       normal equation (overdetermined system)
a = (Xᵀ X)⁻¹ Xᵀ y   solution of normal equation
X⁺ = (Xᵀ X)⁻¹ Xᵀ    Moore–Penrose pseudoinverse

a = argmin ‖Ax - b‖²   a is least-squares solution
                       if X has full column rank.

輸入訊號,視作矩陣X。
輸出訊號,視作向量y。
系統參數,視作向量a。
利用矩陣表示法,形成一次方程式X a = y,找到平方誤差最小的解。
利用投影,化作一次方程式Xᵀ X a = Xᵀ y,保證有唯一解。

三種數學公式。時間複雜度差不多都是O(NK² + K³)。
(1) normal equation
(2) QR decomposion
(3) singular value decompostion
第二種方式:

y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₖ x[n-k]

⎡ x[0]                      ⎤          ⎡ y[0] ⎤
⎢   :  x[0]                 ⎥          ⎢   :  ⎥
⎢   :    :                  ⎥ ⎡ a₀ ⎤   ⎢   :  ⎥
⎢   :    :        x[0]      ⎥ ⎢  : ⎥   ⎢   :  ⎥
⎢   :    :  .....   :  x[0] ⎥ ⎢  : ⎥ = ⎢   :  ⎥
⎢ x[n]   :          :    :  ⎥ ⎢  : ⎥   ⎢ y[n] ⎥
⎢      x[n]         :    :  ⎥ ⎣ aₖ ⎦   ⎢  NaN ⎥
⎢                   :    :  ⎥          ⎢   :  ⎥
⎢                 x[n]   :  ⎥          ⎢   :  ⎥
⎣                      x[n] ⎦          ⎣  NaN ⎦
              X                 a          y

⎡ rₓₓ[0]   rₓₓ[1]   ... rₓₓ[k]   ⎤ ⎡ a₀ ⎤   ⎡ r₝ₓ[0] ⎤
⎢ rₓₓ[1]   rₓₓ[0]   ... rₓₓ[k-1] ⎥ ⎢  : ⎥   ⎢     :  ⎥
⎢     :        :            :    ⎥ ⎢  : ⎥ = ⎢     :  ⎥
⎢ rₓₓ[k-1] rₓₓ[k-2] ... rₓₓ[1]   ⎥ ⎢  : ⎥   ⎢     :  ⎥
⎣ rₓₓ[k]   rₓₓ[k-1] ... rₓₓ[0]   ⎦ ⎣ aₖ ⎦   ⎣ r₝ₓ[k] ⎦
               Xᵀ X                  a         Xᵀ y

rₓₓ[t] =  sum  { x[n+t] x[n] }   autocorrelation function
        n=0⋯N-1                  x+⃡t dot x
rₓ₝[t] =  sum  { x[n+t] y[n] }   cross-correlation function
        n=0⋯N-1                  x+⃡t dot y

輸入訊號,視作矩陣X。矩陣拉高,輸入訊號變得完整。
輸出訊號,視作向量y。超出尾端的K個未定義數值NaN需要重新賦值。
甲、填0。答案錯誤。
乙、延遲K個時刻,測量正確數字。答案依然錯誤,還得延遲求解。
如此一來,Xᵀ X變成常對角矩陣Toeplitz matrix。
如此一來,Xᵀ X a = Xᵀ y稱作Wiener–Hopf equation。

Xᵀ X是常對角矩陣Toeplitz matrix、對稱矩陣symmetric matrix。
常對角矩陣有高速演算法。對稱矩陣能精簡計算步驟。

先算Xᵀ X和Xᵀ y,再求解。
建立矩陣:互相關函數。卷積。時域O(NK)、頻域O(NlogN)。
矩陣求解:常對角矩陣求解。時域O(K²)、頻域O(KlogK)。

常對角矩陣求解有許多演算法。
時域演算法:領先主子矩陣。例如Levinson–Durbin algorithm。
頻域演算法:快速傅立葉轉換。例如Cooley–Tukey algorithm。

inversion

反函數(求反系統):事情變得複雜。
一、連續時間系統:當訊號長度無限長,有唯一解。
二、離散時間系統:形成兩難局面。

各種數學領域當中,
連續運算子改成離散運算子,可能損失某些數學性質。
大家難以取捨,形成兩難局面。有人稱作no free lunch。

離散時間系統無法同時滿足:
一、得到最小平方解。
二、形成卷積核。換句話說,形成常對角矩陣Toeplitz matrix。

對應兩種演算法:
一、僅得到最小平方解:三種數學公式(時域虛擬反矩陣)。O(NK)。
二、僅形成卷積核:傅立葉轉換(頻域譜分解)。O(NlogN)。
 (數列補零,化作循環矩陣求最小平方解。)
 (然而不是原本常對角矩陣的最小平方解。)

AR model

representation

如同MA model。
輸入與輸出是同一數列,但是輸出延遲1時刻。

operation

AR model   │ y +⃡ 1 = f(y)
──────────────────────────
evaluation │ find y
regression │ find f
inversion  | find f⁻¹
求值(求遞迴數列)
迴歸(求遞迴函數)
反函數(求反系統)

evaluation

求值(求遞迴數列):三種演算法。
線性遞迴函數K項,求數列第N項。
一、動態規劃,第0項算到第N項。O(NK)。
二、同伴矩陣的N次方。O(K³logN)。假設矩陣相乘O(K³)。
三、xᴺ模特徵多項式。O(K²logN)甚至O(KlogKlogN)。
當K是常數,一變成O(N),二三變成O(logN)。
請見本站文件「polynomial — recurrence」。

regression

迴歸(求遞迴函數):如同MA model。多了一種方式。
一、Y b = y。
  虛擬反矩陣。三種數學公式。O(NK² + K³)。
  請見本站文件「linear least squares」。
二、Yᵀ Y b = Yᵀ y。
  Y拉高,Yᵀ Y變成常對角矩陣,b變成近似解。
  Y拉高,Yᵀ Y b = Yᵀ y稱作Yule–Walker equation。
  先算Yᵀ Y和Yᵀ y,再求解。
  有多種演算法。時域O(NK + K²)、頻域O(NlogN + KlogK)。
  請見本站文件「Toeplitz matrix」、「Fourier transform」。
三、y +⃡ 1 = f(y)。
  有多種演算法。例如Berlekamp–Massey algorithm。O(NK)。
  請見本站文件「polynomial — recurrence」。
第二種方式:

y[n] = b₁ y[n-1] + b₂ y[n-2] + ... + bₖ y[n-k]

⎡ y[0]                            ⎤          ⎡ y[1] ⎤
⎢   :    y[0]                     ⎥          ⎢   :  ⎥
⎢   :      :                      ⎥ ⎡ b₁ ⎤   ⎢   :  ⎥
⎢   :      :        y[0]          ⎥ ⎢  : ⎥   ⎢   :  ⎥
⎢   :      :    ...   :    y[0]   ⎥ ⎢  : ⎥ = ⎢   :  ⎥
⎢ y[n-1]   :          :      :    ⎥ ⎢  : ⎥   ⎢ y[n] ⎥
⎢        y[n-1]       :      :    ⎥ ⎣ bₖ ⎦   ⎢  NaN ⎥
⎢                     :      :    ⎥          ⎢   :  ⎥
⎢                   y[n-1]   :    ⎥          ⎢   :  ⎥
⎣                          y[n-1] ⎦          ⎣  NaN ⎦
                 Y                    b          y

⎡ r₝₝[0]   r₝₝[1]   ... r₝₝[k-1] ⎤ ⎡ b₁ ⎤   ⎡ r₝₝[1] ⎤
⎢ r₝₝[1]   r₝₝[0]   ... r₝₝[k-2] ⎥ ⎢ b₂ ⎥   ⎢ r₝₝[2] ⎥
⎢     :        :            :    ⎥ ⎢  : ⎥ = ⎢     :  ⎥
⎢ r₝₝[k-2] r₝₝[k-1] ... r₝₝[1]   ⎥ ⎢  : ⎥   ⎢     :  ⎥
⎣ r₝₝[k-1] r₝₝[k-2] ... r₝₝[0]   ⎦ ⎣ bₖ ⎦   ⎣ r₝₝[k] ⎦
               Yᵀ Y                  b         Yᵀ y

inversion

反函數(求反系統):事情變得複雜。
系統分為minimum phase system和non-minimum phase system。
後者的處理機制較為複雜。
詳情請見講義:
https://stats.stackexchange.com/questions/23827/
http://mocha-java.uccs.edu/ECE5540/ECE5540-CH07.pdf

system analysis — system identification

引言

訊號學家自創一個詞彙system identification。
標題本來應該是system parameter estimation。
硬要區分的話嘛:
identification是找到系統模型。就是建模!
estimation是找到系統參數。就是迴歸!

system model

FIR system / IIR system

開迴路系統、閉迴路系統
訊號學家自創兩個同義詞彙,就是這樣而已。
脈衝響應分成兩種:
1. finite impulse response (FIR)
   有限脈衝響應。輸入脈衝函數,輸出很快歸零。時間長度有限。
2. infinite impulse response (IIR)
   無限脈衝響應。輸入脈衝函數,輸出永不歸零。時間長度無限。
系統分為兩種款式:
1. FIR system = open-loop system
   開迴路->輸入只取幾項->有限脈衝響應
2. IIR system = closed-loop system
   閉迴路->輸入包含輸出->輸出強行展開->輸入取所有項->無限脈衝響應

LTI system

系統分為兩種款式:
1. LTI FIR system = MA model
   開迴路->輸入的加權總和->輸入只取幾項->有限脈衝響應
2. LTI IIR system = ARMA model
   閉迴路->輸入與輸出的加權總和->輸出強行展開->輸入取所有項->無限脈衝響應

stochastic system

系統分為兩種款式:
1. LTI system
   沒有雜訊/干擾->整體視作一個LTI system->system operation
2. stochastic LTI system
   追加雜訊/干擾->考慮各種system diagram->system identification

system identification

stochastic LTI system

stochastic LTI system
 ├ stochastic LTI FIR system
 │  └ MAX model           Y = AX + E     skip (z)
 └ stochastic LTI IIR system
    ├ output error model  Y = (A/B)X + E
    ├ ARX model           Y = (A/B)X + (1/B)E
    ├ ARMAX model         Y = (A/B)X + (C/B)E
    └ Box–Jenkins model   Y = (A/B)X + (C/D)E

system model identification

系統模型識別的步驟如下:
一、判斷系統是線性非時變系統/不是線性非時變系統:
  依序檢查因果性、時間不變性、加性、倍性。
  令輸入訊號是特定函數,
  觀察輸出訊號是否不受控制、隨之延遲、相加、翻倍。
二、判斷系統是有限脈衝響應/無限脈衝響應:
  令輸入訊號是脈衝函數,觀察輸出訊號。
  甲、輸出訊號迅速歸零:FIR system。
  乙、輸出訊號永不歸零:IIR system。
  一般使用脈衝響應。再不濟,矩形響應、三角形響應。
三、決定系統模型:
  stochastic LTI FIR system只有一種基礎模型。
  stochastic LTI IIR system擁有四種基礎模型。
  四種基礎模型通通嘗試一遍,看看哪種誤差較少。
  你也可以自己發明新模型。
四、決定系統參數:
  各種系統參數數量通通嘗試一遍,看看哪種誤差最少。
  另外還要檢查系統延遲時間、穩定性。
  詳情請見講義:
  http://mocha-java.uccs.edu/ECE5560/ECE5560-Notes04.pdf

system parameter estimation

(1) convolution kernel: sequence deconvolution
    y = f * x
    Xᵀ X f = Xᵀ y
    f = (Xᵀ X)⁻¹ Xᵀ y

(2) transfer function: polynomial division & interpolation
    F(exp(𝑖ω)) = Y(exp(𝑖ω)) / X(exp(𝑖ω))
系統參數估計的演算法,原理只有兩種,時域和頻域。

一、時域卷積核:

已知輸入訊號、輸出訊號,求得系統參數。
如果已知系統參數數量,那麼系統參數數值有唯一解。
因為對象是LTI system,所以形成linear equation。
高斯消去法可以求解。

現實世界的訊號數值,無法完美精確地測量,總是有雜訊/干擾。
大家習慣改用least squares method,找到平方誤差最小的解。
因為對象是LTI system,所以形成linear least squares。
normal equation可以求解。

二、頻域轉移函數/系統頻譜:

已知輸入訊號頻譜、輸出訊號頻譜,求得系統頻譜。
如果已知系統參數數量,那麼系統頻譜有唯一解。
多項式除法與多項式內插可以求解。

訊號頻譜有雜訊/干擾,那麼改用least squares method。
最佳化演算法可以求解。

experimental data

input signal / system response:
輸入特殊訊號,直接量頻譜。
(1) chirp (swept sine): 弦波頻率漸增,依序得到輸出訊號頻譜每個bin。
(2) white noise: 訊號頻譜是常數函數,方便計算系統的gain。
(3) pseudorandom binary sequence:針對數位訊號。功能類似white noise。
steady state / initial state:
一、進行實驗之時,確保輸出訊號已經抵達穩態,才做測量。
二、進行實驗之前,確保系統內部狀態已經恢復初始值,才做測量。

連續進行實驗的情況下,
輸入訊號需要插入足夠多個零。
甚至切斷電源重開機。
尤其是stochastic LTI IIR system。

model selection / model validation

模型選擇:找到最符合的系統模型與系統參數。
     指標有AIC、BIC。方法有cross-validation。此處省略。
模型驗證:承上,接著檢查該系統模型與系統參數。
     嘗試各種輸入訊號,檢查實際系統與估計系統的輸出訊號是否足夠相符。
     指標有平均數、變異數。方法有cross-validation。此處省略。

stochastic LTI FIR system

system model

MAX model:

                e (zero-mean white noise)
                ╷
      ┌─────┐   ↓
x ───→│  A  │──→⊕──→ y
      └─────┘

y[n] = sum { aₖ x[n-k] + e[n] }
      k=0⋯∞
MAX model = Moving Average model with eXogenous inputs
移動平均模型MA附帶外生輸入X
(此處的外生輸入是指zero-mean white noise)

system parameter estimation

system parameter estimation:

(1) correlation: least squares estimation
    input signal has time-invariant autocorrelation.
    e.g. weakly stationary process

system spectrum estimation:

(2) correlation spectrum: H₁ estimate and H₂ estimate
    input signal has time-invariant autocorrelation.
    e.g. weakly stationary process

(3) frequency response: QAM estimate
    input signal is sinusoid.
    e.g. cosine wave

(4) transfer function: empirical transfer function estimate
    input signal is purpose-built.
    e.g. white noise
針對LTI FIR model,
可以直接估計系統參數,
也可以間接估計系統頻譜。

LTI FIR model = MA model。
卷積核恰是系統參數。
系統頻譜做逆向傅立葉轉換得到卷積核。

least squares estimation

correlation

autocorrelation function:

rₓₓ[k] = sum { x[n+k] x[n] }
        n=0⋯∞

cross-correlation function:

rₓ₝[k] = sum { x[n+k] y[n] }
        n=0⋯∞

實務上訊號長度有限。訊號長度是N,加總運算範圍是n=0⋯N-1。
property:

(1) rₓ₝[k] ≠ r₝ₓ[k]      not commute
(2) rₓ₝[k] = r₝ₓ[-k]     however negative index is not defined
(3) rₓₓ ∗ a = r₝ₓ        a is LTI system that y = a ∗ x
(4) -⃡a ∗ rₓₓ ∗ a = r₝₝   a is LTI system that y = a ∗ x
proof of property (3):

y[n] = sum { aₖ x[n-k] }
      k=0⋯∞

r₝ₓ[k] = sum { y[n+k] x[n] }
          n
       = sum { sum { aᵢ x[n+k-i] } x[n] }
          n     i                         
       = sum { sum { aᵢ x[n+k-i] x[n] } }
          n     i                         
       = sum { sum { aᵢ x[n+k-i] x[n] } }
          i     n
       = sum { aᵢ sum { x[n+k-i] x[n] } }
          i        n
       = sum { aᵢ rₓₓ[k-i] }
          i

least squares estimation

MAX model:

                e (zero-mean white noise)
                ╷
      ┌─────┐   ↓+
x ───→│  A  │──→⊕──→ y
      └─────┘

y[n] = sum { aₖ x[n-k] + e[n] }
      k=0⋯∞

assumption:

assume e and x are independent.

theorem:

independent => uncorrelated.

rₑₓ = 0

rₑₓ[k] = sum { e[n+k] x[n] } = 0

correlation:

假設e與x獨立、不相關,就可以用correlation消除雜訊影響。

r₝ₓ = rₓₓ ∗ a + rₑₓ
    = rₓₓ ∗ a

r₝ₓ[k] = sum { y[n+k] x[n] }
       = sum { sum { aᵢ x[n+k-i] + e[n+k] } x[n] }
       = sum { sum { aᵢ x[n+k-i] x[n] + e[n+k] x[n] } }
       = sum { sum { aᵢ x[n+k-i] x[n] } + sum { e[n+k] x[n] } }
       = sum { aᵢ rₓₓ[k-i] }              ^^^^^^^^^^^^^^^^^^^
                                                    = 0
linear regression:

解一次方程組得到系統參數。
即是先前章節介紹的方法。

given r₝ₓ and rₓₓ, solve a.
assume aₜ = 0 when t ≥ N

⎡ r₝ₓ[0]   ⎤   ⎡ rₓₓ[0]      ... rₓₓ[N-1] ⎤ ⎡ a₀   ⎤
⎢     :    ⎥ = ⎢    :                :    ⎥ ⎢  :   ⎥
⎣ r₝ₓ[N-1] ⎦   ⎣ rₓₓ[-(N-1)] ... rₓₓ[0]   ⎦ ⎣ aɴ₋₁ ⎦
    r₝ₓ               Toeplitz(rₓₓ)            a

solution:

a = Toeplitz(rₓₓ)⁻¹ r₝ₓ

H₁ estimate and H₂ estimate

correlation spectrum

符號:z轉換或者拉普拉斯轉換。
數值:傅立葉轉換。
(1) symbol: z-transform / Laplace transforms

autocorrelation spectrum:

Rₓₓ(z) = rₓₓ[0] z⁰ + rₓₓ[1] z⁻¹ + rₓₓ[2] z⁻² + ...

       = sum { rₓₓ[k] z⁻ᵏ }
        k=0⋯∞

cross-correlation spectrum:

Rₓ₝(z) = rₓ₝[0] z⁰ + rₓ₝[1] z⁻¹ + rₓ₝[2] z⁻² + ...

       = sum { rₓ₝[k] z⁻ᵏ }
        k=0⋯∞

(2) numeral: discrete-time Fourier transform

autocorrelation spectrum:

Rₓₓ(ω) =  sum  { rₓₓ[k] exp(-𝑖ωk) }
        k=-∞⋯+∞

cross-correlation spectrum:

Rₓ₝(ω) =  sum  { rₓ₝[k] exp(-𝑖ωk) }
        k=-∞⋯+∞
property (derived from convolution theorem):

(1) Rₓ₝(z) ≠ R₝ₓ(z)               not commute
(2) Rₓ₝(z) = R₝ₓ(1/z)             however not being calculated
(3) Rₓₓ(z) A(z) = R₝ₓ(z)          A is LTI system that Y = AX
(4) A(1/z) Rₓₓ(z) A(z) = R₝₝(z)   A is LTI system that Y = AX

H₁ estimate and H₂ estimate

                e
                ╷
      ┌─────┐   ↓+
x ───→│  A  │──→⊕──→ y
      └─────┘

rₑₑ[k] = σ² δ[k]                          since e is white
Rₑₑ(ω) = sum { σ² δ[k] exp(-𝑖ωk) } = σ²   since e is white

r₝₝[k] = aₖ ∗ rₓ₝[k] + σ² δ[k]
R₝₝(ω) = A(exp(𝑖ω)) Rₓ₝(ω) + Rₑₑ(ω)      where Rₑ(ω) = σ²
     d             e
     ╷             ╷
     ↓+  ┌─────┐   ↓+
x ──→⊕──→│  A  │──→⊕──→ y
         └─────┘

H₁ estimate: Ĥ₁ = R₝ₓ / Rₓₓ = (A Rₓₓ) / Rₓₓ + Rdd
H₂ estimate: Ĥ₂ = R₝₝ / Rₓ₝ = (A Rₓ₝ + Rₑₑ) / Rₓ₝
inequality: |Ĥ₁| ≤ |A| ≤ |Ĥ₂|
https://dsp.stackexchange.com/questions/71811/

QAM estimate【查無正式學術名稱】

frequency response

理論上是輸入複數exp波,實務上是輸入實數cos波。
輸入餘弦波,頻率ω、振幅α、相位0。
調整輸入振幅α,避免輸出訊號太弱太強而測量不到。

                       e
                       ╷
   α cos(ωn) ┌─────┐   ↓+
x ──────────→│  A  │──→⊕──→ y
             └─────┘

x[n] = α cos(ωn)
y[n] = α |A(exp(𝑖ω))| cos(ωn + ∠A(exp(𝑖ω))) + e[n]

QAM estimate

如果沒有誤差,那麼很容易計算系統頻譜。
為了應付誤差,輸出做amplitude modulation。
輸出分別乘上餘弦波和正弦波,反推原始振幅、原始相位,
稱作quadrature amplitude modulation。

                             cos(ωn)
                                ╷
                      e         ↓× ┌───────────────┐
                      ╷      ┌─→⊕─→│N-point average│──→ Ic(ω)
   α cos(ωn) ┌─────┐  ↓+     │     └───────────────┘
x ──────────→│  A  │─→⊕─→ y ─┤
             └─────┘         │     ┌───────────────┐
                             └─→⊕─→│N-point average│──→ Is(ω)
                                ↑× └───────────────┘
                                ╵
                             sin(ωn)

x[n] = α cos(ωn)

y[n] = α |A(exp(𝑖ω))| cos(ωn + ∠A(exp(𝑖ω))) + e[n]

Ic(ω) = sum { y[n] cos(ωn) } = +½ α |A(exp(𝑖ω))| cos(ωn)
       n=1⋯N
Is(ω) = sum { y[n] sin(ωn) } = -½ α |A(exp(𝑖ω))| sin(ωn)
       n=1⋯N
積化和差公式
cos(a) cos(b) = ½ cos(a-b) + ½ cos(a+b)

推導過程
Ic(ω) = sum { y[n] cos(ωn) }
      = sum { (......) cos(ωn) }
      = ½ α |A(exp(𝑖ω))| cos(ωn) ①
      + ½ α |A(exp(𝑖ω))| (1/N) sum { cos(2ωn + ∠A(exp(𝑖ω))) } ②
      + (1/N) sum { e[n] cos(ωn) } ③

②→0 as n→∞. since cos() has zero mean.
③→0 as n→∞. since e and x are independent by assumption.
hence only ① remains.
QAM estimate:
|Â(exp(𝑖ω))| = sqrt(Ic²(ω) + Is²(ω)) / (α/2)
∠Â(exp(𝑖ω)) = -tan⁻¹(Is(ω) / Ic(ω))

empirical transfer function estimate

專著《System Identification: Theory for the User》。

empirical transfer function estimate

MAX model:

Y = AX + E     skip (z)

empirical transfer function estimate:

 = Y/X
阿就測量一下輸出頻譜、輸入頻譜,兩者相除,即得系統頻譜。
重劍無鋒大巧不工。

系統頻譜=輸出頻譜/輸入頻譜
 = Y/X

頻譜相除=振幅相除&相位相減
複數相除=長度相除&角度相減
|Â| = |Y| / |X|   amplitude
∠Â = ∠Y - ∠X      phase

mean / variance / covariance

empirical transfer function estimate:

 = Y/X = (AX + E)/X = A + E/X

statistics:

(1) mean: E[Â] = E[A + E/X] = E[A] + E[E/X] = E[A]
(2) variance: E[|Â-A|²] = (Rₑₑ + constant) / E[|X|²]
(3) covariance:
    E[(Â(exp(𝑖ω₁))-A(exp(𝑖ω₁)))* (Â(exp(𝑖ω₂))-A(exp(𝑖ω₂)))] = 0

assumptions:

(1) zero-mean noise: E[E(exp(𝑖ω))] = 0
(2) white noise: E[E(exp(𝑖ω₁))E(exp(𝑖ω₂))] = 0
(3) independence: E[X(exp(𝑖ω))E(exp(𝑖ω))] = 0
(4) spectrum of system is asymptotically uncorrelated:
    E[A(exp(𝑖ω₁))A(exp(𝑖ω₂))] = 0 when M→∞
推導過程省略。
頻譜都是複數,相乘之前記得取共軛複數。
複數乘以共軛複數,恰是絕對值平方。
ETFT的答案絕對是錯的。
畢竟一眼看上去就是亂算一通,根本不考慮誤差項。

ETFT的答案的某些統計學指標至少是對的:
一、平均值是對的。
二、變異數是錯的,但是誤差有上限。
三、共變異數是對的。
(當系統頻譜的頻率種類M趨近無限多的情況下。)

即使統計學指標是對的,
那也只是自我安慰、精神勝利,沒啥屁用。
因此才會需要發明其他演算法,
像是H₁ estimate、H₂ estimate、QAM estimate。

教科書誤植為bias和variance。
bias和variance是指大量實驗的結果呈現哪種分布。
此處是談僅做一次實驗的結果會是如何。
https://people.ee.ethz.ch/~rsmith/idfiles/SysID_lecture05_small.pdf

spectral smoothing

spectral coherence:

A(exp(𝑖ω₁)) and A(exp(𝑖ω₂)) are asymptotically uncorrelated.
即便ω取樣間距變小,函數曲線也不會變得比較連續平滑。
改善方法是平滑化。做大量實驗,取平均值。

A(exp(𝑖ω))    the curve is spiky
    ↑   ﹏〰〰〰﹏
    │﹏〰        〰﹏﹏
    └──────┬─┬───────→ ω
          ω₁ ω₂

spectral smoothing:

輸入訊號、輸出訊號事先平滑化,其頻譜也隨之平滑化。
(1) k-fold average   時域訊號,相鄰N窗取平均。
(2) window function  時域訊號,套用窗函數。

bias–variance tradeoff:

窗越窄窗越多,bias越大variance越小。

stochastic LTI IIR system

system model

output error model  Y = (A/B)X + E        skip (z)
ARX model           Y = (A/B)X + (1/B)E
ARMAX model         Y = (A/B)X + (C/B)E
Box–Jenkins model   Y = (A/B)X + (C/D)E
output error model:

                 e (zero-mean white noise)
                 ╷
      ┌─────┐ w  ↓+
x ───→│ A/B │───→⊕───→ y
      └─────┘

⎧ w[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
⎨                + b₁ w[n-1] + ... + b₉ w[n-q]
⎩ y[n] = w[n] + e[n]

ARX model:

                e
                ╷
      ┌─────┐   ↓+  ┌─────┐
x ───→│  A  │──→⊕──→│ 1/B │───→ y
      └─────┘       └─────┘

y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
               + b₁ y[n-1] + ... + b₉ y[n-q] + e[n]

ARMAX model:

      ┌─────┐
e ───→│  C  │───┐
      └─────┘   │
      ┌─────┐   ↓+  ┌─────┐
x ───→│  A  │──→⊕──→│ 1/B │───→ y
      └─────┘       └─────┘

y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
               + b₁ y[n-1] + ... + b₉ y[n-q]
     + c₀ e[n] + c₁ e[n-1] + ... + cᵣ e[n-r]

Box–Jenkins model:

      ┌─────┐ v
e ───→│ C/D │───┐
      └─────┘   │
      ┌─────┐ w ↓+
x ───→│ A/B │──→⊕──→ y
      └─────┘

⎧ w[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
⎪                + b₁ w[n-1] + ... + b₉ w[n-q]
⎨ v[n] = c₀ e[n] + c₁ e[n-1] + ... + cᵣ e[n-r]
⎪                + d₁ v[n-1] + ... + dₛ v[n-s]
⎩ y[n] = w[n] + v[n]

least squares estimation

linear least squares estimation

linear regression:

(1) linear regression
(2) linear regression with zero-mean Gaussian white error

兩者公式解恰巧相同。
公式解都是normal equation。
因此,系統模型可以省略誤差項。【尚待確認】
請見本站文件「regression」、「estimation」。

least squares estimation with ARMAX model:

θ̂ = argmin ε(θ)

ε(θ) =  sum  ‖y[n] - ŷ(n;θ)‖²
      n=k⋯k+N

ŷ(n;θ) = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
                 + b₁ y[n-1] + ... + b₉ y[n-q] + e[n]

θ = (a₀, ..., aₚ, b₁, ..., b₉)

k ≥ max(p,q)

linear regression:

⎡ y[n]   ⎤   ⎡ x[n] ... x[n-p] y[n-1] ... y[n-q] ⎤ ⎡ a₀ ⎤
⎢   :    ⎥   ⎢   :         :      :          :   ⎥ ⎢  : ⎥
⎢   :    ⎥ = ⎢   :         :      :          :   ⎥ ⎢ aₚ ⎥
⎢   :    ⎥   ⎢                                   ⎥ ⎢ b₁ ⎥
⎣ y[n+N] ⎦   ⎣                                   ⎦ ⎢  : ⎥
                                                   ⎣ b₉ ⎦
    y                    thin matrix A               θ

where n ≥ max(p,q) and N+1 ≥ p+1+q
由於不知道初始條件,千萬不能採用n = 0、在矩陣右上角補零。

solution:

θ = (Aᵀ A)⁻¹ Aᵀ y

model validation:

得到正確答案之後,驗證系統模型是否正確。
檢查各個時刻的誤差值,照理來說,整體呈現常態分布。
如果不是常態分布,那麼系統模型不正確。

nonlinear least squares estimation

optimization:

也可以將迴歸問題化作最佳化問題。
演算法有gradient descent、Newton's method,隨便你用。
請見本站文件「optimization」、「multivariate optimization」。

least squares estimation with Box–Jenkins model:

θ̂ = argmin ε(θ)

ε(θ) =  sum  ‖y[n] - ŷ(n;θ)‖²
      n=k⋯k+N

⎧ ŷ(n;θ) = w[n] + v[n]
⎪ w[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
⎨                + b₁ w[n-1] + ... + b₉ w[n-q]
⎪ v[n] = c₀ e[n] + c₁ e[n-1] + ... + cᵣ e[n-r]
⎩                + d₁ v[n-1] + ... + dₛ v[n-s] 

θ = (a₀, ..., aₚ, b₁, ..., b₉, c₀, ..., cᵣ, d₁, ..., dₛ)

k ≥ max(p,q,r,s)

model validation:

同前。
frequency domain method:

理論上,最佳化目標可以是時域訊號,也可以是頻域頻譜。
我不知道效果有沒有比較好。

least squares estimation with Box–Jenkins model:

θ̂ = argmin ε(θ)

ε(θ) =  sum  ‖Yₙ(exp(𝑖ω)) - Ŷₙ(exp(𝑖ω);θ)‖²
      n=k⋯k+N
       ω=0⋯M

Ŷₙ = (Aₙ/Bₙ)Xₙ + (Cₙ/Dₙ)Eₙ     skip (exp(𝑖ω))

model validation:

得到正確答案之後,驗證系統模型是否正確。
檢查特定時刻誤差項Eₙ(exp(𝑖ω))的分布,照理來說,整體呈現均勻分布(白雜訊)。
如果不是均勻分布,那麼系統模型不正確。

system functionality

system functionality【尚無正式名稱】

不知道該下什麼標題才好。

「系統功能」。系統是函數、甚至是函數網路。工程師設計函數網路,達成特定任務,例如生成/濾波/估計/控制。

生成器:沒有輸入訊號,輸出一道訊號。
    需要設定參數。
濾波器:系統輸出之後,追加一個系統,用來調整輸出訊號。
    需要設定參數。
估計器:系統輸出之後,追加一個系統,用來估計系統參數。
    輸入訊號需要前饋。
控制器:系統輸入之前,追加一個系統,用來調整輸入訊號暨輸出訊號。
    輸出訊號需要回饋。
verb     | action noun | agent noun
---------|-------------|-----------
generate | generation  | generator
filter   | filter      | filter
estimate | estimation  | estimator
control  | control     | controller
       ┌───────────┐
       │ generator │────→ x
       └───────────┘

       ┌──────────┐  y  ┌──────────┐
x ────→│  system  │────→│  filter  │────→ y'
       └──────────┘     └──────────┘

       ┌──────────┐
x ──┬─→│  system  │──┬──────────────────→ y
    │  └──────────┘  └─→┌───────────┐
    ╰──────────────────→│ estimator │───→ θ
                        └───────────┘

       ┌──────────┐  x  ┌──────────┐
r ────→│controller│────→│  system  │──┬─→ y
    ╭─→└──────────┘     └──────────┘  │
    ╰─────────────────────────────────╯

generator

pulse generator / oscillator

脈衝生成器:產生三角形函數或者鐘形函數,寬度極窄,自訂寬度。
振盪器:產生週期函數。例如方波、三角波、鋸齒波、弦波。
實作方式採用程式語言,事情非常簡單。將數學函數直接寫成程式碼。
實作方式採用電子電路、生化反應,事情非常複雜。此處省略。

filter

low-pass filter / high-pass filter

濾波器只保留低頻波、只保留高頻波。

band-pass filter / band-stop filter

濾波器只保留中頻波、只刪除中頻波。

Shelving filter / Butterworth filter

濾波器保留低頻波或高頻波;其餘的波,頻率相差越遠、保留越少。比較平滑柔順啦。
濾波器保留中頻波;其餘的波,頻率相差越遠、保留越少。比較平滑柔順啦。
Shelving filter其實有時域公式喔!
http://www.cs.cf.ac.uk/Dave/CM0268/PDF/10_CM0268_Audio_FX.pdf

peak filter / notch filter

濾波器頻譜呈現一個尖峰、頻譜呈現一個尖谷。

moving average filter / difference filter

k點平均  y[n] = (x[n] + x[n-1] + ... + x[n-k+1]) / k
振幅頻譜呈連綿縮小圓丘
相鄰差   y[n] = x[n] + a x[n-1]
振幅頻譜呈連綿圓峰

feedforward comb filter / feedback comb filter

前饋延遲1刻  y[n] = x[n] + a x[n-1]
前饋延遲d刻  y[n] = x[n] + a x[n-d]  振幅頻譜呈連綿圓峰
回饋延遲d刻  y[n] = x[n] + a y[n-d]  振幅頻譜呈連綿圓丘上下顛倒、梳子

2nd-order其實就是延遲時刻有小數點,需要做線性內插。
https://thewolfsound.com/allpass-filter/

all-pass filter

振幅不變(常數1)、相位改變。
例如feedforward comb filter與feedback comb filter串聯。
https://ccrma.stanford.edu/~jos/pasp/Allpass_Two_Combs.html

first-order ARMA filter

low-pass first-order ARMA filter:

          k
F₁(s) = —————   ,  lim F₁(s) = 1  ,  lim F₁(s) = 0
        s + k      s→0               s→∞

high-pass first-order ARMA filter:

          s
F₂(s) = —————   ,  lim F₂(s) = 0  ,  lim F₂(s) = 1
        s + k      s→0               s→∞

all-pass filter:

F₁(s) + F₂(s) = 1
low-pass first-order ARMA filter:

y₁[n] = a y₁[n-1] + (1-a) x[n]

high-pass first-order ARMA filter:

y₂[n] = a y₂[n-1] + a (x[n] - x[n-1])

where a = 1/(1+kΔt)
low-pass first-order ARMA filter:

          k     Y(s)
F₁(s) = ————— = ————
        s + k   X(s)

(s + k) Y(s) = k X(s)
s Y(s) + k Y(s) = k X(s)
y′(t)  + k y(t) = k x(t)
(y(t) - y(t-Δt)) / Δt + k y(t) = k x(t)
(y[n] - y[n-1])  / Δt + k y[n] = k x[n]
(y[n] - y[n-1]) + kΔt y[n] = kΔt x[n]
(1 + kΔt) y[n] - y[n-1] = kΔt x[n]
y[n] = 1/(1+kΔt) y[n-1] + (kΔt)/(1+kΔt) x[n]
y[n] = a y[n-1] + (1-a) x[n]
where a = 1/(1+kΔt)

high-pass first-order ARMA filter:

          s     Y(s)
F₂(s) = ————— = ————
        s + k   X(s)

(s + k) Y(s) = s X(s)
s Y(s) + k Y(s) = s X(s)
y′(t)  + k y(t) = x′(t)
(y(t) - y(t-Δt)) / Δt + k y(t) = (x(t) - x(t-Δt)) / Δt
(y[n] - y[n-1])  / Δt + k y[n] = (x[n] - x[n-1]) / Δt
(y[n] - y[n-1]) + kΔt y[n] = x[n] - x[n-1]
(1 + kΔt) y[n] - y[n-1] = x[n] - x[n-1]
y[n] = 1/(1+kΔt) y[n-1] + 1/(1+kΔt) (x[n] - x[n-1])
y[n] = a y[n-1] + a (x[n] - x[n-1])
where a = 1/(1+kΔt)

complementary filter

          ┌──────────┐
x + n₁ ──→│   F(s)   │───┐
          └──────────┘   ↓+
                         ⊕──→ y
          ┌──────────┐   ↑+
x + n₂ ──→│ 1 - F(s) │───┘
          └──────────┘

n₁: high-frequency noise
n₂: low-frequency noise
F:   low-pass filter
1-F: high-pass filter
Y(s) = F(s) (X(s) + N₁(s)) + (1 - F(s)) (X(s) + N₂(s))
     = X(s) + F(s) N₁(s) + (1 - F(s)) N₂(s)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                           ≈ 0
原始訊號x。
使用兩種感測器進行測量,
受到干擾而失真,得到兩種訊號x + n₁與x + n₂。
利用互補濾波器,還原原始訊號x。

一般情況:雜訊頻譜加權平均,兩者中和,改善雜訊。
完美過濾雜訊:雜訊頻譜加權平均恰好是零,得到原本輸入訊號。

estimator

estimator

估計器分為四種,功能不同。目前沒有正式學術名稱。
(1) parameter estimator = system identification
    找到系統參數。
(2) model estimator
    找到近似的系統,導致輸出訊號幾乎相同。
(3) statistical estimator
    找到特殊統計指標,例如平均數、變異數。
(4) state estimator = observer
    針對state-space model,找到內部狀態。

predictor

估計器:找到系統參數(迴歸運算)。
預測器:提前找到下個輸出訊號。

迴歸之後就能預測。
找到系統參數之後,就可以預測輸出訊號啦。
一旦獲得當前輸出訊號,就可以估計下一個輸出訊號。

linear prediction / linear predictive coding

回憶一下system operation章節,
autoregressive model的regression運算。

線性預測linear prediction:
一串數列,每一個數值皆是先前緊鄰的K個數值的加權總和。
那麼系統模型就是autoregressive model。
那麼系統參數可用regression運算求得。
形成線性遞迴函數。
反覆套用線性遞迴函數、代入數列最後K個數值,
就能反覆預測下一個即將出現的數值。

線性預測編碼linear predictive coding:
壓縮:一串長長的數列,壓縮成一個線性遞迴函數,
   只儲存K個函數係數、K個初始數值。
解壓縮:反覆套用函數、代入數列最後K個數值,
    得到一串長長的數列。

controller

controller篇幅較長,另外開闢章節介紹。

controller應用十分廣泛,是世上最實用的演算法之一。

https://www.mathworks.com/solutions/control-systems/feedback-control-systems.html
https://ctms.engin.umich.edu/CTMS/index.php?aux=Home

system functionality — controller

controller

controller / plant

追加一個系統(控制器),用來控制原本系統(受控廠)。
控制器的輸出訊號,作為受控廠的輸入訊號。
控制器調整了輸入訊號,受控廠得到了特別的輸出訊號。
in theory:

reference ─┬─→ controller ──→ plant ──┬──→ output
           ↑                          ↓
           └──────────────←───────────┘

in practice:
                                    plant
                            ╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╮
reference ─┬─→ controller ─→┆actuator ─→ process┆──┬──→ output
           ↑                ╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╯  │
           └────────────── sensor ←────────────────┘
                       時域  頻域
reference signal 參考訊號  r[n]  R(s)
control signal   控制訊號  x[n]  X(s)
output signal    輸出訊號  y[n]  Y(s)
controller       控制器   k[n]  K(s)
plant            受控廠   g[n]  G(s)
actuator         致動器
process          程序
sensor           感測器   h[n]  H(s)

regulation / tracking

輸出訊號趨近(固定不變的)固定數值
輸出訊號趨近(即時改變的)參考訊號
regulator:

     ┌──────────┐  x  ┌─────────┐
  ╭─→│controller│────→│  plant  │──┬─→ y
  │  └──────────┘     └─────────┘  │
  ╰────────────────────────────────╯

tracker:

     ┌──────────┐  x  ┌─────────┐
r ──→│controller│────→│  plant  │──┬─→ y
  ╭─→└──────────┘     └─────────┘  │
  ╰────────────────────────────────╯

open-loop controller / closed-loop controller

open-loop controller:

 r ┌──────────┐ x ┌─────────┐ y
──→│controller│──→│  plant  │──→
   └──────────┘   └─────────┘

closed-loop controller:

 r   e=r-y ┌──────────┐ x ┌─────────┐  y
──→⊕──────→│controller│──→│  plant  │──┬─→
  -↑       └──────────┘   └─────────┘  │
   ╰───────────────────────────────────╯
開迴路控制:控制器的輸入是參考訊號。
閉迴路控制:控制器的輸入是誤差。
誤差是參考訊號減輸出訊號(跟統計學家的習慣相反)。
用膝蓋想也知道,誤差訊息量更多,於是效果更好。
其實兩者可以一併使用,尤其是非線性系統。
甚至沒有必要計算誤差,直接使用參考訊號與輸出訊號,尤其是多變數系統。
效果更好的正式說法是靈敏度較低:
(dT/T)/(dG/G),控制系統變化與受控廠變化的比值。
教科書談靈敏度,喜歡以P controller的穩態誤差當作範例。只是在誤導大眾。

PID controller

e(t) = r(t) - y(t)     error

x(t) = kp e(t) + ki ∫ e(t) dt + kd d/dt e(t)   control
       ^^^^^^^   ^^^^^^^^^^^^   ^^^^^^^^^^^^   signal
    proportional   integral      derivative
     controller   controller     controller

y(t) = x(t) ∗ g(t)     output
proportion    比例。乘上某個百分比的結果。
integral      積分。積分運算的結果。
derivative    導數。微分運算的結果。
P controller:原值,再乘上權重kp。誤差當前數值。
I controller:積分,再乘上權重ki。誤差前綴和。過往累計。
D controller:微分,再乘上權重kd。誤差相鄰差。瞬間變化。
closed-loop PID controller (in theory):

───┬──→ kp + ki/s + kd*s ──→ G(s) ──┬──→
  -└───────────────←────────────────┘

rate feedback PID controller (in practice):

───┬──→ kp + ki/s ───────┬─→ G(s) ──┬──→
  -│                    -└── kd*s ←─┤
   └────────────────←───────────────┘

PID tuning

此處討論tracking。參考訊號是步進函數(目標數值是1,當前數值是0)。

此時大家觀察下述指標,評定優劣。
rise time        tr  到達1的時間(從0.1到0.9的時間,避免計入緩速時段)
peak time        tp  到達第一個局部極值的時間(最高峰)
settling time    ts  到達穩態的時間(保持在0.99到1.01之內)
peak overshoot   Mp  超過1的部分(最高峰減1,單位百分比)
https://books.google.com.tw/books?id=QBAGCAAAQBAJ&pg=PA94

此時PID controller調整參數,輸出訊號會有下述效果。
kp  調整斜率、改變頻率。增益(效果是放大縮小)。
ki  調整平均、改變穩態。高通濾波器(效果是鋸齒化)
kd  調整曲率、改變振幅。低通濾波器(效果是平滑化)。

Ziegler–Nichols tuning:古聖先賢發明了經驗公式。兩種調參方法。
1. quarter decay ratio
2. ultimate sensitivity method
https://my.ece.utah.edu/~ece3510/Notes_PID_Tuning_long.pdf

範例,受控廠是二次微分方程式、0 zero 2 poles、-1 -2。

圖解,位於影片後段。

stability analysis

stability analysis

觀察系統的pole和zero,判斷何時穩定。
觀察特製圖表,調整pole和zero,以便達成穩定。
此處介紹四種圖表:
1. pole–zero plot
2. root locus plot
3. Nyquist plot
4. Bode plot

想要介紹這四種圖表,需要非常非常多的插圖,我實在懶得重製。
以下推薦幾本經典教科書,大家可以自己去找圖片。
《Linear Control System Analysis and Design: Conventional and Modern》
《Automatic Control Systems: Basic Analysis and Design》
《Modern Control Engineering》
除了學會圖表原理,也得學會製作圖表。
上個世紀,大家必須學會手工作圖。
這個世紀,大家只需學會用MATLAB指令製圖。
一個指令搞定一種圖表。
不過我沒有閒情逸致介紹MATLAB指令。

至於製圖演算法,MATLAB沒有公開,學校沒教,我也通靈不出來。
抱歉我沒法介紹。

pole–zero plot

極零圖:transfer function的poles與zeros。極X零O。
畫出poles和zeros的位置,以便判斷穩定性。
如果極X都在左半複平面(開區間、不含虛軸),則穩定。
如果右半複平面沒有極X(閉區間、包含虛軸),則穩定。

transfer function的poles,就是分母的zeros。
畫出分母的極零圖,亦可判斷穩定性。
如果右半複平面沒有零O,則穩定。

root locus plot

https://control.asu.edu/Classes/MAE318/318Lecture12.pdf
根軌跡圖:transfer function附帶一個參數(例如kp)。
窮舉參數值,畫出poles的變化軌跡,以便判斷穩定性。

1. open-loop controller:
r                x            y
───→ controller ──→ plant ────→
        K(s)         G(s)

transfer function:
K(s)G(s)

2. closed-loop controller:
r    e=r-y              x             y
───┬──────→ controller ──→ plant ──┬──→
  -↑           K(s)         G(s)   ↓
   └─────────────←─────────────────┘

transfer function:
  K(s)G(s)
————————————
1 + K(s)G(s)

3. 改寫成分式
K(s) = nᴋ(s) / dᴋ(s)
G(s) = nɢ(s) / dɢ(s)

transfer function:
  K(s)G(s)           nᴋ(s)nɢ(s)
———————————— = ———————————————————————
1 + K(s)G(s)   dᴋ(s)dɢ(s) + nᴋ(s)nɢ(s)

4. P controller:
K(s) = kp
nᴋ(s) = kp
dᴋ(s) = 1

transfer function:
  K(s)G(s)       kp G(s)         kp nɢ(s)             nɢ(s)     
———————————— = ——————————— = ———————————————— = ————————————————
1 + K(s)G(s)   1 + kp G(s)   dɢ(s) + kp nɢ(s)   dɢ(s)/kp + nɢ(s)

transfer function的poles,就是分母的根。
1 + kp G(s) = 0 或 dɢ(s) + kp nɢ(s) = 0 或 dɢ(s)/kp + nɢ(s) = 0
注意到,如果今天不是採用P controller,那麼需要重新推導。

現在要畫出transfer function的poles軌跡。kp = 0⋯∞。
當kp = [0,∞),根軌跡是分母1 + kp G(s)的根。
當kp = 0,根軌跡起點恰是dɢ(s)的根,即是G(s)的poles。
當kp → ∞,根軌跡終點恰是nɢ(s)的根,即是G(s)的zeros。

採用P controller的情況下,K(s) = kp只是一個倍率。
此時G(s)的zeros/poles,
恰是open-loop transfer function K(s)G(s)的zeros/poles。
導致大家認為root locus的起點和終點就是開迴路的poles/zeros。
然而一般情況下根本無法牽扯到開迴路。成為歷史共業。

古聖先賢發明了手工製圖方法。好幾條規則。
https://www.mit.edu/people/klund/weblatex/node8.html

5. closed-loop controller with sensor:
r    e=r-y              x             y
───┬──────→ controller ──→ plant ──┬──→
  -↑           K(s)         G(s)   │
   │                               │
   └─────────── sensor ←───────────┘
                 H(s)

transfer function:
    K(s)G(s)
————————————————
1 + K(s)G(s)H(s)

教科書定義K(s)G(s)H(s) = k L(s),但是內文根本沒有用到。來亂的。

Nyquist plot

https://lpsa.swarthmore.edu/Nyquist/NyquistStability.html
https://ocw.mit.edu/courses/18-04-complex-variables-with-applications-spring-2018/44f1db513a6a17d655abe0b6ff7748fc_MIT18_04S18_topic11.pdf
Nyquist圖:實施下述變換。
輸入:圍線(封閉路徑)(點集合),順時針圍住右半複平面。s = (-𝑖∞,+𝑖∞)
函數:逐點對應,s -> 1+K(s)G(s)。
輸出:新圍線。稱作Nyquist圖。
總結:右半複平面圍線,每一點s計算1+K(s)G(s),逐點描繪新圍線。
性質:s = (-𝑖∞,0]與s = [0,+𝑖∞)的新圍線呈上下鏡面對稱。
取巧:加一就是圍線往右位移。大家習慣畫K(s)G(s),再用-1取代原點。
取巧:當K(s) = kp,大家習慣畫G(s),再用-1/kp取代-1。

Cauchy's integral theorem:
複變函數f(z),圍線積分路徑圍住零個洞,圍線積分是0。

Cauchy's residue theorem:
複變函數f(z),圍線積分路徑圍住多個洞,圍線積分是2π𝑖乘上留數和。

Cauchy's argument principle:
複變函數f′(z)/f(z),圍線積分路徑圍住P個極、Z個零,圍線積分是2π𝑖(Z-P)。
援引winding number,上述圍線積分重新視作逆時針繞圈(Z-P)次。

Cauchy's argument principle:
複變函數f(z),有多個極零。
一條圍線,逆時針繞圈一次,圍住P個poles、Z個zeros,
該條圍線實施f(z)變換之後,
一條圍線,逆時針繞圈(Z-P)次,圍住原點。

Nyquist stability criterion:
閉迴路系統極零圖,右半複平面不含閉迴路系統的pole,則穩定。
閉迴路系統K(s)G(s)/(1+K(s)G(s))的pole,就是分母1+K(s)G(s)的zero。
分母1+K(s)G(s),有多個極零。
分母極零圖,右半複平面不含分母1+K(s)G(s)的zero,則穩定。
分母極零圖,右半複平面圍線,沒有圍住分母1+K(s)G(s)的zero,則穩定。
分母極零圖,令右半複平面有P個pole、Z個zero,令圍線是逆時針。
Nyquist圖,逆時針繞圈(-P)次,且圍住原點,則Z=0,則穩定。
(必須事先知道P是多少。因此此定理不實用。)

分母極零圖,右半複平面圍線,習慣畫順時針。
Nyquist圖,習慣畫K(s)G(s)而非1+K(s)G(s),用-1取代原點。
Nyquist圖,逆時針繞圈P次,且圍住-1,則穩定。

採用P controller的情況下,K(s) = kp只是一個倍率。
Nyquist圖,習慣畫G(s)而非K(s)G(s),用-1/kp取代-1。
Nyquist圖,逆時針繞圈P次,且圍住-1/kp,則穩定。
兩種製圖方式。
一、已知系統,以紙筆計算:
  先畫波特圖(頻譜),再依此畫Nyquist圖。
  s = (-𝑖∞,+𝑖∞)恰好對應傅立葉轉換的每種頻率的波。
二、未知系統,以儀器測量:
  大家假設K(s)G(s)的pole比zero數量多、分母比分子次方高,
  當s → ∞,則分母1+K(s)G(s) → 1。Nyquist圖可以畫得出來。
  即便系統不穩定,Nyquist圖在下述情況還是畫得出來:
  分母極零圖,右半複平面圍線,沒有途經分母1+K(s)G(s)的zero。
  也就是說,閉迴路系統的pole不在虛軸上面。

Bode plot

https://lpsa.swarthmore.edu/Bode/BodeReviewRules.html
波特圖:系統頻譜,分為振幅頻譜和相位頻譜。
    振幅頻譜橫軸與縱軸都取log,
    相位頻譜橫軸取log,兩者合稱波特圖。
振幅頻譜:採用log-log plot。橫軸頻率取log、縱軸振幅取log。
相位頻譜:採用semi-log plot。橫軸頻率取log、縱軸角度。

Bode stability criterion:
if open-loop K(s)G(s) is stable
and |K(s)G(s)| < 1 for all s: ∠K(s)G(s) ≡ 180° (mod 360°)
then closed-loop (K(s)G(s))/(1+K(s)G(s)) is stable.
先看相位頻譜,-180°是哪幾個頻率。
再看振幅頻譜,這幾個頻率的振幅均小於1,則穩定。
這是利用開迴路來看閉迴路是否穩定。
實務上恰恰相反。大家利用閉迴路來讓開迴路變得穩定。
兩種製圖方式。
一、已知系統,以紙筆計算:
  針對LTI system、並且已知zero/pole。
  一、根是零:振幅一段:過原點45°降線。(原點取log之後是1)
        相位一段:-90°水平線。
  二、實根:振幅兩段:0°水平線、45°降線。
       相位三段:0°水平線、45°降線、-90°水平線。
       分裂點:彎曲過渡,其截距3dB。
  三、共軛複根:振幅兩段:0°水平線、分裂點隆起、45°降線。
         相位兩段:0°水平線、分裂點漸變、-180°水平線。
  四、重根:振幅:水平線高度乘上倍率。降線斜率乘上倍率。
       相位:水平線高度乘上倍率。
       倍率是重根次數。
  五、上述都是極。極零升降相反。
  然而現在大家都用電腦軟體製圖。上述手法只能用來人工驗算。
二、未知系統,以儀器測量:
  針對LTI system、不知zero/pole。
  系統輸入:特定頻率的弦波,振幅一、相位零。
  系統輸出:以儀器測量其振幅和相位,描出波特圖一點。
  (即是frequency response。)
  如果系統不穩定,系統輸出無限大,波特圖有些頻率畫不出來。

compensator

compensator = filter

補償器用來追加poles或zeros。用途如同filter。
根據transfer function串聯乘法原理,補償器接在受控廠前面或後面都行。
PID controller + lead compensator是常見組合。

lead compensator  ≈ high-pass filter ≈ PD controller
lag compensator   ≈ low-pass filter  ≈ PI controller
notch compensator ≈ band-pass filter

lead compensator K(s) = (s-z)/(s-p) and |z| < |p| 左X右O
lag compensator  K(s) = (s-z)/(s-p) and |z| > |p| 左O右X

non-minimum phase system

右半複平面出現zeros。
當參考訊號是步進函數,則輸出訊號是先蹲後跳、聯結車轉彎。一開始衝向負值。

沒救了。compensator沒有辦法解決這種情況。
一種直覺的方式是追加poles抵銷zeros,分母分子約分之後一起消失不見。
然而實務上無法完全對準。
誤差、設備老化,都會導致zeros偏移。
稍有差池,輸出訊號就會偶然出現正負無限大。
導致電路過載燒掉、動力機械暴衝、反應槽爆炸。
非常危險。
實務上不能追加右半複平面poles抵銷右半複平面zeros。
我不知道有沒有其他解法。也許根本不需要解,順其自然就好。

gain margin / phase margin

兩個指標,用來粗略判斷前述四個調參指標以及穩定性。
增益邊界:相位為-180°=-π的頻率(波特圖相位曲線穿越橫軸之處)的振幅,減去0dB=1。
相位邊界:振幅為0dB=1的頻率(波特圖振幅曲線穿越橫軸之處)的相位,減去-180°=-π。
lead/lag compensator直接影響這兩個指標。

type 0/1/2 system

有0/1/2個pole等於零。
兩種出現情況:
一、補償器追加pole。
二、輸入訊號是constant/unit step/ramp function。
如果是情況二,穩態定義必須隨之改變,
例如零函數/零次常數函數/一次直線函數/二次拋物線函數。

second-order linear constant-coefficient differential equation

專著《Feedback Control of Dynamic Systems》。

second-order linear constant-coefficient differential equation

http://mocha-java.uccs.edu/ECE5540/ECE5540-CH01.pdf

system response

已知輸入、系統,求得輸出。
輸入:已知函數(教科書習慣討論下述三種)
系統:已知函數(教科書習慣討論一階微分方程式、二階微分方程式)
輸出:未知函數。
1. impulse response:脈衝函數。隔壁棚結構分析很常用,控制系統則不使用。
2. frequency response:複弦波。得到波特圖其中一個數值。
3. step response:單位步進函數。主角。例如啟動馬達至定速。

steady state

已知輸入、系統,求得輸出最終數值。
輸入:教科書習慣討論步進函數(step response)
系統:教科書習慣討論一階微分方程式、二階微分方程式
輸出:求得穩態
步進函數:傅立葉轉換是1/s。
針對FIR系統,輸入訊號採用步進函數,輸出訊號很快變成常數,稱作DC gain。

最終值定理:時域穩態(時間趨近無限大)=頻域乘上s後頻率趨近無限大。
系統改寫成transfer function形成分式。觀察分母:
一、實根(一次多項式):輸出指數衰減。
  步進函數恰好跟最終值定理互相抵銷,剩下系統。
二、共軛複根(二次多項式):輸出振盪。兩種表達方式。
 甲、decay rate σ and damped frequency ωd
 乙、damping ratio ζ and natural frequency ωn

其他情況:
一、連乘積:實係數多項式因式分解,總是得到一次暨二次多項式連乘積。
  因此只需討論實根、共軛複根兩種情況。
  最後讓transfer function相乘。
二、重根:一次暨二次多項式的次方。

tr/tp/ts/Mp

PID tuning的四個指標,可以畫成圖形,併入極零圖。

參考訊號是步進函數,R(s) = 1/s。
參考訊號R(s)、閉/開迴路系統T(s),串聯就是乘法,
得到輸出訊號Y(s) = R(s)T(s)。
極零圖基本不變,只多了一個pole位於原點。

教科書只針對開迴路,受控廠G(s)是二次微分方程式,沒有控制器K(s) = 1。
(教科書討論開迴路,但是照理應該討論閉迴路。因此以下結論沒有實用價值。)
(討論閉迴路,結果相當複雜,缺乏美感。)
(作者故意將閉迴路改成開迴路,然後挪到前面章節,我猜是為了美化。)

R(s) = 1/s                   unit step function

K(s) = 1                     no controller
               ωn²
G(s) = ———————————————————   second-order LTI system
       s² + 2 ζ ωn s + ωₙ²
                                ωn²
Y(s) = R(s)K(s)G(s) = ——————————————————————   open-loop
                      s(s² + 2 ζ ωn s + ωₙ²)   controller

y(t) = 1 - exp(-ζ ωn t) sin(ωd t + ϕ) / sqrt(1 - ζ²)

where ωd = ωn(1 - ζ²)
      ϕ = tan⁻¹(sqrt(1 - ζ²) / ζ)

根據y(t),推導tr/tp/ts/Mp的滿足條件(不等式),畫在複平面。
可行解位於交集(四張圖片左半複平面重疊區域)。
https://cf.ppt-online.org/files/slide/c/C4t2nPmwWsDjy96FoSxvVrU7Iq3gMHBY5ziX1l/slide-32.jpg

nonlinear system

sliding mode control

https://medium.com/@saurav310304/f9fc11c0177a

input-to-state stability

https://en.wikipedia.org/wiki/Input-to-state_stability

system design

system design

「系統設計」。創造系統功能,達成特定任務。

現實世界擁有極端狀況與突發狀況。各種邊邊角角,必須一一應對。現實世界擁有先天限制與外在條件。各種分歧矛盾,只能折衷妥協。即便是基礎的系統功能,也需要細膩的系統設計。

filter design

aliasing / anti-aliasing filter

取樣,連續波變離散波。
根據取樣定理,
頻率超過取樣頻率兩倍的連續波(高頻連續波、取樣間隔太大),
將得到頻率稍小的離散波(波長稍長)。
固定取樣頻率時,若上述連續波頻率增大,則上述離散波頻率減小。
從頻譜來看,差不多是往左鏡射、往左翻書,中譯疊頻。
解法是連續波事先做lowpass filter。
去除高頻連續波,讓它沒有東西用來鏡射翻書。
但是濾波器無法做到完美矩形,只能陡降斜下。
稱作sharp cutoff lowpass filter。
曲線越陡價格越貴。

spectral leakage / window function

傅立葉轉換,只有整數倍頻率波。
如果訊號不是整數倍頻率波所組成,那就完蛋了。
非整數倍頻率波,將分散到各個整數倍頻率波,漏的到處都是。
訊號預先乘以窗函數,才做傅立葉轉換,稍微有點療效。
窗函數也可以想成是一種濾波器:連綿圓丘,消滅非整數倍頻率波。

cutoff frequency

3dB cutoff frequency
https://en.wikipedia.org/wiki/Cutoff_frequency

Q factor

電子電路經常產生電磁振盪,訊號基本上都在抖動。
https://en.wikipedia.org/wiki/Q_factor

control system design

control system model

(1) optimal control
    additional objectives
(2) model predictive control
    additional constraints
(3) robust control
    additional parameters

專著《PID Controllers: Theory, Design, and Tuning》。

(1) model-following control
    reference signal is generated by your system model.
(2) cascade control
    control sequentially. control one by one.
(3) adaptive control / self-tuning control
    control recursively. controller of controller.
    (controller with additional parameters)
model-following control:

┌───────────┐ r   e ┌──────────┐  x  ┌─────────┐
│ reference │──→⊕──→│controller│────→│  plant  │──┬─→ y
│   model   │  -↑   └──────────┘     └─────────┘  │
└───────────┘   ╰─────────────────────────────────╯

cascade control:

     ┌──────┐   ┌──────┐   ┌────────┐   ┌────────┐
r ──→│ ctr2 │──→│ ctr1 │──→│ plant1 │─┬─│ plant2 │─┬→ y
  ╭─→└──────┘╭─→└──────┘   └────────┘ │ └────────┘ │
  │          ╰────────────────────────╯            │
  ╰────────────────────────────────────────────────╯

adaptive control / self-tuning control:

       ┌──────────┐     ┌─────────┐
    ╭──│controller│←────│estimator│←─╮
    │  └──────────┘     └─────────┘←╮│
    │                 ╭─────────────╯│
    ╰─→┌──────────┐ x │ ┌─────────┐ ╭╯
r ────→│controller│───┴→│  plant  │─┼─→ y
    ╭─→└──────────┘     └─────────┘ │
    ╰───────────────────────────────╯

theorem / principal / criterion

Youla–Kucera parametrization (Q parametrization)
Bode's sensitivity integral
LaSalle's invariance principle
small-gain theorem

system realization

system realization

「系統實現」。完成系統分析、系統設計之後,工程師利用電子元件、機械零件打造相似系統,以便模擬現實世界、改造現實世界。

我只聽過四種流派:

一、電子電路:風靡全世界。雖然台灣是地球上最大的電子零件生產基地,台灣也有專門設計電子電路的公司,但是我不太確定台灣是否有這方面的專家。有言道:十萬青年十萬肝,GG輪班救台灣。關鍵字:電學、電子學、電路學、積體電路設計。

二、機械結構:我一竅不通。相關產業從基礎到進階,依序是工具機產業、重機械產業、運輸工具產業、軍工產業。台灣主攻工具機產業。有言道:機械所學乃理工之大成,出路非常之廣。關鍵字:力學、材料力學、機構設計、微機電系統。

三、生化反應:發展中。雖然台灣之前打算成立藥物代工廠、學名藥設計實驗室,但是以失敗告終。有言道:一日生科,終生科科。關鍵字:化學動力學、酵素動力學、藥物動力學、系統生物學。

四、深度學習:最近十年才剛萌芽。已經做到生成/濾波,正在嘗試估計/控制。正在經歷大浪潮,準備迎接大泡沫。有言道:站在風口上,豬都會飛。關鍵字:人工智慧、機器學習、深度學習。

electronic circuit

比方說,RC電路可以製作low-pass filter與high-pass filter,RLC電路可以製作oscillator。

比方說,phase-locked loop是一種controller,用來控制訊號的相位,由三個元件構成。

phase-locked loop:
1. voltage-controlled oscillator
2. phase detector
3. loop filter (e.g. PID controller)

比方說,voltage regulator穩壓器,用來控制電壓。大部分家電和3C產品都有穩壓器。教學文章

專著《Introduction to Circuit Analysis》

mechanical structure

比方說,單一機件的運動,根據牛頓運動定律、線性阻尼,形成二階線性常係數微分方程式。整個機構的運動,形成方程組,對應到線性非時變系統。

比方說,利用脈衝響應檢測橋樑強度。拿個鐵鎚迅速敲一下,輸入訊號就是脈衝函數。均勻安裝震動感測器,就能得到輸出訊號。訊號處理只談一維數列,橋樑則是三維張量。

專著《Robot Modeling and Control》

biochemical reaction

比方說,Goodwin oscillator與Elowitz–Leibler repressilator。

專著《Mathematical Modeling in Systems Biology: An Introduction》

deep learning

比方說,generative adversarial network是adaptive control。

專著《Data-Driven Science and Engineering: Machine Learning, Dynamical Systems, and Control》