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], ...)
系統視作函數,同時滿足三種性質:
因果性、時間不變性、線性(加性、倍性)。
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。
              中譯 意譯
cause (noun)  原因 原因
cause (verb)  導致 因而
cause (conj)  因為 原因是(because的精簡講法)
causal (adj)  因果 原因的

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 system / autoregressive system

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

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

denoted by recurrence:

MA system    y[n] = f(x[n], x[n-1], ..., x[n-p])
AR system    y[n] = f(      y[n-1], ..., y[n-q])
ARMA system  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 system    y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
AR system    y[n] =           b₁ y[n-1] + ... + b₉ y[n-q]
ARMA system  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 system    a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p] = y[n]
AR system    b₀ y[n] + b₁ y[n-1] + ... + b₉ y[n-q] = 0
ARMA system  a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
           = b₀ y[n] + b₁ y[n-1] + ... + b₉ y[n-q]
ARMA system = linear constant-coefficient difference equation
MA system、AR system、ARMA system。
訊號學與統計學的定義完全不同。
此處採用訊號學的定義。
有件事情需要考慮:
最終項y[n]、其餘項y[n-1]...y[n-q],放在等號同側還是異側。
係數b[0]相差一個負號。

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

system model

LTI system
 ├ linear constant-coefficient difference equation
 │  ├ MA system
 │  ├ AR system
 │  └ ARMA system
 └ 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。

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

月球有點遙遠,我們講點最近的。現在正在流行無人機。無人機可以用於稻田噴藥、山區搜救、地圖繪製、軍事武器。無人機飛行控制,即是採用了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], ..., x[n-p], u[n], ..., u[n-q])
⎱ y[n]   = gₙ(x[n], ..., x[n-r], u[n], ..., u[n-s])

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

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

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

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

state-space model

scalar-valued representation:
⎰ x[n+1] = fₙ(x[n], ..., x[n-p], u[n], ..., u[n-q])
⎱ y[n]   = gₙ(x[n], ..., x[n-r], u[n], ..., u[n-s])

vector-valued representation:
⎰ x⃗[n+1] = Fₙ(x⃗[n], u⃗[n])
⎱ y⃗[n]   = Gₙ(x⃗[n], u⃗[n])

LTI state-space model

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 transition / state estimation

狀態變遷:內部狀態從x[n]變成x[n+1]。藉由第一道方程式。
狀態估計:已知輸入訊號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 system         | AR system
???               | AR system --> MA system
state-space model | ARMA system --> MAMA system
system model      | with stochastic transition
----------------------------------------------------
AR system         | Markov chain
???               | hidden Markov model
state-space model | input–output hidden Markov model
AR system:

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 system

MA system:

  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。卷積交換律。
原理是頭尾顛倒計算,總和一樣。

AR system

undefined。
卷積核未定義。好比除以零。
畢竟沒有輸入訊號。

ARMA system

進階的系統模型,也可以改寫成卷積,求得卷積核。
然而過程更加複雜。請見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 system

MA system:

  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 system

AR system:

  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 system

ARMA system:

    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 system = all-zero system
AR system = 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 system:

    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。
好長。
transfer function of integration:

y(t) = ∫ x(t) dt

Y(s) = X(s) / s

       Y(s)
F(s) = ———— = 1/s
       X(s)

discretization by trapezoidal rule:

       ⌠ t = nΔt
y(t) = ⎮               x(t) dt
       ⌡ t-1 = (n-1)Δt

y[n] - y[n-1] = (Δt/2) (x[n] + x[n-1])

(1 - z⁻¹) Y(z) = (Δt/2) (1 + z⁻¹) X(z)

       Y(z)   (Δt/2) (1 + z⁻¹)   Δt (z + 1)
F(z) = ———— = ———————————————— = ——————————
       X(z)       (1 - z⁻¹)       2 (z - 1)

bilinear transform:

F(s) -> F(z)

       Δt (z + 1)
1/s -> ——————————
       2 (z - 1)

     2 (z - 1)
s -> ——————————
     Δt (z + 1)
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 system可以輕鬆得到卷積核。
現在額外引入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 system:

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 system:
(1) system parameter: one amplification factor
(2) stability: all poles at origin
(3) convergence: converge to zero at infinity

ARMA system:
(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 system

MA(1) system:

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 system

AR(1) system:

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

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

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

ARMA system

ARMA(1,1) system:

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) system:

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)。

sparse Fourier transform

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

Laplace transform

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

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

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

system analysis — system operation

引言

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

MA system

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 system  │ 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」。
第一種方式:

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

順帶一提,X是常對角矩陣Toeplitz matrix。
然而,常對角矩陣求得平方誤差最小的解,沒有快速演算法。
常對角矩陣求得唯一解,才有快速演算法。
下一個方式正是弄出唯一解。
第二種方式:

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變成對稱常對角矩陣symmetric 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 system

representation

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

operation

AR system  │ 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 system。多了一種方式。
一、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 representation

引言

訊號學家自創一個同義詞彙realization。
硬要區分的話嘛:
representation是表示法本身。
realization是表示法轉換過程。

system realization原義是指找到系統模型、系統參數,然後實作系統。
訊號學家沒有考慮清楚,胡亂用詞。
system realization演變為完全不相干的意義:系統參數改寫成矩陣。
成為歷史共業。

system representation

polynomial representation / matrix 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]

matrix representation:

x⃗[n+1] = A x⃗[n] + B u⃗[n]
線性函數、線性遞迴函數、線性非時變系統,都可以改寫成矩陣。
兩串系統參數(a₀, ..., aₚ) (b₀, ..., b₉)可以改寫成兩個常對角矩陣A B。

state-space representation / phase-variable representation

state-space representation:

   ⎰ x₁[n+1] = a x₁[n] + b x₂[n]
   ⎱ x₂[n+1] = c x₁[n] + d x₂[n]

=> ⎡ x₁[n+1] ⎤ = ⎡ a b ⎤ ⎡ x₁[n] ⎤
   ⎣ x₂[n+1] ⎦   ⎣ c d ⎦ ⎣ x₂[n] ⎦
 
=> x⃗[n+1] = A x⃗[n]

phase-variable representation:

   x[n+3] + a₂ x[n+2] + a₁ x[n+1] + a₀ x[n] = 0

   ⎡ (x+⃡0)+⃡1 ⎤   ⎡  0   1   0  ⎤ ⎡ x+⃡0 ⎤
=> ⎢ (x+⃡1)+⃡1 ⎥ = ⎢  0   0   1  ⎥ ⎢ x+⃡1 ⎥
   ⎣ (x+⃡2)+⃡1 ⎦   ⎣ -a₀ -a₁ -a₂ ⎦ ⎣ x+⃡2 ⎦

=> x⃗[n+1] = A x⃗[n]
有兩種特殊系統,可以硬是套用矩陣表示法。
矩陣不再是常對角矩陣。
一、狀態空間表示法:
  MIMO系統、一階常係數差分/微分方程組。
  將一個時刻的每種訊號併成向量。此向量是狀態。
  經典應用是數值模擬的數值方案。
二、相變數表示法:
  SISO系統、n階常係數差分/微分方程式。
  將連續n個訊號數值併成向量。此向量是滑動視窗。
  經典應用是遞迴數列的快速冪演算法。

companion matrix realization

此處針對相變數表示法。
高階差分/微分方程式,化作一階差分/微分方程組。

AR system:化作y⃗[n+1] = B y⃗[n]。
ARMA system:化作y⃗[n+1] = A x⃗[n] + B y⃗[n]。
3rd-order linear constant-coefficient difference equation:

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

=> y[n+3] = - b₂ y[n+2] - b₁ y[n+1] - b₀ y[n]

=> y+⃡3 = - b₂(y+⃡2) - b₁(y+⃡1) - b₀y      number -> sequence

   ⎧ (y  )+⃡1 = y+⃡1                      3rd-order equation
=> ⎨ (y+⃡1)+⃡1 = y+⃡2                      -> 1st-order system 
   ⎩ (y+⃡2)+⃡1 = - b₂(y+⃡2) - b₁(y+⃡1) - b₀y

   ⎧ y₀+⃡1 = y₁
=> ⎨ y₁+⃡1 = y₂                          rename variables
   ⎩ y₂+⃡1 = -b₂y₂ - b₁y₁ - b₀y₀

   ⎡ y₀+⃡1 ⎤   ⎡  0   1   0  ⎤ ⎡ y₀ ⎤    matrix representation
=> ⎢ y₁+⃡1 ⎥ = ⎢  0   0   1  ⎥ ⎢ y₁ ⎥    (companion matrix)
   ⎣ y₂+⃡1 ⎦   ⎣ -b₀ -b₁ -b₂ ⎦ ⎣ y₂ ⎦

=>   x⃗+⃡1    =        A          x⃗       rename variables

=>  x⃗[n+1]  =        A         x⃗[n]     sequence -> number
5th-order linear constant-coefficient difference equation:

⎡ y₀+⃡1 ⎤   ⎡  0   1   0   0   0  ⎤ ⎡ y₀ ⎤
⎢ y₁+⃡1 ⎥   ⎢  0   0   1   0   0  ⎥ ⎢ y₁ ⎥
⎢ y₂+⃡1 ⎥ = ⎢  0   0   0   1   0  ⎥ ⎢ y₂ ⎥
⎢ y₃+⃡1 ⎥   ⎢  0   0   0   0   1  ⎥ ⎢ y₃ ⎥
⎣ y₄+⃡1 ⎦   ⎣ -b₀ -b₁ -b₂ -b₃ -b₄ ⎦ ⎣ y₄ ⎦
3rd-order linear constant-coefficient differential equation:

   d³            d²            d
   ——— y(t) + b₂ ——— y(t) + b₁ —— y(t) + b₀ y(t) = 0
   dt³           dt²           dt

=> y‴(t) + b₂ y″(t) + b₁ y′(t) + b₀ y(t) = 0

=> y‴(t) = - b₂ y″(t) - b₁ y′(t) - b₀ y(t)

   ⎧ (y )′ = y′                       3rd-order equation
=> ⎨ (y′)′ = y″                       -> 1st-order system
   ⎩ (y″)′ = -b₂y″ - b₁y′ - b₀y

   ⎧ y₀′ = y₁
=> ⎨ y₁′ = y₂                         rename variables
   ⎩ y₂′ = -b₂y₂ - b₁y₁ - b₀y₀

   ⎡ y₀′ ⎤   ⎡  0   1   0  ⎤ ⎡ y₀ ⎤   matrix representation
=> ⎢ y₁′ ⎥ = ⎢  0   0   1  ⎥ ⎢ y₁ ⎥   (companion matrix)
   ⎣ y₂′ ⎦   ⎣ -b₀ -b₁ -b₂ ⎦ ⎣ y₂ ⎦

=>   x⃗′    =        A          x⃗      rename variables

similarity transformation

   decomposition             A = TA'T⁻¹
=> similarity transformation A' = T⁻¹AT

拿任意一種可逆矩陣T做相似變換。
對角化也是一種相似變換。變換矩陣是特徵向量。

minimal realization

數學稱作正則化canonicalization。
物理學稱作解耦合decoupling。
訊號學稱作最小實現minimal realization。
三者概念相同,只是著重的事情稍微有點差別。

   eigendecomposition A = EΛE⁻¹
=> diagonalization    Λ = E⁻¹AE

總之一句話:矩陣對角化。
變換矩陣A實施相似變換成為對角矩陣A' = Λ = E⁻¹AE。
對角線就是特徵值。將零集中在右下角。
最後去掉特徵值是零的多餘維度。
當A是同伴矩陣companion matrix。
特徵向量E恰是多項式內插矩陣Vandermonde matrix的轉置。

companion matrix:

    ⎡  0   1   0  ⋯  0    ⎤
    ⎢  0   0   1  ⋯  0    ⎥
A = ⎢  0   0   0  ⋯  0    ⎥
    ⎢  0   0   0  ⋯  1    ⎥
    ⎣ -a₀ -a₁ -a₂ ⋯ -aₙ₋₁ ⎦

eigenproblem:

Ax = λx

eigendecomposition:

A = EΛE⁻¹

eigenvalues:

    ⎡ λ₀           ⎤
Λ = ⎢    λ₁        ⎥   diagonal matrix
    ⎢       ⋱      ⎥
    ⎣         λₙ₋₁ ⎦

eigenvectors:

    ⎡ λ₀⁰   λ₁⁰   ⋯ λₙ₋₁⁰   ⎤
    ⎢ λ₀¹   λ₁¹   ⋯ λₙ₋₁¹   ⎥   transpose of 
E = ⎢ λ₀²   λ₁²   ⋯ λₙ₋₁²   ⎥   Vandermonde matrix
    ⎢ :     :       :       ⎥
    ⎣ λ₀ⁿ⁻¹ λ₁ⁿ⁻¹ ⋯ λₙ₋₁ⁿ⁻¹ ⎦

表格

                         AR system
╭────────────────────────────┬────────────────────────────╮
│ polynomial representation  │ matrix representation      │
╞════════════════════════════╧════════════════════════════╡
│ time domain                                             │
╞════════════════════════════╤════════════════════════════╡
│ sequence                   │ companion matrix           │
│ b = (b₀, b₁, b₂, ⋯)        │     ⎡  0   1   0     0    ⎤│
│                            │     ⎢  0   0   1     0    ⎥│
│                            │ B = ⎢  :   :   :  ⋱  :    ⎥│
│                            │     ⎢  0   0   0     1    ⎥│
│                            │     ⎣ -b₀ -b₁ -b₂ ⋯ -bₙ₋₁ ⎦│
├────────────────────────────┤────────────────────────────┤
│ linear recurrence          │ linear recurrence          │
│ y[n] = (-b₁/b₀) y[n-1]     │ y⃗[n] = B y⃗[n-1]            │
│      + (-b₂/b₀) y[n-2]     │                            |
│      + ...                 │                            │
├────────────────────────────┤────────────────────────────┤
│ expansion                  │ expansion                  │
│ y[n] = .......             │ y⃗[n] = Bⁿ y⃗[0]             │
├────────────────────────────┤────────────────────────────┤
│ convolution                │ Toeplitz matrix            │
│ y +⃡ 1 = b * y              │ y⃗ +⃡ 1 = 𝐺 y⃗                │
│                            │                            │
│                            │     ⎡ b₀  0   0   ⋯  ⎤     │
│                            │     ⎢ b₁  b₀  0   ⋯  ⎥     │
│                            │ 𝐺 = ⎢ b₂  b₁  b₀  ⋯  ⎥     │
│                            │     ⎢ b₃  b₂  b₁  ⋯  ⎥     │
│                            │     ⎣ :   :   :   ⋱  ⎦     │ 
╞════════════════════════════╧════════════════════════════╡
│ z-domain                                                │
╞════════════════════════════╤════════════════════════════╡
│ generating function        │ matrix pencil              │
│ B(z) = b₀z⁰ + b₁z⁻¹ + ...  │ zI - B                     │
├────────────────────────────┤────────────────────────────┤
│ characteristic equation    │ characteristic equation    │
│ B(z) = 0                   │ det(zI - B) = 0            │
├────────────────────────────┤────────────────────────────┤
│ roots (poles)              │ eigenvalues (poles)        │
│ z = λ₁, λ₂, ...            │ z = λ₁, λ₂, ...            │
╰────────────────────────────┴────────────────────────────╯

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 system
   開迴路->輸入的加權總和->輸入只取幾項->有限脈衝響應
2. LTI IIR system = ARMA system
   閉迴路->輸入與輸出的加權總和->輸出強行展開->輸入取所有項->無限脈衝響應

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
 │  └ Y = AX + E
 └ stochastic LTI IIR system
    ├ Y = (A/B)X + E
    ├ Y = (A/B)X + (1/B)E
    ├ Y = (A/B)X + (C/B)E
    └ Y = (A/B)X + (C/D)E     skip (z)
有些訊號學書籍替這些基礎模型命名。
名稱直接引用統計學術語,意義卻完全對不上,牛頭不對馬嘴。
下述名稱取自專著《System Identification: Theory for the User》。
很不幸的,MATLAB也採用這些名稱。

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 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

system model:

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

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

Y(z) = A(z)X(z) + E(z)

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 system,
可以直接估計系統參數,
也可以間接估計系統頻譜。

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

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

system model:

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

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

Y(z) = A(z)X(z) + E(z)

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

system 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

(1) Y = (A/B)X + E
(2) Y = (A/B)X + (1/B)E
(3) Y = (A/B)X + (C/B)E
(4) Y = (A/B)X + (C/D)E     skip (z)
(1)
                 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]

(2)
                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]

(3)
      ┌─────┐
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]

(4)
      ┌─────┐ 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 Y = (A/B)X + (C/D)E:

θ̂ = 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 Y = (A/B)X + (C/D)E:

θ̂ = 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

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

random number generator

隨機數生成器:產生一串亂數。請見本站文件「random number」。
比方說linear congruential generator就是AR system。

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章節,
AR system的regression運算。

線性預測linear prediction:
一串數列,每一個數值皆是先前緊鄰的K個數值的加權總和。
那麼系統模型就是AR system。
那麼系統參數可用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

PID controller

用於線性控制。請見後面章節。
保守估計,日常生活當中有90%以上的控制器都是PID控制器。
實際應用,例如電流穩壓器、抽水馬達、電梯、冷凍櫃、烤箱、機械手臂、……。

sliding mode controller

用於非線性控制。有空再來介紹。
https://medium.com/@saurav310304/f9fc11c0177a

system functionality — PID controller

controller

controller / plant

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

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

in practice:
                                    plant
                        ╭╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮
      ┌────────────┐  x ╎ ┌──────────┐  ┌─────────┐ ╎
r ───→│ controller │─────→│ actuator │─→│ process │───┬──→ y
   ╭─→└────────────┘    ╎ └──────────┘  └─────────┘ ╎ │
   │                    ╰╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ │
   │                    ┌────────┐                    │
   ╰────────────────────│ sensor │←───────────────────╯
                        └────────┘
reference signal 參考訊號  r(t) R(s)
control signal   控制訊號  x(t) X(s)
output signal    輸出訊號  y(t) Y(s)
controller       控制器   k(t) K(s)
plant            受控廠   g(t) G(s)
actuator         致動器
process          程序
sensor           感測器   h(t) H(s)

標記方式是continuous-time system。
由於教科書習慣講continuous-time system。

regulator / tracker

輸出訊號趨近(固定不變的)固定數值。r是常數函數。
輸出訊號趨近(即時改變的)參考訊號。r是任意函數。

PID controller

linear control

線性控制是主題名稱。
線性控制專門討論下述情況:
當控制器和受控廠都是LTI system,那麼整體也是LTI system。

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  │──┬─→
  -↑       └────────────┘   └─────────┘  │
   ╰─────────────────────────────────────╯
閉迴路控制器,參考訊號跟輸出訊號相減。
按理來說,應該畫在controller方框裡面。
簡單起見,直接畫在controller方框外面。

當控制器和受控廠都是LTI system,
那麼閉迴路控制器整體也是LTI system。
畢竟訊號相減仍是LTI system。
開迴路控制器:控制器的輸入是參考訊號。
閉迴路控制器:控制器的輸入是誤差。
誤差是參考訊號減輸出訊號(跟統計學家的習慣相反)。
用膝蓋想也知道,誤差訊息量更多,於是效果更好。
其實兩者可以一併使用,尤其是非線性系統。
甚至沒有必要計算誤差,直接使用參考訊號與輸出訊號,尤其是多變數系統。
效果更好的正式說法是靈敏度較低:
(dK/K)/(dG/G),控制系統變化與受控廠變化的比值。
教科書談靈敏度,喜歡以P controller的穩態誤差當作範例。只是在誤導大眾。

PID controller

PID控制器有兩種,功效相同。
此處只介紹第一種。
closed-loop PID controller (in theory):

 r   e=r-y ┌──────────────────┐ x ┌─────────┐ y
──→⊕──────→│ kp + ki/s + kd⋅s │──→│  plant  │──┬─→
  -↑       └──────────────────┘   └─────────┘  │
   ╰───────────────────────────────────────────╯

rate feedback PID controller (in practice):

 r   e=r-y ┌──────────────┐     x ┌─────────┐ y
──→⊕──────→│ kp + ki/s    │──→⊕──→│  plant  │──┬─→
  -↑       └──────────────┘  -↑   └─────────┘  │
   │                          │   ┌─────────┐  │
   │                          ╰───│  kd⋅s   │←─┤
   │                              └─────────┘  │
   ╰───────────────────────────────────────────╯
error:

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

E(s) = R(s) - Y(s)

control signal:

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

X(s) = (kp + ki/s + kd⋅s) E(s)

output signal:

y(t) = x(t) ∗ g(t)

Y(s) = X(s) G(s)
proportion    比例。乘上某個百分比的結果。
integral      積分。積分運算的結果。
derivative    導數。微分運算的結果。
P controller:原值,再乘上權重kp。誤差當前數值。
I controller:積分,再乘上權重ki。誤差累積和。過往累計。
D controller:微分,再乘上權重kd。誤差相鄰差。瞬間變化。

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,判斷何時穩定。
使用PID控制器(其實只有P),調整整個系統的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)

改寫成分式

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)
3. 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
4. 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

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) override control
    alternative controller.
(3) cascade control
    control sequentially. control one by one.
(4) adaptive control / self-tuning control
    control recursively. controller of controller.
    (controller with additional parameters)
model-following control:

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

override control:

    ╭─────────────────────────────────────╮
    ╰─→┌─────────────┐                    │
r₁ ───→│ controller₁ │─●     ┌─────────┐  │ 
       ╞═════════════╡   🮣●→│  plant  │──┼─→ y
r₂ ───→│ controller₂ │─●🮠   └─────────┘  │
    ╭─→└─────────────┘                    │
    ╰─────────────────────────────────────╯

cascade control:

     ┌──────┐   ┌──────┐   ┌────────┐   ┌────────┐
r ──→│ ctr₂ │──→│ ctr₁ │──→│ plant₁ │─┬─│ plant₂ │─┬→ y
  ╭─→└──────┘╭─→└──────┘   └────────┘ │ └────────┘ │
  │          ╰────────────────────────╯            │
  ╰────────────────────────────────────────────────╯

adaptive control / self-tuning control:

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

theorem / principle / criterion

Youla–Kucera parametrization (Q parametrization)
Bode's sensitivity integral
LaSalle's invariance principle
input-to-state stability
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》