system
system
「系統」。多變量函數,輸入一串訊號、輸出一串訊號。
訊號每項拆開來看,系統由許多函數組成。
簡易範例:每項加1的系統、每項延遲1時刻的系統。
當全部函數都相同,僅索引值(時刻)不同,可以簡化成一個函數。每到一個新時刻,輸入一個新數字、輸出一個新數字。
system model
system model
以訊號格式分類 1. SISO system / MIMO system 2. discrete-time system / continuous-time system 3. open-loop system / closed-loop system
SISO system / MIMO system
輸入輸出只有一串訊號 輸入輸出有許多串訊號
SISO system:
┌─────┐
x ────→│ f │────→ y
└─────┘
MIMO system:
x₀ ────→┌─────┐────→ y₀
x₁ ────→│ f │────→ y₁
x₂ ────→└─────┘
discrete-time system / continuous-time system
訊號是離散數列/連續函數。 sequence x[n] = (x[0], x[1], x[2], ...) function x(t) 訊號數值則沒有明講。 訊號數值可以離散(整數,經過量化)、也可以連續(浮點數)。 只談橫軸,不談縱軸。 後綴-time就是為了強調此事。但是很多人省略後綴-time。
函數x(t),經常省略括號,寫成函數x。 數列x[n],亦可省略括號,寫成數列x。 為了避免混淆數列和數字,以下內容將採用此標記方式: 數列x:一連串數字x[0] x[1] ...。 數字x[n]:數列第n項。
discrete-time system: x[n] y[n] ↑ ╷╷ ┌─────┐ ↑ ╷╷ ├┴┴┴┴┬┬┬┬→n ────→│ f │────→ ├┴┴┴┴┬┬┬┬→n │ ╵╵ └─────┘ │ ╵╵ continuous-time system: x(t) y(t) ↑ /‾\ ┌─────┐ ↑ /‾\ ├─̸───⃥────̸→t ────→│ f │────→ ├─̸───⃥────̸→t │ \_/ └─────┘ │ \_/
open-loop system / closed-loop system
開迴路系統:輸入訊號經過系統得到輸出訊號 閉迴路系統:輸出訊號也做為輸入訊號
input signal: x = (x[0], x[1], ...) output signal: y = (y[0], y[1], ...) open-loop system: y = f(x) closed-loop system: y = f(x,y)
SISO system (denoted by functional): y = f(x,y) SISO system (denoted by functions): ⎧ y[0] = f₀(x[0], x[1], x[2], ..., y[1], y[2], ...) ⎨ y[1] = f₁(x[0], x[1], x[2], ..., y[0], y[2], ...) ⎩ : : 等號兩側的y不能有相同時刻。為了形成函數。 另外也不能出現迴圈。 以圖論術語來說:必須是有向無環圖DAG。
open-loop system:
┌─────┐
x ────→│ f │────→ y
└─────┘
closed-loop system:
┌─────┐
x ────→│ f │──┬─→ y
┌─→└─────┘ │
└───────────┘
system — LTI system
引言
系統模型千變萬化,其中線性非時變系統是重要特例。電子系統、機械系統幾乎都是這種特例。教科書優先介紹這種特例。
線性非時變系統的演算法,已經被鑽研得相當透徹。本世紀完全沒有變革。即便學會這些演算法,你也難以推陳出新。線性非時變系統的演算法,只是衍生變種。它們源自數值線性代數、矩陣運算。即便學會這些演算法,那也只是細枝末節。
MATLAB專精矩陣運算,也專精訊號處理。線性非時變系統的演算法,MATLAB一應俱全。一行指令就能解決問題。大家沒有閒情逸致鑽研演算法細節。我也沒有閒情逸致介紹MATLAB指令。
理論上與實務上都已大功告成。剩下的就是整理了。
system model
system model
以數學性質分類 4. causal system / noncausal system 5. time-invariant system / time-variant system 6. linear system / nonlinear system
重要特例 linear time-invariant causal system (LTI system)
causal system / time-invariant system / linear system
因果系統:輸入變數索引值小於等於輸出變數索引值。 非時變系統:輸入移位導致輸出移位。 線性系統:輸入相加導致輸出相加、輸入倍率導致輸出倍率。
(1) causal system
⎧ y[0] = f₀(x[0])
⎪ y[1] = f₁(x[0], x[1], y[0])
⎨ : :
⎪ y[n] = fₙ(x[0], ..., x[n], y[0], ..., y[n-1])
⎩ : :
y只能是過去時刻。為了形成函數。
(2) time-invariant system (translation-invariant system)
y +⃡ k = f(x +⃡ k, y +⃡ k)
⎧ y[0+k] = f₀(x[0+k], x[1+k], ...)
⎨ y[1+k] = f₁(x[0+k], x[1+k], ...)
⎩ : :
<=> fₙ₊ₖ(x[0], x[1], ...) = fₙ(x[k], x[k+1], ...)
∀n≥0 and ∀k≥0
(3-1) additive system
y₁ + y₂ = f(x₁ + x₂, y₁ + y₂)
⎧ y₁[0] + y₂[0] = f₀(x₁[0] + x₂[0], x₁[1] + x₂[1], ...)
⎨ y₁[1] + y₂[1] = f₁(x₁[0] + x₂[0], x₁[1] + x₂[1], ...)
⎩ : :
(3-2) homogeneous system of order 1
k y = f(k x, k y)
⎧ k y[0] = f₀(k x[0], k x[1], k x[2], ...)
⎨ k y[1] = f₁(k x[0], k x[1], k x[2], ...)
⎩ : :
Now you can understand why people prefer functional.
An illustration is even better. However, I am lazy to do that.
x是數列/函數的名稱。 x +⃡ k是索引值/輸入變數加k。x[n+k]。 x + k是元素值/輸出變數加k。x[n]+k。 x +⃡ k是我自己發明的運算符號。 當輸入變數、輸出變數有許多個, 那麼這種運算符號無法勝任。 偏微分運算也有一樣的問題,詳情請見這篇文章: https://math.stackexchange.com/questions/3266639/ 運算符號必須標記變數編號。這些事情留給後人解決吧。
linear time-invariant causal system (LTI system)
大家習慣省略causal。
在線性非時變系統當中, 因果系統:遞迴函數的輸入變數都是過去時刻與當前時刻。 非時變系統:遞迴函數不因時刻而變。 線性系統:遞迴函數是線性函數。
causal & time-invariant <=> recurrence
y[n] = f(x[n], ..., x[n-p], y[n-1], ..., y[n-q])
where f ≜ f₀ = f₁ = ...
p ≥ 0
q ≥ 1
x[n] ≜ 0 , if n < 0
y[n] ≜ 0 , if n < 0
therefore, LTI system can be denoted by recurrence.
(1) causal system
p ≥ 0 and q ≥ 1
(2) time-invariant system
f₀ = f₁ = ...
(3) linear system
y₁[n] + y₂[n] = f(x₁[n] + x₂[n], ...)
k y[n] = f(k x[n], ...)
中譯 意譯
cause (noun) 原因 原因
cause (verb) 導致 因而
cause (conj) 因為 原因是(because的精簡講法)
causal (adj) 因果 原因的
系統視作函數,同時滿足三種性質: 因果性、時間不變性、線性(加性、倍性)。 causal和linear是肯定詞彙。time-invariant卻是否定詞彙。 其中必有蹊蹺。 不變和等變是兩種不同的概念。 一、X不變系統:輸入套用X,輸出仍然不變。 二、X等變系統:輸入套用X,輸出也會套用X。 1. X-invariant system: f(X(x,y)) = f(x,y) 2. X-equivariant system: f(X(x,y)) = X(y) 此處應是等變! 本來應該稱作時間等變系統time-equivariant system, 結果卻誤植為時間不變系統time-invariant system。 古人分不清楚兩者差別。成為歷史共業。
訊號學稱作時間不變系統time-invariant system。 數學稱作位移不變系統translation-invariant system。 很少人稱作移位不變系統shift-invariant system。
LTI system
linear constant-coefficient difference equation / linear constant-coefficient differential equation
線性非時變系統,教科書習慣介紹這兩種: 線性常係數差分方程式:離散時間系統。加權總和。用於電腦計算。 線性常係數微分方程式:連續時間系統。微分加權總和。用來描述物理現象。 注意到,權重是常數。 也就是說,方程式的係數是常數,不隨時刻而變。 線性非時變系統,可以表示成線性遞迴函數。 方程式的變數,源自輸入訊號、輸出訊號。 方程式的變數,都在同一條船上,只有時刻不同,因而形成遞迴函數。 一階微分=取前一個時刻。 二階微分=取前兩個時刻。
linear constant-coefficient difference equation: a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ... + aₚ x[n-p] = b₀ y[n] + b₁ y[n-1] + b₂ y[n-2] + ... + b₉ y[n-q] linear constant-coefficient differential equation: a₀ x(t) + a₁ x′(t) + a₂ x″(t) + ... + aₚ x⁽ᵖ⁾(t) = b₀ y(t) + b₁ y′(t) + b₂ y″(t) + ... + b₉ y⁽𐞥⁾(t)
moving average model / autoregressive model
線性常係數差分方程式,細分三種款式。 移動平均數模型:開迴路系統。輸入訊號的加權總和=輸出訊號。 自迴歸模型:閉迴路系統。輸出訊號的加權總和=輸出訊號。 兩種都用:閉迴路系統。輸入訊號的加權總和=輸出訊號的加權總和。
denoted by functional:
MA model y = f(x)
AR model y = f(y)
ARMA model y = f(x,y)
denoted by recurrence:
MA model y[n] = f(x[n], x[n-1], ..., x[n-p])
AR model y[n] = f( y[n-1], ..., y[n-q])
ARMA model y[n] = f(x[n], x[n-1], ..., x[n-p],
y[n-1], ..., y[n-q])
y[n] and y[n-1]...y[n-q] at opposite side:
MA model y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
AR model y[n] = b₁ y[n-1] + ... + b₉ y[n-q]
ARMA model y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
+ b₁ y[n-1] + ... + b₉ y[n-q]
y[n] and y[n-1]...y[n-q] at same side:
MA model a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p] = y[n]
AR model b₀ y[n] + b₁ y[n-1] + ... + b₉ y[n-q] = 0
ARMA model a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
= b₀ y[n] + b₁ y[n-1] + ... + b₉ y[n-q]
ARMA model = linear constant-coefficient difference equation
有件事情需要考慮: 最終項y[n]、其餘項y[n-1]...y[n-q],放在等號同側還是異側。 係數b[0]相差一個負號。 統計學家採用異側,訊號學家採用同側。 教科書採用其中一種。你得自己小心區分同側異側。 兩者各有優點。 異側的優點:容易求值。 同側的優點:容易做z-transform、容易算transfer function。
system model
LTI system ├ linear constant-coefficient difference equation │ ├ MA model │ ├ AR model │ └ ARMA model └ linear constant-coefficient differential equation
system parameter
系統參數就是那些權重。 a₀, a₁, ... aₚ, b₀, b₁, ..., b₉ 有了系統模型、系統參數,就能完全知道系統是什麼。
system — hybrid system
引言
系統模型可以改得更加複雜,例如內部狀態、啟動函數。
Kálmán在1960年代首度使用內部狀態,並且建構數學理論。當時的登月太空梭Apollo系列,即是採用了Kálmán filter。
想像一下你人在台北車站門口廣場、手上有一支筆。玉山山頂擺著一顆西瓜。幫你的筆安裝一套飛行制御系統,讓你的筆扔出去之後自動瞄準玉山山頂並且射中那顆西瓜。這就是登月計畫。
生物學家在20世紀首度發現啟動函數,但是沒有工程應用。直到21世紀深度學習崛起,啟動函數才獲得重視。
自從深度學習出現residual neural network,啟動函數ReLU開始受到重視。大家查覺ReLU是條件函數。條件函數可做邏輯判斷。系統串聯與並聯可做一連串邏輯判斷。系統前饋與回饋可做細膩的邏輯判斷。
數學家從未討論條件函數、從未建立數學理論。儘管大家創造出各式各樣的系統模型,但是由於缺乏數學理論,所以無法精準評比優劣。一切都是靠感覺,很不科學。
system model
system model
以附加元件分類 1. system with internal state (state-space model) 2. system with activation function (neural network) 3. system with stochastic transition (probabilistic system) 4. system with stochastic process (stochastic system)
內部狀態:複製一份輸入訊號,套用另一個系統,當作第二道輸入訊號。 啟動函數:輸出訊號,套用一個函數,調整輸出訊號強弱。 隨機變遷:輸入訊號、輸出訊號、系統,改成機率分布函數。 隨機過程:輸入訊號、輸出訊號,追加雜訊。
system with internal state:
┌───┐
u ──┬─────────→│ g │──→ y
│ ┌───┐ ┌→│ │
└─→│ f │─┤ └───┘
┌─→│ │ │
│ └───┘ │x
└────────┘
system with activation function:
┌───┐ ┌────┐
x ──→│ f │──→│ _╱ │──→ y
└───┘ └────┘
system with stochastic transition:
┌─────┐
│⟜---⊸│
x ──→│⟜---⊸│──→ y 我要想一下怎麼用文字畫出全連接
│⟜---⊸│
└─────┘
f
system with stochastic process:
d e
│ │
↓+ ┌───┐ ↓+
x ──→⊕──→│ f │──→⊕──→ y
+ └───┘ +
system with internal state
請見本站文件「state-space model」。
internal state
⎰ x[n+1] = fₙ(x[n], u[n]) ⎱ y[n] = gₙ(x[n], u[n]) u: input signal y: output signal x: internal state
u是輸入訊號 y是輸出訊號 g是系統(開迴路) x是內部狀態 f是另一個系統(閉迴路) x是追加的第二道輸入訊號。 複製一份u,套用另一個系統f,當作第二道輸入訊號x。 符號意義被更動,u和x地位對調,f和g地位對調。 阿就古人當初沒有考慮清楚。成為歷史共業。
causal system / time-invariant system / linear system
time-variant causal system with internal state: ⎰ x[n+1] = fₙ(x[n], u[n]) ⎱ y[n] = gₙ(x[n], u[n]) time-invariant causal system with internal state: ⎰ x[n+1] = f(x[n], u[n]) ⎱ y[n] = g(x[n], u[n]) linear time-variant causal system with internal state: ⎧ x[n+1] = aₙ₀ x[n] + aₙ₁ x[n-1] + ... + aₙₚ x[n-p] ⎨ + bₙ₀ u[n] + bₙ₁ u[n-1] + ... + bₙ₉ u[n-q] ⎪ y[n] = cₙ₀ x[n] + cₙ₁ x[n-1] + ... + cₙᵣ x[n-r] ⎩ + dₙ₀ u[n] + dₙ₁ u[n-1] + ... + dₙₛ u[n-s] linear time-invariant causal system with internal state: ⎧ x[n+1] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p] ⎨ + b₀ u[n] + b₁ u[n-1] + ... + b₉ u[n-q] ⎪ y[n] = c₀ x[n] + c₁ x[n-1] + ... + cᵣ x[n-r] ⎩ + d₀ u[n] + d₁ u[n-1] + ... + dₛ u[n-s]
representation
polynomial representation: ⎧ x[n+1] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p] ⎨ + b₀ u[n] + b₁ u[n-1] + ... + b₉ u[n-q] ⎪ y[n] = c₀ x[n] + c₁ x[n-1] + ... + cᵣ x[n-r] ⎩ + d₀ u[n] + d₁ u[n-1] + ... + dₛ u[n-s] matrix representation: ⎰ x⃗[n+1] = A x⃗[n] + B u⃗[n] ⎱ y⃗[n] = C x⃗[n] + D u⃗[n]
state-space model
訊號學家自創一個詞彙state-space model。 嚴格來說是三件事情,但是整包稱作state-space model: 一、系統追加內部狀態(internal state)。 二、多項式推廣為矩陣(polynomial -> matrix)。 多項式可以視作矩陣的特例。 三、多項式等價地改寫成矩陣(matrix representation)。 藉由companion matrix。 state原義是指特定時刻,各個變數的數值,所組成的數組。 state space原義是指所有時刻,全部的數組。 訊號學家沒有考慮清楚,胡亂用詞。 上述三件事情與state space完全無關。 成為歷史共業。
state transition / state estimation
狀態變遷:內部狀態從x[n]變成x[n+1]。藉由公式x[n+1] = A x[n]。 狀態估計:已知輸入訊號u、輸出訊號y,找到內部狀態x。
system with activation function
請見本站文件「neural network」。
ReLU
branch,或者說是if,從二元邏輯推廣成連續函數。 因為branch不是線性函數,所以不會形成線性系統。
fuzzy logic
把布林數的AND和OR運算,變成函數的min和max運算。 Karnik–Mendel algorithm
system with stochastic transition
請見本站文件「hidden Markov model」。
stochastic transition
隨機變遷:函數的每個對應,推廣成隨機變數。 此處針對系統。
function:
⎧ y₀ , if x = x₀ f(x)
f(x) = ⎨ y₁ , if x = x₁ ↑ ╷
⎪ y₂ , if x = x₂ │ ╷│││╷
⎩ : └┴┴┴┴┴┴┴─→x
stochastic transition:
⎡ P₀₀ P₀₁ P₀₂ ... ⎤ P(y|x)
P(y|x) = ⎢ P₁₀ P₁₁ P₁₂ ... ⎥ ↑ y 請自己畫上棒棒
⎢ P₂₀ P₂₁ P₂₂ ... ⎥ │╱
⎣ : : : ⎦ └────────→x
where Pᵢⱼ = P(y = yⱼ | x = xᵢ)
transition matrix / transition function
變遷矩陣:隨機變遷表示成矩陣。訊號的數字是整數。 變遷函數:隨機變遷表示成二元函數。訊號的數字是整數、實數。 方便起見,上述範例採用整數。
stochastic matrix / doubly stochastic matrix
stochastic matrix:
(1) 0 ≤ Pᵢⱼ ≤ 1 for all i and j
(2) P₀₀ + P₀₁ + P₀₂ + ... = 1
P₁₀ + P₁₁ + P₁₂ + ... = 1
P₂₀ + P₂₁ + P₂₂ + ... = 1
:
doubly stochastic matrix:
(3) P₀₀ P₀₁ P₀₂
+ + +
P₁₀ P₁₁ P₁₂ ...
+ + +
P₂₀ P₂₁ P₂₂
+ + +
: : :
‖ ‖ ‖
1 1 1
變遷矩陣細分為兩種。 隨機矩陣:一、每個元素皆介於0到1。 (畢竟是機率。) 二、各個橫條總和皆為1。 (一個輸入數值,其對應輸出的機率總和為1。) 雙隨機矩陣:三、各個直條總和也皆為1。 (輸出數值亦然。) 大家習慣採用雙隨機矩陣。 優點:數學性質較強。例如特徵值絕對值均小於等於1。 優點:反函數是轉置矩陣。 優點:矩陣求解的鬆弛法會收斂。
state transition
state-space model與probabilistic system互相對應。 表面上可以視作非隨機矩陣推廣成隨機矩陣。 私底下則不能一概而論。 state-space model的狀態不是原義。 probabilistic system的狀態是原義。
system model | architecture --------------------------------------------- AR model | AR model ??? | AR model --> MA model state-space model | ARMA model --> MAMA model
system model | with stochastic transition ---------------------------------------------------- AR model | Markov chain ??? | hidden Markov model state-space model | input–output hidden Markov model
AR model: x⃗[n+1] = A x⃗[n] ???: ⎰ x⃗[n+1] = A x⃗[n] ⎱ y⃗[n] = C x⃗[n] state-space model: ⎰ x⃗[n+1] = A x⃗[n] + B u⃗[n] ⎱ y⃗[n] = C x⃗[n] + D u⃗[n] u: input signal y: output signal x: internal state
Markov chain:
P(q[t] = j) = sum P(q[t] = j | q[t-1] = i) P(q[t-1] = i)
i
hidden Markov model:
⎧ P(q[t] = j) = sum P(q[t] = j | q[t-1] = i) P(q[t-1] = i)
⎨ i
⎪ P(o[t] = k) = sum P(o[t] = k | q[t] = j) P(q[t] = j)
⎩ j
input–output hidden Markov model:
https://proceedings.neurips.cc/paper/1994/file/8065d07da4a77621450aa84fee5656d9-Paper.pdf
q: hidden state (latent variable)
o: output signal (observable variable)
Markov chain = discrete-time system Markov process = continuous-time system
state estimation
state-space model: Kálmán filter hidden Markov model: Bayes filter
system with stochastic process
請見本站文件「noise」。
stochastic process
隨機過程:數列的每個數字,推廣成隨機變數。 此處針對訊號。
sequence:
x = (x[0], x[1], ...)
stochastic process:
⎛ P(x[0]) P(x[1]) ⎞
X = ⎜ ↑ ↑ ⎟
⎜ │ ╷╷││╷╷ │ ╷╷││╷╷ ... ⎟
⎝ └┴┴┴┴┴┴┴┴→x[0] , └┴┴┴┴┴┴┴┴→x[1] , ⎠
訊號的數值,從固定的改成浮動的。 一個數值從固定數字改成浮動數字(隨機變數)。 一道訊號從固定數列改成浮動數列(隨機過程)。
stochastic system
stochastic system:
all signals are stochastic processes
=> all signals are sequences with noise
noise noise
X-E[X] Y-E[Y]
│ │
┌───┐ signal ↓+ ┌───┐ ↓+ signal
X ────→│ f │────→ Y = E[X] ──→⊕──→│ f │──→⊕──→ E[Y]
└───┘ + └───┘ +
noise
浮動數字擁有指標。大家習慣只看平均數和變異數。 浮動數列則是有平均數數列和變異數數列。 大家習慣抽取平均數們,成為固定數字,當作訊號。 剩餘的數值們,仍是浮動數字,其平均數們全是零,當作雜訊。
disturbance
noise: affect signal disturbance: affect system
LTI state-space system: ⎰ x⃗[n+1] = A x⃗[n] + B u⃗[n] ⎱ y⃗[n] = C x⃗[n] + D u⃗[n] noise: ⎰ (x⃗[n+1] + nx⃗[n+1]) = A (x⃗[n] + nx⃗[n]) + B (u⃗[n] + nu⃗[n]) ⎱ (y⃗[n] + ny⃗[n] ) = C (x⃗[n] + nx⃗[n]) + D (u⃗[n] + nu⃗[n]) disturbance: ⎰ x⃗[n+1] = A x⃗[n] + B u⃗[n] + w⃗[n] ⎱ y⃗[n] = C x⃗[n] + D u⃗[n] + v⃗[n]
一、訊號追加雜訊: 每道訊號都要追加雜訊, 然後一律挪到等號右側,疊加成一道雜訊。 如此一來,雜訊隨時刻而變。導致無法計算。 二、系統追加擾動: 改弦易轍,只有x[n+1]和y[n]追加雜訊, 然後一律挪到等號右側,形成一道雜訊。 如此一來,雜訊不隨時刻而變。得以計算。
system analysis
system analysis
「系統分析」。工程師觀察現實世界現象,視作系統。藉由輸入訊號、輸出訊號,判斷系統模型、系統參數。
以下章節只針對線性非時變系統。
system analysis — convolution kernel
引言
訊號學家自創一個詞彙impulse response。 我認為這個詞彙不太妥當。因為這個詞彙有兩種意義。 原義:輸入訊號是脈衝函數,所得到的輸出訊號。 引申義:系統從遞迴函數改寫成卷積,所對應的離散數列/連續函數。 (只適用LTI system。) 本章所談的是引申義。 後面章節會區分原義和引申義,而且會有兩者同時登場的情況。 我認為應該另造一個詞彙。 方便起見,下文稱作卷積核convolution kernel。 這個詞彙不是我自己亂編的。 https://www.dspguide.com/ch6/2.htm https://books.google.com.tw/books?id=78TgCwAAQBAJ&pg=SA4-PA57
convolution
convolution (denoted by sequence):
a ∗ b = c
convolution (denoted by numbers):
a[0]b[0] = c[0]
a[0]b[1] + a[1]b[0] = c[1]
a[0]b[2] + a[1]b[1] + a[2]b[0] = c[2]
:
a[0]b[n] + a[1]b[n-1] + a[2]b[n-2] + ... + a[n]b[0] = c[n]
convolution = shift and dot product:
(a[0], ..., a[n]) ∙ (b[0], 0 , 0 , ... ) = c[0]
(a[0], ..., a[n]) ∙ (b[1], b[0], 0 , ... ) = c[1]
(a[0], ..., a[n]) ∙ (b[2], b[1], b[0], ... ) = c[2]
: : :
(a[0], ..., a[n]) ∙ (b[n], ... , b[2], b[1], b[0]) = c[n]
convolution kernel
MA model
MA model: a₀ x[n] + a₁ x[n-1] + ... + aₖ x[n-k] = y[n] convolution: x ∗ a = y convolution kernel: a = (a₀, a₁, ..., aₖ)
linear recurrence representation
線性遞迴函數表示法:系統視作權重。
y[n] = a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ... + aₖ x[n-k]
convolution representation
卷積表示法:系統視作移動視窗。
輸入訊號超出頭端,必須視作0。
輸出訊號超出尾端,必須視作未定義。
(x[0], ..., x[n]) ∙ (a₀, 0, 0, ... ) = y[0]
(x[0], ..., x[n]) ∙ (a₁, a₀, 0, ... ) = y[1]
(x[0], ..., x[n]) ∙ (a₂, a₁, a₀, ... ) = y[2]
: : :
(x[0], ..., x[n]) ∙ ( ... , a₂, a₁, a₀) = y[n]
(x[0], ..., x[n]) ∙ ( ... , a₃, a₂, a₁) = NaN
: : :
(x[0], ..., x[n]) ∙ ( ... , 0, 0, aₖ) = NaN
x ∗ a = y
數學式子可以寫成a ∗ x = y,也可以寫成x ∗ a = y。卷積交換律。 原理是頭尾顛倒計算,總和一樣。
ARMA model
進階的系統模型,也可以改寫成卷積,求得卷積核。 然而過程更加複雜。請見solution章節。
system analysis — transfer function
引言
訊號學家自創一個詞彙transfer function。 我認為這個詞彙不太妥當。因為這個詞彙沒有切中核心。 不過以下還是沿用這個名詞。 藉由生成函數,convolution kernel變成transfer function。 藉由乘法卷積對偶,定義transfer function等於𝓩(y) / 𝓩(x)。
z-transform
generating function / z-transform
┌────────────┐ 𝓩 ┌────────────┐ │ sequence │────→│ polynomial │ └────────────┘ └────────────┘
z-transform (denoted by sequence):
𝓩{x} = X(z)
^^^^
polynomial function of z
its name is uppercase X
z-transform (denoted by numbers):
𝓩{(x[0], x[1], x[2], ...)} = x[0]z⁰ + x[1]z⁻¹ + x[2]z⁻² + ...
property:
(1) 𝓩{x +⃡ k} = zᵏ 𝓩{x} translation invariance
(2) 𝓩{x₁ + x₂} = 𝓩{x₁} + 𝓩{x₂} additivity
(3) 𝓩{k x} = k 𝓩{x} homogeneity of degree 1
property (in style of textbook) (I don't recommend this):
𝓩{x[n]} = X(z)
(1) 𝓩{x[n + k]} = zᵏ X(z) translation invariance
(2) 𝓩{x₁[n] + x₂[n]} = X₁(z) + X₂(z) additivity
(3) 𝓩{k x[n]} = k X(z) homogeneity of degree 1
mathematics │ signal processing
───────────────────────────────────────────────────────────────
sequence aₙ │ signal x
formal variable x │ frequency variable z
generating function 𝓖(aₙ) │ z-transform 𝓩{x}
characteristic equation 𝓖(aₙ) = 0 │ 𝓩{x} = 0
roots x₁,x₂,⋯ │ poles/zeros 𝑧₀,𝑧₁,⋯
(let x = z⁻¹)
中譯 意譯
transform (verb) 變換/轉換 轉換的行為(函數)
transform (noun) 變換/轉換 轉換的結果(輸出)
transformation (noun) 變換/轉換 轉換的行為(函數)
類似詞彙:
inverse / inverse / inversion
estimate / estimate / estimation
count / count / counting
sort / sort / sorting
transformation從動詞變成名詞。
動詞transform加上字尾-ation變成名詞。
一件行為,加上字尾,視作名詞,稱作action noun。
z-transform是指轉換的結果。
至於轉換的行為,訊號學家沒有特地取名。
generating function是指轉換的結果。
generating function transformation是指轉換的行為。
linear transform是指轉換的結果。習慣連帶討論加性與倍性。
linear transformation是指轉換的行為。經常改寫成矩陣。
geometric transformation是指轉換的行為。平移、縮放、旋轉。
舉了一些例子,現在各位應該能夠區分差異了。
convolution–multiplication duality (convolution theorem)
┌────────────┐ 𝓩 ┌────────────┐
│ sequence │────→│ polynomial │
└────────────┘ └────────────┘
∗ ×
┌────────────┐ 𝓩 ┌────────────┐
│ sequence │────→│ polynomial │
└────────────┘ └────────────┘
‖ ‖
┌────────────┐ 𝓩 ┌────────────┐
│ sequence │────→│ polynomial │
└────────────┘ └────────────┘
convolution theorem:
𝓩{a∗b} = 𝓩{a} 𝓩{b}
convolution:
(a∗b)[n] = a[0]b[n] + a[1]b[n-1] + a[2]b[n-2] + ...
number -> sequence:
a∗b = a[0] b + a[1] (b -⃡ 1) + a[2] (b -⃡ 2) + ...
z-transform:
𝓩{a∗b}
= 𝓩{a[0] b + a[1] (b -⃡ 1) + a[2] (b -⃡ 2) + ...}
= a[0] 𝓩{b} + a[1] 𝓩{b -⃡ 1} + a[2] 𝓩{b -⃡ 2} + ...
= a[0] 𝓩{b} + a[1] z⁻¹ 𝓩{b} + a[2] z⁻² 𝓩{b} + ...
= (a[0] + a[1] z⁻¹ + a[2] z⁻² + ...) 𝓩{b}
= 𝓩{a} 𝓩{b}
只有數列可以有z-transform。 因此將數字改成數列。 從計算學的角度來看,數字改成數列,宛如平行計算。 數學家和訊號學家不區分數字和數列,一律標記成x[n]。 閱讀教科書的數學式子,你得靠自己區分。 另外必須假設: 訊號超過頭端(負索引值),必須視做0。 訊號往左移位可以超過頭端(負索引值)。
原理請見本站文件「transformation」。 線性代數的相似變換、傅立葉轉換的乘法卷積對偶,都是此原理。
transfer function
z-transform / transfer function / zero / pole
time domain z-domain
┌────────────┐ 𝓩 ┌────────────┐
│ input │────→│ generating │
│ signal │ │ function │
└────────────┘ └────────────┘
∗ ×
┌────────────┐ 𝓩 ┌────────────┐
│ convolution│────→│ transfer │
│ kernel │ │ function │
└────────────┘ └────────────┘
‖ ‖
┌────────────┐ 𝓩 ┌────────────┐
│ output │────→│ generating │
│ signal │ │ function │
└────────────┘ └────────────┘
順向通過系統:時域sequence convolution=z域polynomial multiplication。 反向通過系統:時域sequence deconvolution=z域polynomial division。
input signal: x
output signal: y
z-transform: 𝓩{x} and 𝓩{y}
transfer function: 𝓩{y} / 𝓩{x}
zeros: roots(𝓩{y}) = {z : 𝓩{y} = 0}
poles: roots(𝓩{x}) = {z : 𝓩{x} = 0}
z-transform:數列=>多項式 convolution theorem:數列加權總和=>多項式乘法 transfer function:輸出訊號作為分子多項式,輸入訊號作為分母多項式。 zero:分子多項式的根(多項式變成0)。 pole:分母多項式的根(多項式變成±∞)。 大家用示波器看zero pole,然後反向推理系統是什麼。
MA model
MA model:
a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ... = y[n]
z-transform:
𝓩{a} 𝓩{x} = 𝓩{y}
transfer function:
𝓩{y}
———— = 𝓩{a}
𝓩{x}
zero / pole:
zeros ≜ roots(𝓩{y}) = roots(𝓩{a})
poles ≜ roots(𝓩{x}) = ∅
AR model
AR model:
b₀ y[n] + b₁ y[n-1] + b₂ y[n-2] + ... = 0
z-transform:
𝓩{b} 𝓩{y} = 0
transfer function:
𝓩{y}
———— = undefined
𝓩{x}
zero / pole:
zeros ≜ roots(𝓩{y}) = undefined
poles ≜ roots(𝓩{x}) = undefined
ARMA model
ARMA model:
a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ...
= b₀ y[n] + b₁ y[n-1] + b₂ y[n-2] + ...
z-transform:
𝓩{a} 𝓩{x} = 𝓩{b} 𝓩{y}
transfer function:
𝓩{y} 𝓩{a}
———— = ————
𝓩{x} 𝓩{b}
zero / pole:
zeros ≜ roots(𝓩{y}) = roots(𝓩{a})
poles ≜ roots(𝓩{x}) = roots(𝓩{b})
MA model = all-zero system AR model = all-pole system
延伸閱讀:shift operator
shift operator
時域數列位移k,導致頻域多項式乘上zᵏ。
數學家稱作translation invariance。
𝓩{x +⃡ k} = zᵏ 𝓩{x}
訊號學家直接在時域定義一個新的運算。
訊號學家稱作shift operator。有人寫成L,有人寫成q。
x +⃡ 1 = L x
教科書慣用的表示法,不區分數字與數列。
x[n+1] = L x[n]
shift operator有一個嚴重的問題。
由於省略了生成函數這個步驟,導致數學式子無法區分時域與頻域。
舉例來說,卷積、轉移函數,通通改用shift operator。
convolution:
(a∗x)[n] = a[0]x[n] + a[1]x[n-1] + a[2]x[n-2] + ...
= a[0]x[n] + a[1] L⁻¹ x[n] + a[2] L⁻² x[n] + ...
= (a[0] + a[1] L⁻¹ + a[2] L⁻² + ...) x[n]
= A(L) x[n]
transfer function of ARMA model:
a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ...
= b₀ y[n] + b₁ y[n-1] + b₂ y[n-2] + ...
=> A(L) x[n] = B(L) y[n]
=> y[n] = (A(L) / B(L)) x[n]
=> y[n] = G(L) x[n] let G = A/B
有些人,刻意省略括號,把G(L)改寫成G。
有些人,把G(L)改寫成G(z)、G(s)、G(ω)、G(ejω)。
不少人這樣做,甚至是那些赫赫有名的教科書。
y[n] = G x[n] something like matrix computation
y[n] = G(s) x[n] merging frequency and time series
因此在訊號學當中,非常不適合使用shift operator。
訊號學的基調就是時域頻域互動。大家隨時都得區分時域頻域。
尤其是演算法,系統識別/系統實現演算法基本上分成時域頻域兩大類型。
所以說喔,以shift operator處理transfer function,根本是在亂搞。
當你遇到教科書使用shift operator,你得自己小心區分時域頻域。
本文不使用shift operator。
x[n]無法區分數字與數列。
L無法區分時域與頻域。
曾經有人聲稱control theory is dead。
我認為其中一個原因,正是源自這種浪漫的數學符號。
事情講不清楚,哪可能進一步研究發展。當然就會dead。
shift operator罪該萬死、死有餘辜。
然而,這種事情是因地制宜。 繪製system diagram、設計電子電路,那麼shift operator有巨大優勢。 A(L)是多項式。加法是並聯,乘法是串聯,L是串聯一個延遲元件。 全程都在時域完成。完全不需要涉及頻域。 實作演算法,有兩種方式:程式語言、電子電路。 如果是程式語言,那麼千萬別用shift operator。 如果是電子電路,那麼shift operator非常好用。
Laplace transform
exponential generating function / Laplace transform
┌────────────┐ 𝓛 ┌────────────┐ │ sequence │────→│ polynomial │ └────────────┘ └────────────┘
Laplace transform (denoted by sequence):
𝓛{x} = X(s)
^^^^
polynomial function of s
its name is uppercase X
Laplace transform (denoted by numbers):
s⁰ s⁻¹ s⁻²
𝓛{(x[0], x[1], x[2], ...)} = x[0]—— + x[1]——— + x[2]——— + ...
0! 1! 2!
property (nothing changed):
(1) 𝓛{x +⃡ k} = sᵏ 𝓛{x} translation invariance
(2) 𝓛{x₁ + x₂} = 𝓛{x₁} + 𝓛{x₂} additivity
(3) 𝓛{k x} = k 𝓛{x} homogeneity of degree 1
differential operator
採用拉普拉斯轉換,原因不是連續函數,原因是微分運算。 linear constant-coefficient difference equation 有三種運算:位移、倍率、加法。 z轉換足矣。拉普拉斯轉換亦可,然而殺雞焉用牛刀。 linear constant-coefficient differential equation 有四種運算:追加微分。 z轉換無法處理微分。必須換成拉普拉斯轉換。 思路如下: 微分運算的不動點是exp(x)。 exp(x)的泰勒級數,第n項的係數是1/n!。 生成函數每一項必須額外乘上1/n!,形成「指數生成函數」。 如此一來,即便遇到微分,生成函數也不需要重新計算各項係數。
https://math.stackexchange.com/questions/105800/
discrete Laplace transform / continuous Laplace transform
z-transform: ┌────────────┐ 𝓩 ┌────────────┐ │ sequence │────→│ polynomial │ └────────────┘ └────────────┘ discrete Laplace transform: ┌────────────┐ 𝓛 ┌────────────┐ │ sequence │────→│ polynomial │ └────────────┘ └────────────┘ continuous Laplace transform: ┌────────────┐ 𝓛 ┌────────────┐ │ function │────→│ integral │ │ │ │ transform │ └────────────┘ └────────────┘
z-transform:
⎧ ⎫
𝓩{x} = sum ⎨ x[n] z⁻ⁿ ⎬
n=0⋯∞ ⎩ ⎭
discrete Laplace transform:
⎧ s⁻ⁿ ⎫
𝓛{x} = sum ⎨ x[n] ——— ⎬
n=0⋯∞ ⎩ n! ⎭
continuous Laplace transform:
⌠∞ ⎧ ⎫
𝓛{x} = ⎮ ⎨ x(t) exp(-st) ⎬ dt
⌡0 ⎩ ⎭
線性常係數差分方程式是離散訊號、線性常係數微分方程式是連續訊號。 針對微分運算,必須使用拉普拉斯轉換。 針對連續訊號,拉普拉斯轉換必須推廣成連續版本。 大家提到拉普拉斯轉換,心照不宣是指連續版本。 很多人將拉普拉斯轉換解讀成z轉換的連續版本,但是這種解讀不太對。 拉普拉斯轉換其實也有離散版本、應當先講離散版本。 嚴格來說,z轉換是普通生成函數,拉普拉斯轉換是指數生成函數。性質截然不同。 錯誤的解讀方式: 一、z轉換和拉普拉斯轉換兩者對比,宛如離散和連續兩者對比。 正確的解讀方式: 一、z轉換(普通生成函數)。無法推廣為連續版本。 二、z轉換的重要變種是拉普拉斯轉換(指數生成函數)。可以推廣成連續版本。 三、z轉換與拉普拉斯轉換的重要特例是傅立葉轉換。可以推廣為連續版本。 四、推廣為連續版本,前提是積分結果受限(不會是正負無限大)。 五、離散z轉換可以改寫成連續拉普拉斯轉換,稱作bilinear transform。
table
經典函數的z轉換、拉普拉斯轉換, 古聖先賢已經推導出答案、整理成表格。 我們直接查表即可。 網頁、書籍,已經有很多現成表格。 自己挑個喜歡的來看。我就不提供了。
z-transform table https://www.google.com/search?q=z-transform+table&udm=2 Laplace transform table https://www.google.com/search?q=Laplace+transform+table&udm=2
bilinear transform
訊號學家自創一個詞彙bilinear transform。 訊號學的bilinear transform, 線性代數的bilinear transform, 兩者完全無關。 因為電腦無法計算線性常係數微分方程式,所以只好轉換成線性常係數差分方程式。 利用線性常係數差分方程式的計算結果,間接求得線性常係數微分方程式的計算結果。 此時需要使用bilinear transform。 好長。
mapping from z-domain to s-domain https://www.youtube.com/watch?v=acQecd6dmxw https://www.google.com/search?q=mapping+from+s-domain+z-domain+transfer+function&udm=2
z-transform形成z-domain Laplace transform形成s-domain。
system analysis — solution
引言
差分方程式/微分方程式,求解,找到其數學公式。
solution
convolution kernel
time domain z-domain
┌────────────────┐ 𝓩 ┌────────────────┐
│ linear │────→│ characteristic │
│ recurrence │ │ equation │
└────────────────┘ └────────────────┘
│ │
│ shift and │ divide zⁿ at
│ dot product │ both sides
↓ ↓
┌────────────────┐ 𝓩 ┌────────────────┐
│ convolution │────→│ characteristic │
│ kernel │ │ equation │
└────────────────┘ └────────────────┘
先前提到MA model可以輕鬆得到卷積核。 現在額外引入z-transform,形成上圖。 進階的系統模型,也可以改寫成卷積,求得卷積核。 方法是藉由z-transform。
explicit formula / closed-form solution
遞迴公式的解,其數學公式習慣稱作explicit formula。 方程式的解,其數學公式習慣稱作closed-form solution。 總之就是solution。中譯公式解。
implict form / explicit form
隱式:方程式,等號兩側都有未知數。 顯式:方程式,僅等號右側有未知數。 方程式求解,本質就是隱式變成顯式。
system: implicit form L(x,y) = 0 explicit form y = f(x) linear constant-coefficient difference equation: implicit form L(x,x-⃡1,x-⃡2,...,y,y-⃡1,y-⃡2,...) = 0 explicit form y[n] = ... linear constant-coefficient differential equation: implicit form L(x,x′,x″,...,y,y′,y″,...) = 0 explicit form y(t) = ...
linear constant-coefficient difference equation
solution
time domain z-domain
┌───────────────┐ 𝓩 ┌───────────────┐
│ implicit form │━━━━🢂│ implicit form │
└───────────────┘ └───────────────┘
│ ┃
│ find ┃ 1 & 2
│ solution ┃
↓ 🢃
┌───────────────┐ 𝓩⁻¹┌───────────────┐
│ explicit form │🡸━━━━│ explicit form │
└───────────────┘ └───────────────┘
1. polynomial factorization
2. partial fraction expansion
linear constant-coefficient difference equation:
(with zero initial condition)
a₀ x[n] + a₁ x[n-1] + a₂ x[n-2] + ...
= b₀ y[n] + b₁ y[n-1] + b₂ y[n-2] + ...
where x[0] = 0
z-transform (time domain -> z-domain):
a₀ z⁰ X(z) + a₁ z⁻¹ X(z) + a₂ z⁻² X(z) + ...
= b₀ z⁰ Y(z) + b₁ z⁻¹ Y(z) + b₂ z⁻² Y(z) + ...
(a₀ z⁰ + a₁ z⁻¹ + a₂ z⁻² + ...) X(z)
= (b₀ z⁰ + b₁ z⁻¹ + b₂ z⁻² + ...) Y(z)
transfer function:
Y(z) a₀ z⁰ + a₁ z⁻¹ + a₂ z⁻² + ...
F(z) = ———— = —————————————————————————————
X(z) b₀ z⁰ + b₁ z⁻¹ + b₂ z⁻² + ...
polynomial factorization:
Y(z) (z-𝑧₀)(z-𝑧₁)(z-𝑧₂)...
F(z) = ———— = —————————————————————
X(z) (z-𝑝₀)(z-𝑝₁)(z-𝑝₂)...
partial fraction expansion (when all poles are distinct):
C₀ C₁ C₂
F(z) = ———— + ———— + ———— + ...
z-𝑝₀ z-𝑝₁ z-𝑝₂
where C₀ = ... , C₁ = ... , C₂ = ...
inverse z-transform (z-domain -> time domain):
f[n] = C₀ 𝑝₀ⁿ + C₁ 𝑝₁ⁿ + C₂ 𝑝₂ⁿ + ...
線性常係數差分方程式求解(隱式改成顯式,並且找到公式), 計算過程其實就是對偶變換和對偶運算,繞一圈回來。 一、最初是線性常係數差分方程式。 二、改寫成transfer function(時域轉頻域)。形成多項式分式。 三、改寫成因式分解。分母的根pole、分子的根zero。 四、改寫成部分分式。形成分式連加。 五、改寫成公式解(頻域轉時域)。形成power sum。
https://eng.libretexts.org/Bookshelves/Electrical_Engineering/Signal_Processing_and_Modeling/Signals_and_Systems_(Baraniuk_et_al.)/04%3A_Time_Domain_Analysis_of_Discrete_Time_Systems/4.08%3A_Solving_Linear_Constant_Coefficient_Difference_Equations
上述公式只討論其中一種情況:不重複實根。 總共三種情況:不重複實根、重複實根、共軛複根。 公式解略有不同。 詳情請見講義: https://control.asu.edu/Classes/MAE318/318Lecture07.pdf
linear constant-coefficient differential equation
solution
time domain s-domain
┌───────────────┐ 𝓛 ┌───────────────┐
│ implicit form │━━━━🢂│ implicit form │
└───────────────┘ └───────────────┘
│ ┃
│ find ┃ 1 & 2
│ solution ┃
↓ 🢃
┌───────────────┐ 𝓛⁻¹┌───────────────┐
│ explicit form │🡸━━━━│ explicit form │
└───────────────┘ └───────────────┘
1. polynomial factorization
2. partial fraction expansion
linear constant-coefficient differential equation:
(with zero initial condition)
a₀ x(t) + a₁ x′(t) + a₂ x″(t) + ...
= b₀ y(t) + b₁ y′(t) + b₂ y″(t) + ...
where x(0) = x′(0) = x″(0) = ... = 0
Laplace transform (time domain -> s-domain):
a₀ s⁰ X(s) + a₁ s¹ X(s) + a₂ s² X(s) + ...
= b₀ s⁰ Y(s) + b₁ s¹ Y(s) + b₂ s² Y(s) + ...
(a₀ s⁰ + a₁ s¹ + a₂ s² + ...) X(s)
= (b₀ s⁰ + b₁ s¹ + b₂ s² + ...) Y(s)
transfer function:
Y(s) a₀ s⁰ + a₁ s¹ + a₂ s² + ...
F(s) = ———— = ———————————————————————————
X(s) b₀ s⁰ + b₁ s¹ + b₂ s² + ...
polynomial factorization:
Y(s) (s-𝑧₀)(s-𝑧₁)(s-𝑧₂)...
F(s) = ———— = —————————————————————
X(s) (s-𝑝₀)(s-𝑝₁)(s-𝑝₂)...
partial fraction expansion (when all poles are distinct):
C₀ C₁ C₂
F(s) = ———— + ———— + ———— + ...
s-𝑝₀ s-𝑝₁ s-𝑝₂
where C₀ = ... , C₁ = ... , C₂ = ...
inverse Laplace transform (s-domain -> time domain):
C₀ C₁ C₂
f(t) = ————————— + ————————— + ————————— + ...
exp(-𝑝₀t) exp(-𝑝₁t) exp(-𝑝₂t)
= C₀ exp(𝑝₀t) + C₁ exp(𝑝₁t) + C₂ exp(𝑝₂t) + ...
https://tutorial.math.lamar.edu/classes/de/IVPWithLaplace.aspx https://lpsa.swarthmore.edu/LaplaceXform/InvLaplace/InvLaplaceXformPFE.html
system analysis — stability
引言
藉由解的數學公式,判斷穩定性。 滿足穩定性,才能形成穩態,才能控制。 不滿足穩定性,輸出可能正負無限大。 導致電路過載燒掉、動力機械暴衝、反應槽爆炸。
stability
BIBO stability
輸入收限輸出受限穩定性: 當輸入訊號受限(不會出現正負無限大),則輸出訊號也受限。 換句話說: 卷積核絕對值總和受限。卷積核L¹-norm受限。
‖x‖∞ = max(x[0], x[1], ..., x[n]) L∞-norm ‖f‖₁ = |f[0]| + |f[1]| + ... + |f[n]| L¹-norm
bounded input signal:
|x[n]| < ∞ for all n≥0
<=> ‖x‖∞ < ∞
bounded output singal:
|y[n]| < ∞ for all n≥0
<=> ‖f‖₁ ‖x‖∞ < ∞
(⟹)
|y[n]| = |(f ∗ x)[n]|
= |f[0]x[n] + f[1]x[n-1] + ...|
≤ |f[0]||x[n]| + |f[1]||x[n-1]| + ...
≤ |f[0]|‖x‖∞ + |f[1]|‖x‖∞ + ...
= (|f[0]| + |f[1]| + ...) ‖x‖∞
= ‖f‖₁ ‖x‖∞
(⟸)
let x∞ = (‖x‖∞, ‖x‖∞, ...)
y∞ = (‖y‖∞, ‖y‖∞, ...)
f₁ = (|f[0]|, |f[1]|, ...)
(f₁ ∗ x∞)[n] ≥ y∞[n] ≥ y[n]
BIBO stability:
if |x[n]| < ∞ then |y[n]| < ∞ for all n≥0
<=> if ‖x‖∞ < ∞ then ‖f‖₁ ‖x‖∞ < ∞ for all n≥0
<=> ‖f‖₁ < ∞ for all n≥0
https://en.wikipedia.org/wiki/BIBO_stability
internal stability
內部穩定性: 系統互相結合,形成大型系統。每道訊號都受限。 換句話說: 兩兩結合、三三結合、四四結合、……,通通都是BIBO stability。
https://electronics.stackexchange.com/questions/114893/
linear constant-coefficient difference equation
BIBO stability
explicit formula:
f[n] = C₀ 𝑝₀ⁿ + C₁ 𝑝₁ⁿ + C₂ 𝑝₂ⁿ + ...
BIBO stability (and steady state is zero):
if |x[n]| < ∞ then |y[n]| < ∞ for all n≥0
<=> if ‖x‖∞ < ∞ then ‖f‖₁ ‖x‖∞ < ∞ for all n≥0
<=> ‖f‖₁ < ∞ for all n≥0
<=> |Cᵢ pᵢⁿ| < ∞ for all n≥0 and i≥0
<=> |pᵢⁿ| < ∞ for all n≥0 and i≥0
<=> |pᵢ| < 1 for all i≥0
stability criterion:
線性常係數差分方程式的情況下:所有pole都在複平面單位圓內或上。
訊號學家還希望收斂至零:所有pole都在複平面單位圓內。
stability test:
(1) 直覺的方法是使用多項式函數求根演算法,求得所有pole。
經典演算法是companion matrix求特徵值,時間複雜度O(N³T)。
(2) 特殊的方法是使用特殊數學公式,檢查正負號。
經典演算法是Jury's test,時間複雜度O(N²)。
linear constant-coefficient differential equation
BIBO stability
explicit formula:
f(t) = C₀ exp(𝑝₀t) + C₁ exp(𝑝₁t) + C₂ exp(𝑝₂t) + ...
BIBO stability (and steady state is zero):
if |x(t)| < ∞ then |y(t)| < ∞ for all t≥0
<=> if ‖x‖∞ < ∞ then ‖f‖₁ ‖x‖∞ < ∞ for all n≥0
<=> ‖f‖₁ < ∞ for all n≥0
<=> |Cᵢ exp(𝑝ᵢt)| < ∞ for all t≥0 and i≥0
<=> |exp(𝑝ᵢt)| < ∞ for all t≥0 and i≥0
<=> Re{𝑝ᵢt} < 0 for all t≥0 and i≥0
<=> Re{𝑝ᵢ} < 0 for all i≥0
stability criterion:
線性常係數微分方程式的情況下:所有pole都在左半複平面。
訊號學家還希望收斂至零:所有pole都在左半複平面,但不含虛軸。
stability test:
(1) 直覺的方法是使用多項式函數求根演算法,求得所有pole。
經典演算法是companion matrix求特徵值,時間複雜度O(N³T)。
(2) 特殊的方法是使用特殊數學公式,檢查正負號。
經典演算法是Routh–Hurwitz test,又稱Routh array,時間複雜度O(N²)。
steady state
initial value / final value
初始值:訊號頭端數值。x[0]、y[0]。 終末值:訊號尾端數值。x[n]、y[n]。
initial condition
ARMA model:
y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
+ b₁ y[n-1] + ... + b₉ y[n-q]
initial condition of differential equation:
x[0] = x₀
x[-1] = x₋₁ , ... , x[-p] = x₋ₚ
y[-1] = y₋₁ , ... , y[-q] = y₋₉
initial condition of system:
x[-1] = x₋₁ , ... , x[-p] = x₋ₚ
y[-1] = y₋₁ , ... , y[-q] = y₋₉
initial value of input signal:
x[0] = x₀
微分方程式的初始條件、系統的初始條件, 兩者稍微有點差別。 微分方程式的初始條件: 遞迴公式的初始值。其數量恰好足夠,得以讓遞迴公式運作。 一、輸入訊號、輸出訊號的負索引值數值。 二、輸入訊號的初始值。 系統的初始條件: 系統預設數值。其數量恰好足夠,得以讓系統運作。 使得輸入訊號的初始值得以代入系統、得到輸出訊號的初始值。 一、輸入訊號、輸出訊號的負索引值數值。
transient state / steady state
暫態:輸出訊號演變過程,轉瞬即逝。受到輸入訊號初始值影響。 穩態:輸出訊號演變結果,歷久不衰。輸出訊號最終值趨近常數函數。
線性非時變系統的性質: 一、初始條件影響暫態與穩態。 二、輸入訊號只會影響暫態、不會影響穩態。 三、一旦滿足穩定性,必定形成穩態。 換句話說:一旦輸出訊號受限,其最終值必定趨近常數函數。 簡單來說:受限則收斂。 四、承上,輸出訊號可以定義成暫態加穩態。 暫態趨近零函數、穩態趨近常數函數。 暫態是singular solution、穩態是particular solution。 五、藉由轉移函數,可以求得輸出訊號的初始值、終末值(穩態)。 其數學公式稱作初始值定理、終末值定理。
MA model: (1) system parameter: one amplification factor (2) stability: all poles at origin (3) convergence: converge to zero at infinity ARMA model: (1) system parameter: two amplification factor (2) stability: minimum phase / non-minimum phase (3) convergence: initial condition matters
linear constant-coefficient difference equation
initial value theorem: lim y[n] = lim Y(z) n→0 z→∞ final value theorem: lim y[n] = lim (z-1) Y(z) n→∞ z→0
linear constant-coefficient differential equation
initial value theorem: lim y(t) = lim s Y(s) t→0 s→∞ final value theorem: lim y(t) = lim s Y(s) t→∞ s→0
https://eng.libretexts.org/Bookshelves/Electrical_Engineering/Signal_Processing_and_Modeling/Introduction_to_Linear_Time-Invariant_Dynamic_Systems_for_Students_of_Engineering_(Hallauer)/08%3A_Pulse_Inputs_Dirac_Delta_Function_Impulse_Response_Initial_Value_Theorem_Convolution_Sum/8.06%3A_Derivation_of_the_Initial-Value_Theorem https://eng.libretexts.org/Bookshelves/Electrical_Engineering/Signal_Processing_and_Modeling/Introduction_to_Linear_Time-Invariant_Dynamic_Systems_for_Students_of_Engineering_(Hallauer)/15%3A_Input-Error_Operations/15.03%3A_Derivation_of_the_Final-Value_Theorem
system diagram — system diagram
引言
LTI system串聯/並聯/前饋/回饋,整體視作一個系統,仍是LTI system。 非常棒的數學性質。 藉由時域convolution kernel,證明變得容易。 藉由頻域transfer function,公式變得漂亮。
system diagram
block diagram
series connection: parallel connection:
┌────┐
┌──→│ f₁ │───┐
┌────┐ ┌────┐ │ └────┘ ↓+
x ──→│ f₁ │──→│ f₂ │──→ y x ───┤ ⊕──→ y
└────┘ └────┘ │ ┌────┐ ↑+
└──→│ f₂ │───┘
└────┘
feedforward connection: feedback connection:
┌───────────┐
│ ┌───┐ ↓- + ┌───┐
x ───┴──→│ f │──→⊕──→ y x ──→⊕──→│ f │───┬──→ y
└───┘ + ↑- └───┘ │
└───────────┘
方塊圖沒有國際標準。 大家按照下述習慣來畫。 一、訊號:箭號。側邊填入訊號名稱(亦可不填),小寫字母,可省略括號。 二、系統:方框。內部填入卷積核/轉移函數名稱,小寫/大寫字母,可省略括號。 三、訊號分岔:圓點(亦可不畫)。 四、訊號匯合:圓框。內部填入加法符號+/加總符號∑。側邊填入正負號。 五、輸入訊號:箭號起點填入輸入訊號名稱。側邊即可不填。 六、輸出訊號:箭號終點填入輸出訊號名稱。側邊即可不填。 畫圖這種事情硬要用文字解釋,徒增痛苦。 我還真沒看過其他人用文字介紹方塊圖怎麼畫。
時域 頻域
input singal 輸入訊號 x[n] X(z)
output singal 輸出訊號 y[n] Y(z)
system 系統 f[n] F(z)
signal-flow graph
Mason's rule https://en.wikipedia.org/wiki/Mason's_gain_formula
LTI system
series connection:
┌───────┐ ┌───────┐ ┌────────────┐
──→│ F₁(z) │──→│ F₂(z) │──→ = ──→│ F₁(z)F₂(z) │──→
└───────┘ └───────┘ └────────────┘
parallel connection:
┌───────┐ ┌───────────────┐
───┬──→│ F₁(z) │──→⊕──→ = ──→│ F₁(z) + F₂(z) │──→
│ └───────┘ ↑+ └───────────────┘
│ ┌───────┐ │
└──→│ F₂(z) │───┘
└───────┘
feedback connection:
┌────────────────┐
x e ┌───────┐ y │ F₁(z) │
──→⊕──→│ F₁(z) │───┬──→ = ──→│ —————————————— │──→
-↑ └───────┘ │ │ 1 + F₁(z)F₂(z) │
│ ┌───────┐ │ └────────────────┘
└───│ F₂(z) │←──┘
└───────┘
Y = F₁E = F₁(X-F₂Y) = F₁X - F₁F₂Y skip (z)
X = (Y + F₁F₂y)/F₁ = Y(1 + F₁F₂)/F₁
Y/X = F₁/(1+F₁F₂)
4.
──→ F₁ ─┬─→ F ──→ = ──→ F₁ ──→ F ─┬─→
──→ F₂ ─┘ ──→ F₂ ──→ F ─┘
5.
──→ F ──┬─→ F₁ ──→ = ─┬─→ F ──→ F₁ ──→
└─→ F₂ ──→ └─→ F ──→ F₂ ──→
6.
──┬─→ F₁ ──┬──→ = ──→ 1/F₂ ──┬─→ F₂ ──→ F₁ ──┬──→
-└── F₂ ←─┘ -└───────←───────┘
當主角是函數。 串聯series:函數複合。 並聯parallel:函數相加。 回饋feedback:遞迴函數。 當主角是時域convolution kernel。 串聯series:卷積核卷積。 並聯parallel:卷積核相加。 回饋feedback:我曷知。 當主角是頻域transfer function。 串聯series:傳遞函數相乘。 並聯parallel:傳遞函數相加。 回饋feedback:傳遞函數連分數。
system analysis — system response
引言
給予特殊的輸入訊號,獲得特殊的輸出訊號。 種什麼因得什麼果。稱作系統響應。 觀察因果,進而找出卷積核、轉移函數的數值。
system response
symbol / numeral
| symbol | numeral
------------| ---------------------| ----------------------
convolution | solution | (1) evaluation
kernel | | (2) impulse response
------------| ---------------------| ----------------------
transfer | division of two | (1) evaluation
function | generating functions | (2) frequency response
卷積核和轉移函數可以表示成符號(函數)或數值(函數值)。 一般來說,先求得符號、再求得數值。 脈衝響應、頻率響應則是可以直接求得數值。 系統求解:已知系統參數,找到卷積核、轉移函數的符號。 系統響應:不知系統參數,找到卷積核、轉移函數的數值。 脈衝響應:讓輸入訊號是脈衝函數,以便找到卷積核的數值。 頻率響應:讓輸入訊號是複弦波,以便找到轉移函數的數值。 線性非時變系統,擁有特殊數學性質。 即便我們完全不知道系統模型、系統參數, 我們還是可以利用脈衝響應、頻率響應, 直接得到卷積核、轉移函數的數值。
impulse response / frequency response
impulse response:輸入訊號是脈衝函數,所得到的輸出訊號。 frequency response:輸入訊號是複弦波,所得到的輸出訊號。
impulse response: x[n] y[n] ╷ ↑ ┌─────┐ ↑ ╷││╷╷ ╿────────→n ────→│ f │────→ ╿┴┴┴┴┴┴┴┴→n │ └─────┘ │ impulse fuction convolution kernel frequency response: x[n] y[n] ↑ ╷╷ ┌─────┐ ↑╷││╷ ├┴┴┴┴┬┬┬┬→n ────→│ f │────→ ├┴┴┴┴┬┬┬┬→n │ ╵╵ └─────┘ │ ╵││╵ complex sinusoid complex sinusoid
impulse response:
given x = (1, 0, 0, 0, 0, ...)
then f = y
impulse response (in style of textbook):
given x[n] = ⎰ 1 , if n = 0
⎱ 0 , if n > 0
then f[n] = y[n]
frequency response:
given x[n] = exp(𝑖ωn)
then y[n] = F(exp(𝑖ω)) exp(𝑖ωn)
= |F(exp(𝑖ω))| exp(𝑖ωn + ∠F(exp(𝑖ω)))
identity of convolution / invariance of convolution
1. identity of convolution
=> convolution kernel = impulse response
2. invariance of convolution
=> eigenvector is power sequence (x⁰, x¹, x², ...)
where x is arbitrary complex number
=> eigenvector can be complex sinusoid exp(𝑖ωn)
let x = exp(𝑖ω) and ω is arbitrary real number
=> eigenvalue λ is amplification factor
and frequency ω is invariant
=> ...... (skip over proof)
=> amplification factor λ from frequency response
= function value F(exp(𝑖ω)) of transfer function
在代數領域,大家習慣討論。 一、零元素&恆等元素 二、不動點&不變量 此處討論卷積運算的恆等元素和不變量。 其數學性質有實際應用。 一、恆等元素:脈衝函數與任意函數的卷積,結果仍是相同函數。 實際應用: 針對LTI system, 當輸入訊號是脈衝函數, 那麼輸出訊號恰是卷積核。 二、不變量:對特定頻率特徵值 實際應用: 針對LTI system, 輸入訊號是複弦波,輸出訊號也會是複弦波。 處處放大因子(一個複數)皆相等。 放大因子是特徵值,恰好等於轉移函數的函數值。 換句話說: 輸入訊號是複弦波,輸出訊號也會是複弦波。 頻率不變,僅振幅和相位改變。 振幅縮放倍率和相位偏移差距,構成轉移函數。
impulse response
impulse response
為了方便理解脈衝響應, 此處提供系統模型與系統參數,仔細推導一遍。
MA model
MA(1) model:
x ─────┬────────────→⊕───→ y
↓ +↑
┌───────┐ │
│ delay │ │
└───────┘ │
│ ┌────┐ │
└────→│ ×a │──┘
└────┘
y[n] = x[n] + a x[n-1]
impulse response:
f[0] = y[0] = x[0] = 1
f[1] = y[1] = x[1] + a x[0] = a
f[2] = y[2] = x[2] + a x[1] = 0
f[3] = y[3] = x[3] + a x[2] = 0
: : : :
transfer function:
┌──────────┐
x ───→│ 1 + az⁻¹ │───→ y
└──────────┘
F(z) = f[0] z⁰ + f[1] z⁻¹ + ... = 1 + az⁻¹
Y(z) = (1 + az⁻¹) X(z)
AR model
AR(1) model:
┌─────────────┬────→ y
│ ↓
│ ┌───────┐
│ │ delay │
│ └───────┘
│ ┌────┐ │
└──│ ×b │←────┘
└────┘
y[n] = b y[n-1]
impulse response and transfer function are undefined.
since there is no input signal.
ARMA model
ARMA(1,1) model:
x ─────┬────────────→⊕─→⊕─────────────┬────→ y
↓ +↑ +↑ ↓
┌───────┐ │ │ ┌───────┐
│ delay │ │ │ │ delay │
└───────┘ │ │ └───────┘
│ ┌────┐ │ │ ┌────┐ │
└────→│ ×a │──┘ └──│ ×b │←────┘
└────┘ └────┘
MA AR
y[n] = b y[n-1] + x[n] + a x[n-1]
impulse response:
f[0] = y[0] = x[0] = 1
f[1] = y[1] = b y[0] + a = b + a
f[2] = y[2] = b y[1] = b¹ (b + a)
f[3] = y[3] = b y[2] = b² (b + a)
: : : :
f[n] = y[n] = b y[n-1] = bⁿ⁻¹ (b + a)
transfer function:
┌──────────┐
│ 1 + az⁻¹ │
x ───→│ ———————— │───→ y
│ 1 - bz⁻¹ │
└──────────┘
F(z) = 1 + sum { bⁿ⁻¹ (b + a) z⁻ⁿ }
n=1⋯∞
(b + a)z⁻¹
= 1 + ——————————
1 - bz⁻¹
1 + az⁻¹
= ————————
1 - bz⁻¹
ARMA(p,q) model:
x ───────┬────────────→⊕─→⊕─────────────┬──────→ y
┌───────┐ +↑ +↑ ┌───────┐
⎧ │ delay │ │ │ │ delay │ ⎫
⎪ └───────┘ ┌────┐ │ │ ┌────┐ └───────┘ ⎪
⎪ ├────→│ ×a │─→⊕ ⊕←─│ ×b │←────┤ ⎪
⎪ ┌───────┐ └────┘ +↑ +↑ └────┘ ┌───────┐ ⎪
⎪ │ delay │ │ │ │ delay │ ⎪
⎪ └───────┘ ┌────┐ │ │ ┌────┐ └───────┘ ⎪
q ⎨ ├────→│ ×a │─→⊕ ⊕←─│ ×b │←────┤ ⎬ p
⎪ : └────┘ +↑ +↑ └────┘ : ⎪
⎪ : │ │ : ⎪
⎪ : : : : ⎪
⎪ ┌───────┐ : : ┌───────┐ ⎪
⎪ │ delay │ : : │ delay │ ⎪
⎪ └───────┘ ┌────┐ │ │ ┌────┐ └───────┘ ⎪
⎪ └────→│ ×a │──┘ ⊕←─│ ×b │←────┤ ⎪
⎩ └────┘ +↑ └────┘ ┌───────┐ ⎪
│ │ delay │ ⎪
│ ┌────┐ └───────┘ ⎪
└──│ ×b │←────┘ ⎪
└────┘ ⎭
MA AR
y[n] = x[n] + a₁ x[n-1] + a₂ x[n-2] + ... + aₚ x[n-p]
+ b₁ y[n-1] + b₂ y[n-2] + ... + b₉ y[n-q]
統計學當中, ARMA(p,q)硬性規定: 一、a₀ = 1。 二、y[n]和y[n-1]在等號異側。 (導致b變號。導致轉移函數分母變成減號。) 自己小心。
frequency response
frequency response (in theory)
frequency response:
x[n] y[n] gain |F(exp(𝑖ω))|
↑ ╷╷ ┌─────┐ ↑ ╷││╷ ↑
├┴┴┴┴┬┬┬┬→n ────→│ f │────→ ├┬┬┴┴┴┴┬┬┬┬→n
│ ╵╵ └─────┘ ││╵ ╵││╵
complex sinusoid ╶─→
phase shift -∠F(exp(𝑖ω))
given x[n] = exp(𝑖ωn) then y[n] = |F(exp(𝑖ω))| exp(𝑖ωn + ∠F(exp(𝑖ω)))
輸入訊號是複弦波,輸出訊號也是複弦波, 頻率不變,僅振幅與相位改變。 輸入訊號是複弦波,頻率ω。 測量輸出訊號的振幅縮放比例|F(exp(𝑖ω))|、相位偏移差距-∠F(exp(𝑖ω))。 稱作增益gain、相移phase shift。 視作複數長度、複數角度, 還原成一個複數, 即是轉移函數F(z)的函數值,其中z = exp(𝑖ω)。
phase/phase shift is positive = shift right = time delay phase/phase shift is negative = shift left = time advance 訊號相位、系統相移,兩者正負意義相同,兩者移動方向一致。 相位/相移若是正數,訊號/輸出訊號則是右移、延遲。 相位/相移若是負數,訊號/輸出訊號則是左移、提前。 x[n] = exp(𝑖ωn - φ) phase is φ given x[n] = exp(𝑖ωn) then y[n] = |F(exp(𝑖ω))| exp(𝑖ωn + ∠F(exp(𝑖ω))) phase shift is -∠F(exp(𝑖ω)) 頻率響應的放大因子的複數角度, 頻率響應實際測量得到的相移, 兩者相差一個負號。
frequency response (in practice)
given x[n] = cos(ωn) then y[n] = |F(exp(𝑖ω))| cos(ωn + ∠F(exp(𝑖ω)))
given x[n] = cos(ωn)
= (1/2) exp(+𝑖ωn) + (1/2) exp(-𝑖ωn)
then y[n] = (1/2) |F(exp(𝑖ω))| exp(+𝑖ωn + ∠F(exp(𝑖ω)))
+ (1/2) |F(exp(𝑖ω))| exp(-𝑖ωn - ∠F(exp(𝑖ω)))
= |F(exp(𝑖ω))| cos(ωn + ∠F(exp(𝑖ω)))
現實世界的訊號,不能是複數,只能是實數。 輸入訊號不能是複數exp波,只好改成實數sin波/實數cos波, 藉由實數sin波/實數cos波的頻率響應,反推複數exp波的頻率響應。 很幸運地,增益gain、相移phase shift,仍然相同。 思路如下: cos波拆成兩個複數exp波疊加。 線性非時變系統,輸入分解,各自通過系統,輸出相加,結果一樣。
理論上:輸入訊號是複數exp波, 輸出訊號也是複數exp波。 實務上:輸入訊號是實數sin波/實數cos波。 輸出訊號也是實數sin波/實數cos波。
frequency response (in practice)
real consine wave with amplitude α and phase φ: given x[n] = α cos(ωn + φ) then y[n] = α |F(exp(𝑖ω))| cos(ωn + φ + ∠F(exp(𝑖ω)))
spectrum of system
frequency response at frequency ω:
given x[n] = α cos(ωn + φ)
then y[n] = α |F(exp(𝑖ω))| cos(ωn + φ + ∠F(exp(𝑖ω)))
spectrum of system at frequency ω:
|F(exp(𝑖ω))| = ‖y‖∞ / ‖x‖∞
= max(abs(y)) / max(abs(x))
≈ max(y) / max(x)
∠F(exp(𝑖ω)) = argmax rₓ
= argmax dot(y +⃡ k, x)
k
Fourier transform
Fourier transform
頻率響應:可求得轉移函數的一個函數值。(多項式函數求值) 傅立葉轉換:一口氣求得生成函數/轉移函數的多個函數值。(多項式函數多點求值) 數學理論請見本站文件「convolution」。 解讀方式請見本站文件「wave」。
(symbol) (numeral)
time domain z-domain frequency domain
┌───────────┐ 𝓩 ┌────────────┐ evaluate ┌───────────┐
│ input │────→│ generating │──────────→│ spectrum │
│ signal │ │ function │←──────────│ of input │
└───────────┘ └────────────┘interpolate└───────────┘
∗ × ×
┌───────────┐ 𝓩 ┌────────────┐ evaluate ┌───────────┐
│convolution│────→│ transfer │──────────→│ spectrum │
│ kernel │ │ function │←──────────│ of system │
└───────────┘ └────────────┘interpolate└───────────┘
‖ ‖ ‖
┌───────────┐ 𝓩 ┌────────────┐ evaluate ┌───────────┐
│ output │────→│ generating │──────────→│ spectrum │
│ signal │ │ function │←──────────│ of output │
└───────────┘ └────────────┘interpolate└───────────┘
time domain frequency domain
┌───────────┐ 𝓕 ┌───────────┐
│ input │────→│ spectrum │
│ signal │ │ of input │
└───────────┘ └───────────┘
∗ ×
┌───────────┐ 𝓕 ┌───────────┐
│convolution│────→│ spectrum │
│ kernel │ │ of system │
└───────────┘ └───────────┘
‖ ‖
┌───────────┐ 𝓕 ┌───────────┐
│ output │────→│ spectrum │
│ signal │ │ of output │
└───────────┘ └───────────┘
spectrum of signal
amplitude spectrum: phase spectrum: |X(exp(𝑖ω))| ∠X(exp(𝑖ω)) ↑ ↑ │ ╷│╷ │ │╷ ├───┴┴┴┴┴┴─→ω ├───┴┴┴┬┬┬─→ω │ │ ╵│
訊號頻譜: 生成函數的函數值們。 兩種計算方式: 一、訊號做傅立葉轉換。 二、訊號除以複弦波,然後每項相加。得到一種頻率的函數值。 1. spectrum(signal) = Fourier(signal) 2. sum(signal / complex sinusoid)
因為真實世界的訊號幾乎都是一堆波, 所以大家用傅立葉轉換,把訊號分解成波。 原本訊號稱作時域(座標軸是時間)。 傅立葉轉換之後稱作頻域(座標軸是頻率)。
訊號實施傅立葉轉換(時域轉頻域),形成頻譜。 一串數列的傅立葉轉換是一串數列,每個數值都是複數。 一個數值對應一種頻率的複弦波的振幅和相位。 複數長度是振幅。每個數值的振幅,形成振幅頻譜。 複數角度是相位。每個數值的相位,形成相位頻譜。
振幅頻譜:各種頻率的複弦波的振幅。 相位頻譜:各種頻率的複弦波的相位。 兩者合稱頻譜。
spectrum of system
gain spectrum: phase-shift spectrum: |F(exp(𝑖ω))| ∠F(exp(𝑖ω)) ↑ ↑ │ ╷│╷ │ │╷ ├───┴┴┴┴┴┴─→ω ├───┴┴┴┬┬┬─→ω │ │ ╵│
系統頻譜:
轉移函數的函數值們。
兩種計算方式:
一、卷積核做傅立葉轉換。
二、輸出訊號頻譜除以輸入訊號頻譜。(訊號做傅立葉轉換,然後對應項相除)。
三、做很多次頻率響應。
1. spectrum(system) = Fourier(convolution kernel)
spectrum(output signal)
2. spectrum(system) = ———————————————————————
spectrum(input signal)
3. spectrum(system) = ratio of frequency responses
輸入訊號、輸出訊號,拆解成各種頻率的複弦波疊加, 線性非時變系統:各種頻率的複弦波分別套用系統。 卷積不變量:各種複弦波的頻率保持不變。 系統,即是每種頻率的複弦波的振幅縮放比例、相位偏移差距。
卷積核實施傅立葉轉換(時域轉頻域),形成系統頻譜。 或者,輸出頻譜除以輸入頻譜,形成系統頻譜。 一串數列的傅立葉轉換是一串數列,每個數值都是複數。 一個數值對應一種頻率的複弦波的振幅縮放比例和相位偏移差距。 複數長度是振幅。每個數值的振幅,形成增益頻譜。 複數角度是相位。每個數值的相位,形成相移頻譜。
增益頻譜:各種頻率的複弦波的振幅縮放比例。 相移頻譜:各種頻率的複弦波的相位偏移差距。 大家習慣簡單地稱作振幅頻譜、相位頻譜。 兩者合稱頻譜。
frequency response
注意到,正向傅立葉轉換是除以複弦波。 特徵函數(x⁰, x¹, x², ...)設定為x = z⁻¹ = exp(-𝑖ω)。 為何正向傅立葉轉換採用除法?為了讓訊號拆解成複弦波疊加。 為何z轉換採用負號次方?為了配合正向傅立葉轉換。 正向傅立葉轉換的放大因子的複數角度,恰是相移,負負得正。 頻率響應的放大因子的複數角度,不是相移,記得帶負號! 兩者相差一個負號。
延伸閱讀:4 types of Fourier transform
Fourier transform
輸入丨輸出丨名稱 一一十一一十一一一一一一一一一一一一一一一一一一一一一 離散丨離散丨discrete Fourier transform 離散丨連續丨discrete-time Fourier transform 連續丨離散丨Fourier series 連續丨連續丨(continuous-time) Fourier transform
數學當中,Fourier transform總共有四種版本。 輸入是離散數列(離散時間)/連續函數(連續時間)。 輸出是離散數列(離散頻率)/連續函數(連續頻率)。 輸入有兩種版本、輸出有兩種版本,交叉配對,得到四種版本。 名稱不好記。 一、離散時間離散頻率: 離散傅立葉轉換discrete Fourier transform。 z轉換,其多項式分別代入N種特定數值, z = exp(𝑖(2π/N)f),f從0到N-1。 拉普拉斯轉換,其多項式分別代入N種特定數值, s = 𝑖(2π/N)f,f從0到N-1。 二、離散時間連續頻率: 離散時間傅立葉轉換discrete-time Fourier transform。 z轉換,其多項式分別代入∞種特定數值, z = exp(𝑖ω),ω從-∞到+∞。 拉普拉斯轉換,其多項式分別代入∞種特定數值, s = 𝑖ω,ω從-∞到+∞。 自然數f推廣成複數ω。重點在於連續頻率。 三、連續時間離散頻率: 傅立葉級數Fourier series。 拉普拉斯轉換,其積分變換分別代入N種特定數值, s = 𝑖(2π/N)f,f從0到N-1。 四、連續時間連續頻率: 連續時間傅立葉轉換continuous-time Fourier transform。 拉普拉斯轉換,其積分變換分別代入∞種特定數值, s = 𝑖ω,ω從-∞到+∞。
四種版本各自都是雙射函數(各自擁有逆向轉換)。 (離散版本需要追加限制條件:週期函數。) 實務上,不使用這些版本。 實務上,輸出只能是離散數列(離散頻率)。 實務上,輸出長度與輸入長度沒必要相等(逆向轉換沒必要存在), 你想算哪幾個頻率,就去算那幾個頻率。 利用頻率響應來計算。 如果需要進行高速計算,那麼採用第一個版本。 需要將訊號長度N調整成2的次方,透過補零。 其演算法通稱「快速傅立葉轉換」,時間複雜度O(NlogN)。
Laplace transform
傅立葉轉換:振幅為1、相位為0、頻率為定值,平穩振動的波。 拉普拉斯轉換:振幅頻率相位為各種數值。 傅立葉轉換是特例,拉普拉斯轉換是通例,導致教科書很喜歡用拉普拉斯轉換。 然而拉普拉斯轉換在現實世界當中沒有對應的物理現象。 而且拉普拉斯轉換的時間複雜度和空間複雜度遠遠大於傅立葉轉換。 因此實務上只會使用傅立葉轉換。完全不用拉普拉斯轉換。 拉普拉斯轉換用來在網路論壇裝逼。用來假裝自己講話有份量。
sparse Fourier transform
只計算特定頻率的振幅與相位。速度較快。 http://groups.csail.mit.edu/netmit/sFFT/ http://people.csail.mit.edu/indyk/fourier-gsip.pdf
system analysis — system operation
引言
系統的各種運算: 求值(順向通過系統,求得輸出訊號。) 求解(反向通過系統,求得輸入訊號。) 迴歸(已知輸入訊號、輸出訊號、系統模型,求得系統參數。) 反函數(對調輸入訊號、輸出訊號。)
四種運算都有時域和頻域兩種解法。 頻域解法的時間複雜度較低,但是沒人用! 一、系統參數通常很少。傅立葉轉換反而浪費時間。 二、系統參數無法完美轉換到頻域。
MA model
representation
polynomial representation
多項式表示法:系統視作權重
y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₖ x[n-k]
matrix representation no.1
矩陣表示法:系統視作矩陣
⎡ a₀ 0 0 ... 0 0 0 ⎤ ⎡ x[0] ⎤ ⎡ y[0] ⎤
⎢ a₁ a₀ 0 ... 0 0 0 ⎥ ⎢ x[1] ⎥ ⎢ y[1] ⎥
⎢ a₂ a₁ a₀ ... 0 0 0 ⎥ ⎢ : ⎥ ⎢ : ⎥
⎢ : : : : : : ⎥ ⎢ : ⎥ = ⎢ : ⎥
⎢ 0 0 0 ... a₀ 0 0 ⎥ ⎢ : ⎥ ⎢ : ⎥
⎢ 0 0 0 ... a₁ a₀ 0 ⎥ ⎢ : ⎥ ⎢ : ⎥
⎣ 0 0 0 ... a₂ a₁ a₀ ⎦ ⎣ x[n] ⎦ ⎣ y[n] ⎦
A x y
polynomial representation no.2
多項式表示法:輸入訊號視作權重
y[n] = x[n] a₀ + x[n-1] a₁ + ... + x[n-k] aₖ
matrix representation no.2
矩陣形式:輸入訊號視作矩陣
⎡ x[0] 0 ... 0 ⎤ ⎡ y[0] ⎤
⎢ x[1] x[0] ... 0 ⎥ ⎡ a₀ ⎤ ⎢ y[1] ⎥
⎢ : : : ⎥ ⎢ a₁ ⎥ ⎢ : ⎥
⎢ : : : ⎥ ⎢ : ⎥ = ⎢ : ⎥
⎢ : : : ⎥ ⎢ : ⎥ ⎢ : ⎥
⎢ x[n-1] x[n-2] ... x[n-k-1] ⎥ ⎣ aₖ ⎦ ⎢ : ⎥
⎣ x[n] x[n-1] ... x[n-k] ⎦ ⎣ y[n] ⎦
X a y
operation
MA model │ y = f(x) ───────────────────── evaluation │ find y resolution │ find x regression │ find f inversion │ find f⁻¹
求值(順向通過系統) 求解(反向通過系統) 迴歸(求系統) 反函數(求反系統)
evaluation
求值(順向通過系統):滑動視窗,取加權平均數。時間複雜度O(NK)。
resolution
求解(反向通過系統):滑動視窗,解加權平均數方程式。時間複雜度O(NK)。
regression
迴歸(求系統):兩種方式。 一、X a = y。 虛擬反矩陣。三種數學公式。O(NK² + K³)。 請見本站文件「linear least squares」。 二、Xᵀ X a = Xᵀ y。 X拉高,Xᵀ X變成常對角矩陣,a變成近似解。 X拉高,Xᵀ X a = Xᵀ y稱作Wiener–Hopf equation。 先算Xᵀ X和Xᵀ y,再求解。 有多種演算法。時域O(NK + K²)、頻域O(NlogN + KlogK)。 請見本站文件「Toeplitz matrix」、「Fourier transform」。 專著《Adaptive Filter Theory》。
第一種方式:
y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₖ x[n-k]
⎡ x[0] 0 ... 0 0 ⎤ ⎡ y[0] ⎤
⎢ x[1] x[0] ... 0 0 ⎥ ⎡ a₀ ⎤ ⎢ : ⎥
⎢ x[2] x[1] ... 0 0 ⎥ ⎢ : ⎥ ⎢ : ⎥
⎢ : : : : ⎥ ⎢ : ⎥ = ⎢ : ⎥
⎢ : : : : ⎥ ⎢ : ⎥ ⎢ : ⎥
⎢ : : : : ⎥ ⎣ aₖ ⎦ ⎢ : ⎥
⎣ x[n] x[n-1] ... x[n-k+1] x[n-k] ⎦ ⎣ y[n] ⎦
X a y
X a = y linear equation (overdetermined system)
Xᵀ X a = Xᵀ y normal equation (overdetermined system)
a = (Xᵀ X)⁻¹ Xᵀ y solution of normal equation
X⁺ = (Xᵀ X)⁻¹ Xᵀ Moore–Penrose pseudoinverse
a = argmin ‖Ax - b‖² a is least-squares solution
if X has full column rank.
輸入訊號,視作矩陣X。
輸出訊號,視作向量y。
系統參數,視作向量a。
利用矩陣表示法,形成一次方程式X a = y,找到平方誤差最小的解。
利用投影,化作一次方程式Xᵀ X a = Xᵀ y,保證有唯一解。
三種數學公式。時間複雜度差不多都是O(NK² + K³)。
(1) normal equation
(2) QR decomposion
(3) singular value decompostion
第二種方式:
y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₖ x[n-k]
⎡ x[0] ⎤ ⎡ y[0] ⎤
⎢ : x[0] ⎥ ⎢ : ⎥
⎢ : : ⎥ ⎡ a₀ ⎤ ⎢ : ⎥
⎢ : : x[0] ⎥ ⎢ : ⎥ ⎢ : ⎥
⎢ : : ..... : x[0] ⎥ ⎢ : ⎥ = ⎢ : ⎥
⎢ x[n] : : : ⎥ ⎢ : ⎥ ⎢ y[n] ⎥
⎢ x[n] : : ⎥ ⎣ aₖ ⎦ ⎢ NaN ⎥
⎢ : : ⎥ ⎢ : ⎥
⎢ x[n] : ⎥ ⎢ : ⎥
⎣ x[n] ⎦ ⎣ NaN ⎦
X a y
⎡ rₓₓ[0] rₓₓ[1] ... rₓₓ[k] ⎤ ⎡ a₀ ⎤ ⎡ rₓ[0] ⎤
⎢ rₓₓ[1] rₓₓ[0] ... rₓₓ[k-1] ⎥ ⎢ : ⎥ ⎢ : ⎥
⎢ : : : ⎥ ⎢ : ⎥ = ⎢ : ⎥
⎢ rₓₓ[k-1] rₓₓ[k-2] ... rₓₓ[1] ⎥ ⎢ : ⎥ ⎢ : ⎥
⎣ rₓₓ[k] rₓₓ[k-1] ... rₓₓ[0] ⎦ ⎣ aₖ ⎦ ⎣ rₓ[k] ⎦
Xᵀ X a Xᵀ y
rₓₓ[t] = sum { x[n+t] x[n] } autocorrelation function
n=0⋯N-1 x+⃡t dot x
rₓ[t] = sum { x[n+t] y[n] } cross-correlation function
n=0⋯N-1 x+⃡t dot y
輸入訊號,視作矩陣X。矩陣拉高,輸入訊號變得完整。
輸出訊號,視作向量y。超出尾端的K個未定義數值NaN需要重新賦值。
甲、填0。答案錯誤。
乙、延遲K個時刻,測量正確數字。答案依然錯誤,還得延遲求解。
如此一來,Xᵀ X變成常對角矩陣Toeplitz matrix。
如此一來,Xᵀ X a = Xᵀ y稱作Wiener–Hopf equation。
Xᵀ X是常對角矩陣Toeplitz matrix、對稱矩陣symmetric matrix。
常對角矩陣有高速演算法。對稱矩陣能精簡計算步驟。
先算Xᵀ X和Xᵀ y,再求解。
建立矩陣:互相關函數。卷積。時域O(NK)、頻域O(NlogN)。
矩陣求解:常對角矩陣求解。時域O(K²)、頻域O(KlogK)。
常對角矩陣求解有許多演算法。
時域演算法:領先主子矩陣。例如Levinson–Durbin algorithm。
頻域演算法:快速傅立葉轉換。例如Cooley–Tukey algorithm。
inversion
反函數(求反系統):事情變得複雜。 一、連續時間系統:當訊號長度無限長,有唯一解。 二、離散時間系統:形成兩難局面。 各種數學領域當中, 連續運算子改成離散運算子,可能損失某些數學性質。 大家難以取捨,形成兩難局面。有人稱作no free lunch。 離散時間系統無法同時滿足: 一、得到最小平方解。 二、形成卷積核。換句話說,形成常對角矩陣Toeplitz matrix。 對應兩種演算法: 一、僅得到最小平方解:三種數學公式(時域虛擬反矩陣)。O(NK)。 二、僅形成卷積核:傅立葉轉換(頻域譜分解)。O(NlogN)。 (數列補零,化作循環矩陣求最小平方解。) (然而不是原本常對角矩陣的最小平方解。)
AR model
representation
如同MA model。 輸入與輸出是同一數列,但是輸出延遲1時刻。
operation
AR model │ y +⃡ 1 = f(y) ────────────────────────── evaluation │ find y regression │ find f inversion | find f⁻¹
求值(求遞迴數列) 迴歸(求遞迴函數) 反函數(求反系統)
evaluation
求值(求遞迴數列):三種演算法。 線性遞迴函數K項,求數列第N項。 一、動態規劃,第0項算到第N項。O(NK)。 二、同伴矩陣的N次方。O(K³logN)。假設矩陣相乘O(K³)。 三、xᴺ模特徵多項式。O(K²logN)甚至O(KlogKlogN)。 當K是常數,一變成O(N),二三變成O(logN)。 請見本站文件「polynomial — recurrence」。
regression
迴歸(求遞迴函數):如同MA model。多了一種方式。 一、Y b = y。 虛擬反矩陣。三種數學公式。O(NK² + K³)。 請見本站文件「linear least squares」。 二、Yᵀ Y b = Yᵀ y。 Y拉高,Yᵀ Y變成常對角矩陣,b變成近似解。 Y拉高,Yᵀ Y b = Yᵀ y稱作Yule–Walker equation。 先算Yᵀ Y和Yᵀ y,再求解。 有多種演算法。時域O(NK + K²)、頻域O(NlogN + KlogK)。 請見本站文件「Toeplitz matrix」、「Fourier transform」。 三、y +⃡ 1 = f(y)。 有多種演算法。例如Berlekamp–Massey algorithm。O(NK)。 請見本站文件「polynomial — recurrence」。
第二種方式:
y[n] = b₁ y[n-1] + b₂ y[n-2] + ... + bₖ y[n-k]
⎡ y[0] ⎤ ⎡ y[1] ⎤
⎢ : y[0] ⎥ ⎢ : ⎥
⎢ : : ⎥ ⎡ b₁ ⎤ ⎢ : ⎥
⎢ : : y[0] ⎥ ⎢ : ⎥ ⎢ : ⎥
⎢ : : ... : y[0] ⎥ ⎢ : ⎥ = ⎢ : ⎥
⎢ y[n-1] : : : ⎥ ⎢ : ⎥ ⎢ y[n] ⎥
⎢ y[n-1] : : ⎥ ⎣ bₖ ⎦ ⎢ NaN ⎥
⎢ : : ⎥ ⎢ : ⎥
⎢ y[n-1] : ⎥ ⎢ : ⎥
⎣ y[n-1] ⎦ ⎣ NaN ⎦
Y b y
⎡ r[0] r[1] ... r[k-1] ⎤ ⎡ b₁ ⎤ ⎡ r[1] ⎤
⎢ r[1] r[0] ... r[k-2] ⎥ ⎢ b₂ ⎥ ⎢ r[2] ⎥
⎢ : : : ⎥ ⎢ : ⎥ = ⎢ : ⎥
⎢ r[k-2] r[k-1] ... r[1] ⎥ ⎢ : ⎥ ⎢ : ⎥
⎣ r[k-1] r[k-2] ... r[0] ⎦ ⎣ bₖ ⎦ ⎣ r[k] ⎦
Yᵀ Y b Yᵀ y
inversion
反函數(求反系統):事情變得複雜。 系統分為minimum phase system和non-minimum phase system。 後者的處理機制較為複雜。 詳情請見講義: https://stats.stackexchange.com/questions/23827/ http://mocha-java.uccs.edu/ECE5540/ECE5540-CH07.pdf
system analysis — system identification
引言
訊號學家自創一個詞彙system identification。 標題本來應該是system parameter estimation。 硬要區分的話嘛: identification是找到系統模型。就是建模! estimation是找到系統參數。就是迴歸!
system model
FIR system / IIR system
開迴路系統、閉迴路系統 訊號學家自創兩個同義詞彙,就是這樣而已。
脈衝響應分成兩種: 1. finite impulse response (FIR) 有限脈衝響應。輸入脈衝函數,輸出很快歸零。時間長度有限。 2. infinite impulse response (IIR) 無限脈衝響應。輸入脈衝函數,輸出永不歸零。時間長度無限。
系統分為兩種款式: 1. FIR system = open-loop system 開迴路->輸入只取幾項->有限脈衝響應 2. IIR system = closed-loop system 閉迴路->輸入包含輸出->輸出強行展開->輸入取所有項->無限脈衝響應
LTI system
系統分為兩種款式: 1. LTI FIR system = MA model 開迴路->輸入的加權總和->輸入只取幾項->有限脈衝響應 2. LTI IIR system = ARMA model 閉迴路->輸入與輸出的加權總和->輸出強行展開->輸入取所有項->無限脈衝響應
stochastic system
系統分為兩種款式: 1. LTI system 沒有雜訊/干擾->整體視作一個LTI system->system operation 2. stochastic LTI system 追加雜訊/干擾->考慮各種system diagram->system identification
system identification
stochastic LTI system
stochastic LTI system
├ stochastic LTI FIR system
│ └ MAX model Y = AX + E skip (z)
└ stochastic LTI IIR system
├ output error model Y = (A/B)X + E
├ ARX model Y = (A/B)X + (1/B)E
├ ARMAX model Y = (A/B)X + (C/B)E
└ Box–Jenkins model Y = (A/B)X + (C/D)E
system model identification
系統模型識別的步驟如下: 一、判斷系統是線性非時變系統/不是線性非時變系統: 依序檢查因果性、時間不變性、加性、倍性。 令輸入訊號是特定函數, 觀察輸出訊號是否不受控制、隨之延遲、相加、翻倍。 二、判斷系統是有限脈衝響應/無限脈衝響應: 令輸入訊號是脈衝函數,觀察輸出訊號。 甲、輸出訊號迅速歸零:FIR system。 乙、輸出訊號永不歸零:IIR system。 一般使用脈衝響應。再不濟,矩形響應、三角形響應。 三、決定系統模型: stochastic LTI FIR system只有一種基礎模型。 stochastic LTI IIR system擁有四種基礎模型。 四種基礎模型通通嘗試一遍,看看哪種誤差較少。 你也可以自己發明新模型。 四、決定系統參數: 各種系統參數數量通通嘗試一遍,看看哪種誤差最少。 另外還要檢查系統延遲時間、穩定性。 詳情請見講義: http://mocha-java.uccs.edu/ECE5560/ECE5560-Notes04.pdf
system parameter estimation
(1) convolution kernel: sequence deconvolution
y = f * x
Xᵀ X f = Xᵀ y
f = (Xᵀ X)⁻¹ Xᵀ y
(2) transfer function: polynomial division & interpolation
F(exp(𝑖ω)) = Y(exp(𝑖ω)) / X(exp(𝑖ω))
系統參數估計的演算法,原理只有兩種,時域和頻域。 一、時域卷積核: 已知輸入訊號、輸出訊號,求得系統參數。 如果已知系統參數數量,那麼系統參數數值有唯一解。 因為對象是LTI system,所以形成linear equation。 高斯消去法可以求解。 現實世界的訊號數值,無法完美精確地測量,總是有雜訊/干擾。 大家習慣改用least squares method,找到平方誤差最小的解。 因為對象是LTI system,所以形成linear least squares。 normal equation可以求解。 二、頻域轉移函數/系統頻譜: 已知輸入訊號頻譜、輸出訊號頻譜,求得系統頻譜。 如果已知系統參數數量,那麼系統頻譜有唯一解。 多項式除法與多項式內插可以求解。 訊號頻譜有雜訊/干擾,那麼改用least squares method。 最佳化演算法可以求解。
experimental data
input signal / system response: 輸入特殊訊號,直接量頻譜。 (1) chirp (swept sine): 弦波頻率漸增,依序得到輸出訊號頻譜每個bin。 (2) white noise: 訊號頻譜是常數函數,方便計算系統的gain。 (3) pseudorandom binary sequence:針對數位訊號。功能類似white noise。
steady state / initial state: 一、進行實驗之時,確保輸出訊號已經抵達穩態,才做測量。 二、進行實驗之前,確保系統內部狀態已經恢復初始值,才做測量。 連續進行實驗的情況下, 輸入訊號需要插入足夠多個零。 甚至切斷電源重開機。 尤其是stochastic LTI IIR system。
model selection / model validation
模型選擇:找到最符合的系統模型與系統參數。 指標有AIC、BIC。方法有cross-validation。此處省略。 模型驗證:承上,接著檢查該系統模型與系統參數。 嘗試各種輸入訊號,檢查實際系統與估計系統的輸出訊號是否足夠相符。 指標有平均數、變異數。方法有cross-validation。此處省略。
stochastic LTI FIR system
system model
MAX model:
e (zero-mean white noise)
╷
┌─────┐ ↓
x ───→│ A │──→⊕──→ y
└─────┘
y[n] = sum { aₖ x[n-k] + e[n] }
k=0⋯∞
MAX model = Moving Average model with eXogenous inputs 移動平均模型MA附帶外生輸入X (此處的外生輸入是指zero-mean white noise)
system parameter estimation
system parameter estimation:
(1) correlation: least squares estimation
input signal has time-invariant autocorrelation.
e.g. weakly stationary process
system spectrum estimation:
(2) correlation spectrum: H₁ estimate and H₂ estimate
input signal has time-invariant autocorrelation.
e.g. weakly stationary process
(3) frequency response: QAM estimate
input signal is sinusoid.
e.g. cosine wave
(4) transfer function: empirical transfer function estimate
input signal is purpose-built.
e.g. white noise
針對LTI FIR model, 可以直接估計系統參數, 也可以間接估計系統頻譜。 LTI FIR model = MA model。 卷積核恰是系統參數。 系統頻譜做逆向傅立葉轉換得到卷積核。
least squares estimation
correlation
autocorrelation function:
rₓₓ[k] = sum { x[n+k] x[n] }
n=0⋯∞
cross-correlation function:
rₓ[k] = sum { x[n+k] y[n] }
n=0⋯∞
實務上訊號長度有限。訊號長度是N,加總運算範圍是n=0⋯N-1。
property: (1) rₓ[k] ≠ rₓ[k] not commute (2) rₓ[k] = rₓ[-k] however negative index is not defined (3) rₓₓ ∗ a = rₓ a is LTI system that y = a ∗ x (4) -⃡a ∗ rₓₓ ∗ a = r a is LTI system that y = a ∗ x
proof of property (3):
y[n] = sum { aₖ x[n-k] }
k=0⋯∞
rₓ[k] = sum { y[n+k] x[n] }
n
= sum { sum { aᵢ x[n+k-i] } x[n] }
n i
= sum { sum { aᵢ x[n+k-i] x[n] } }
n i
= sum { sum { aᵢ x[n+k-i] x[n] } }
i n
= sum { aᵢ sum { x[n+k-i] x[n] } }
i n
= sum { aᵢ rₓₓ[k-i] }
i
least squares estimation
MAX model:
e (zero-mean white noise)
╷
┌─────┐ ↓+
x ───→│ A │──→⊕──→ y
└─────┘
y[n] = sum { aₖ x[n-k] + e[n] }
k=0⋯∞
assumption:
assume e and x are independent.
theorem:
independent => uncorrelated.
rₑₓ = 0
rₑₓ[k] = sum { e[n+k] x[n] } = 0
correlation:
假設e與x獨立、不相關,就可以用correlation消除雜訊影響。
rₓ = rₓₓ ∗ a + rₑₓ
= rₓₓ ∗ a
rₓ[k] = sum { y[n+k] x[n] }
= sum { sum { aᵢ x[n+k-i] + e[n+k] } x[n] }
= sum { sum { aᵢ x[n+k-i] x[n] + e[n+k] x[n] } }
= sum { sum { aᵢ x[n+k-i] x[n] } + sum { e[n+k] x[n] } }
= sum { aᵢ rₓₓ[k-i] } ^^^^^^^^^^^^^^^^^^^
= 0
linear regression:
解一次方程組得到系統參數。
即是先前章節介紹的方法。
given rₓ and rₓₓ, solve a.
assume aₜ = 0 when t ≥ N
⎡ rₓ[0] ⎤ ⎡ rₓₓ[0] ... rₓₓ[N-1] ⎤ ⎡ a₀ ⎤
⎢ : ⎥ = ⎢ : : ⎥ ⎢ : ⎥
⎣ rₓ[N-1] ⎦ ⎣ rₓₓ[-(N-1)] ... rₓₓ[0] ⎦ ⎣ aɴ₋₁ ⎦
rₓ Toeplitz(rₓₓ) a
solution:
a = Toeplitz(rₓₓ)⁻¹ rₓ
H₁ estimate and H₂ estimate
correlation spectrum
符號:z轉換或者拉普拉斯轉換。 數值:傅立葉轉換。
(1) symbol: z-transform / Laplace transforms
autocorrelation spectrum:
Rₓₓ(z) = rₓₓ[0] z⁰ + rₓₓ[1] z⁻¹ + rₓₓ[2] z⁻² + ...
= sum { rₓₓ[k] z⁻ᵏ }
k=0⋯∞
cross-correlation spectrum:
Rₓ(z) = rₓ[0] z⁰ + rₓ[1] z⁻¹ + rₓ[2] z⁻² + ...
= sum { rₓ[k] z⁻ᵏ }
k=0⋯∞
(2) numeral: discrete-time Fourier transform
autocorrelation spectrum:
Rₓₓ(ω) = sum { rₓₓ[k] exp(-𝑖ωk) }
k=-∞⋯+∞
cross-correlation spectrum:
Rₓ(ω) = sum { rₓ[k] exp(-𝑖ωk) }
k=-∞⋯+∞
property (derived from convolution theorem): (1) Rₓ(z) ≠ Rₓ(z) not commute (2) Rₓ(z) = Rₓ(1/z) however not being calculated (3) Rₓₓ(z) A(z) = Rₓ(z) A is LTI system that Y = AX (4) A(1/z) Rₓₓ(z) A(z) = R(z) A is LTI system that Y = AX
H₁ estimate and H₂ estimate
e
╷
┌─────┐ ↓+
x ───→│ A │──→⊕──→ y
└─────┘
rₑₑ[k] = σ² δ[k] since e is white
Rₑₑ(ω) = sum { σ² δ[k] exp(-𝑖ωk) } = σ² since e is white
r[k] = aₖ ∗ rₓ[k] + σ² δ[k]
R(ω) = A(exp(𝑖ω)) Rₓ(ω) + Rₑₑ(ω) where Rₑ(ω) = σ²
d e
╷ ╷
↓+ ┌─────┐ ↓+
x ──→⊕──→│ A │──→⊕──→ y
└─────┘
H₁ estimate: Ĥ₁ = Rₓ / Rₓₓ = (A Rₓₓ) / Rₓₓ + Rdd
H₂ estimate: Ĥ₂ = R / Rₓ = (A Rₓ + Rₑₑ) / Rₓ
inequality: |Ĥ₁| ≤ |A| ≤ |Ĥ₂|
https://dsp.stackexchange.com/questions/71811/
QAM estimate【查無正式學術名稱】
frequency response
理論上是輸入複數exp波,實務上是輸入實數cos波。
輸入餘弦波,頻率ω、振幅α、相位0。
調整輸入振幅α,避免輸出訊號太弱太強而測量不到。
e
╷
α cos(ωn) ┌─────┐ ↓+
x ──────────→│ A │──→⊕──→ y
└─────┘
x[n] = α cos(ωn)
y[n] = α |A(exp(𝑖ω))| cos(ωn + ∠A(exp(𝑖ω))) + e[n]
QAM estimate
如果沒有誤差,那麼很容易計算系統頻譜。
為了應付誤差,輸出做amplitude modulation。
輸出分別乘上餘弦波和正弦波,反推原始振幅、原始相位,
稱作quadrature amplitude modulation。
cos(ωn)
╷
e ↓× ┌───────────────┐
╷ ┌─→⊕─→│N-point average│──→ Ic(ω)
α cos(ωn) ┌─────┐ ↓+ │ └───────────────┘
x ──────────→│ A │─→⊕─→ y ─┤
└─────┘ │ ┌───────────────┐
└─→⊕─→│N-point average│──→ Is(ω)
↑× └───────────────┘
╵
sin(ωn)
x[n] = α cos(ωn)
y[n] = α |A(exp(𝑖ω))| cos(ωn + ∠A(exp(𝑖ω))) + e[n]
Ic(ω) = sum { y[n] cos(ωn) } = +½ α |A(exp(𝑖ω))| cos(ωn)
n=1⋯N
Is(ω) = sum { y[n] sin(ωn) } = -½ α |A(exp(𝑖ω))| sin(ωn)
n=1⋯N
積化和差公式
cos(a) cos(b) = ½ cos(a-b) + ½ cos(a+b)
推導過程
Ic(ω) = sum { y[n] cos(ωn) }
= sum { (......) cos(ωn) }
= ½ α |A(exp(𝑖ω))| cos(ωn) ①
+ ½ α |A(exp(𝑖ω))| (1/N) sum { cos(2ωn + ∠A(exp(𝑖ω))) } ②
+ (1/N) sum { e[n] cos(ωn) } ③
②→0 as n→∞. since cos() has zero mean.
③→0 as n→∞. since e and x are independent by assumption.
hence only ① remains.
QAM estimate: |Â(exp(𝑖ω))| = sqrt(Ic²(ω) + Is²(ω)) / (α/2) ∠Â(exp(𝑖ω)) = -tan⁻¹(Is(ω) / Ic(ω))
empirical transfer function estimate
專著《System Identification: Theory for the User》。
empirical transfer function estimate
MAX model: Y = AX + E skip (z) empirical transfer function estimate: Â = Y/X
阿就測量一下輸出頻譜、輸入頻譜,兩者相除,即得系統頻譜。 重劍無鋒大巧不工。 系統頻譜=輸出頻譜/輸入頻譜 Â = Y/X 頻譜相除=振幅相除&相位相減 複數相除=長度相除&角度相減 |Â| = |Y| / |X| amplitude ∠Â = ∠Y - ∠X phase
mean / variance / covariance
empirical transfer function estimate:
 = Y/X = (AX + E)/X = A + E/X
statistics:
(1) mean: E[Â] = E[A + E/X] = E[A] + E[E/X] = E[A]
(2) variance: E[|Â-A|²] = (Rₑₑ + constant) / E[|X|²]
(3) covariance:
E[(Â(exp(𝑖ω₁))-A(exp(𝑖ω₁)))* (Â(exp(𝑖ω₂))-A(exp(𝑖ω₂)))] = 0
assumptions:
(1) zero-mean noise: E[E(exp(𝑖ω))] = 0
(2) white noise: E[E(exp(𝑖ω₁))E(exp(𝑖ω₂))] = 0
(3) independence: E[X(exp(𝑖ω))E(exp(𝑖ω))] = 0
(4) spectrum of system is asymptotically uncorrelated:
E[A(exp(𝑖ω₁))A(exp(𝑖ω₂))] = 0 when M→∞
推導過程省略。 頻譜都是複數,相乘之前記得取共軛複數。 複數乘以共軛複數,恰是絕對值平方。
ETFT的答案絕對是錯的。 畢竟一眼看上去就是亂算一通,根本不考慮誤差項。 ETFT的答案的某些統計學指標至少是對的: 一、平均值是對的。 二、變異數是錯的,但是誤差有上限。 三、共變異數是對的。 (當系統頻譜的頻率種類M趨近無限多的情況下。) 即使統計學指標是對的, 那也只是自我安慰、精神勝利,沒啥屁用。 因此才會需要發明其他演算法, 像是H₁ estimate、H₂ estimate、QAM estimate。 教科書誤植為bias和variance。 bias和variance是指大量實驗的結果呈現哪種分布。 此處是談僅做一次實驗的結果會是如何。
https://people.ee.ethz.ch/~rsmith/idfiles/SysID_lecture05_small.pdf
spectral smoothing
spectral coherence:
A(exp(𝑖ω₁)) and A(exp(𝑖ω₂)) are asymptotically uncorrelated.
即便ω取樣間距變小,函數曲線也不會變得比較連續平滑。
改善方法是平滑化。做大量實驗,取平均值。
A(exp(𝑖ω)) the curve is spiky
↑ ﹏〰〰〰﹏
│﹏〰 〰﹏﹏
└──────┬─┬───────→ ω
ω₁ ω₂
spectral smoothing:
輸入訊號、輸出訊號事先平滑化,其頻譜也隨之平滑化。
(1) k-fold average 時域訊號,相鄰N窗取平均。
(2) window function 時域訊號,套用窗函數。
bias–variance tradeoff:
窗越窄窗越多,bias越大variance越小。
stochastic LTI IIR system
system model
output error model Y = (A/B)X + E skip (z) ARX model Y = (A/B)X + (1/B)E ARMAX model Y = (A/B)X + (C/B)E Box–Jenkins model Y = (A/B)X + (C/D)E
output error model:
e (zero-mean white noise)
╷
┌─────┐ w ↓+
x ───→│ A/B │───→⊕───→ y
└─────┘
⎧ w[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
⎨ + b₁ w[n-1] + ... + b₉ w[n-q]
⎩ y[n] = w[n] + e[n]
ARX model:
e
╷
┌─────┐ ↓+ ┌─────┐
x ───→│ A │──→⊕──→│ 1/B │───→ y
└─────┘ └─────┘
y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
+ b₁ y[n-1] + ... + b₉ y[n-q] + e[n]
ARMAX model:
┌─────┐
e ───→│ C │───┐
└─────┘ │
┌─────┐ ↓+ ┌─────┐
x ───→│ A │──→⊕──→│ 1/B │───→ y
└─────┘ └─────┘
y[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
+ b₁ y[n-1] + ... + b₉ y[n-q]
+ c₀ e[n] + c₁ e[n-1] + ... + cᵣ e[n-r]
Box–Jenkins model:
┌─────┐ v
e ───→│ C/D │───┐
└─────┘ │
┌─────┐ w ↓+
x ───→│ A/B │──→⊕──→ y
└─────┘
⎧ w[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p]
⎪ + b₁ w[n-1] + ... + b₉ w[n-q]
⎨ v[n] = c₀ e[n] + c₁ e[n-1] + ... + cᵣ e[n-r]
⎪ + d₁ v[n-1] + ... + dₛ v[n-s]
⎩ y[n] = w[n] + v[n]
least squares estimation
linear least squares estimation
linear regression: (1) linear regression (2) linear regression with zero-mean Gaussian white error 兩者公式解恰巧相同。 公式解都是normal equation。 因此,系統模型可以省略誤差項。【尚待確認】 請見本站文件「regression」、「estimation」。 least squares estimation with ARMAX model: θ̂ = argmin ε(θ) ε(θ) = sum ‖y[n] - ŷ(n;θ)‖² n=k⋯k+N ŷ(n;θ) = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p] + b₁ y[n-1] + ... + b₉ y[n-q]+ e[n]θ = (a₀, ..., aₚ, b₁, ..., b₉) k ≥ max(p,q) linear regression: ⎡ y[n] ⎤ ⎡ x[n] ... x[n-p] y[n-1] ... y[n-q] ⎤ ⎡ a₀ ⎤ ⎢ : ⎥ ⎢ : : : : ⎥ ⎢ : ⎥ ⎢ : ⎥ = ⎢ : : : : ⎥ ⎢ aₚ ⎥ ⎢ : ⎥ ⎢ ⎥ ⎢ b₁ ⎥ ⎣ y[n+N] ⎦ ⎣ ⎦ ⎢ : ⎥ ⎣ b₉ ⎦ y thin matrix A θ where n ≥ max(p,q) and N+1 ≥ p+1+q 由於不知道初始條件,千萬不能採用n = 0、在矩陣右上角補零。 solution: θ = (Aᵀ A)⁻¹ Aᵀ y model validation: 得到正確答案之後,驗證系統模型是否正確。 檢查各個時刻的誤差值,照理來說,整體呈現常態分布。 如果不是常態分布,那麼系統模型不正確。
nonlinear least squares estimation
optimization: 也可以將迴歸問題化作最佳化問題。 演算法有gradient descent、Newton's method,隨便你用。 請見本站文件「optimization」、「multivariate optimization」。 least squares estimation with Box–Jenkins model: θ̂ = argmin ε(θ) ε(θ) = sum ‖y[n] - ŷ(n;θ)‖² n=k⋯k+N ⎧ ŷ(n;θ) = w[n] + v[n] ⎪ w[n] = a₀ x[n] + a₁ x[n-1] + ... + aₚ x[n-p] ⎨ + b₁ w[n-1] + ... + b₉ w[n-q] ⎪ v[n] =c₀ e[n] + c₁ e[n-1] + ... + cᵣ e[n-r]⎩ + d₁ v[n-1] + ... + dₛ v[n-s] θ = (a₀, ..., aₚ, b₁, ..., b₉,c₀, ..., cᵣ,d₁, ..., dₛ) k ≥ max(p,q,r,s) model validation: 同前。
frequency domain method:
理論上,最佳化目標可以是時域訊號,也可以是頻域頻譜。
我不知道效果有沒有比較好。
least squares estimation with Box–Jenkins model:
θ̂ = argmin ε(θ)
ε(θ) = sum ‖Yₙ(exp(𝑖ω)) - Ŷₙ(exp(𝑖ω);θ)‖²
n=k⋯k+N
ω=0⋯M
Ŷₙ = (Aₙ/Bₙ)Xₙ + (Cₙ/Dₙ)Eₙ skip (exp(𝑖ω))
model validation:
得到正確答案之後,驗證系統模型是否正確。
檢查特定時刻誤差項Eₙ(exp(𝑖ω))的分布,照理來說,整體呈現均勻分布(白雜訊)。
如果不是均勻分布,那麼系統模型不正確。
system functionality
system functionality【尚無正式名稱】
不知道該下什麼標題才好。
「系統功能」。系統是函數、甚至是函數網路。工程師設計函數網路,達成特定任務,例如生成/濾波/估計/控制。
生成器:沒有輸入訊號,輸出一道訊號。 需要設定參數。 濾波器:系統輸出之後,追加一個系統,用來調整輸出訊號。 需要設定參數。 估計器:系統輸出之後,追加一個系統,用來估計系統參數。 輸入訊號需要前饋。 控制器:系統輸入之前,追加一個系統,用來調整輸入訊號暨輸出訊號。 輸出訊號需要回饋。
verb | action noun | agent noun ---------|-------------|----------- generate | generation | generator filter | filter | filter estimate | estimation | estimator control | control | controller
┌───────────┐
│ generator │────→ x
└───────────┘
┌──────────┐ y ┌──────────┐
x ────→│ system │────→│ filter │────→ y'
└──────────┘ └──────────┘
┌──────────┐
x ──┬─→│ system │──┬──────────────────→ y
│ └──────────┘ └─→┌───────────┐
╰──────────────────→│ estimator │───→ θ
└───────────┘
┌──────────┐ x ┌──────────┐
r ────→│controller│────→│ system │──┬─→ y
╭─→└──────────┘ └──────────┘ │
╰─────────────────────────────────╯
generator
pulse generator / oscillator
脈衝生成器:產生三角形函數或者鐘形函數,寬度極窄,自訂寬度。 振盪器:產生週期函數。例如方波、三角波、鋸齒波、弦波。 實作方式採用程式語言,事情非常簡單。將數學函數直接寫成程式碼。 實作方式採用電子電路、生化反應,事情非常複雜。此處省略。
filter
low-pass filter / high-pass filter
濾波器只保留低頻波、只保留高頻波。
band-pass filter / band-stop filter
濾波器只保留中頻波、只刪除中頻波。
Shelving filter / Butterworth filter
濾波器保留低頻波或高頻波;其餘的波,頻率相差越遠、保留越少。比較平滑柔順啦。 濾波器保留中頻波;其餘的波,頻率相差越遠、保留越少。比較平滑柔順啦。 Shelving filter其實有時域公式喔! http://www.cs.cf.ac.uk/Dave/CM0268/PDF/10_CM0268_Audio_FX.pdf
peak filter / notch filter
濾波器頻譜呈現一個尖峰、頻譜呈現一個尖谷。
moving average filter / difference filter
k點平均 y[n] = (x[n] + x[n-1] + ... + x[n-k+1]) / k 振幅頻譜呈連綿縮小圓丘 相鄰差 y[n] = x[n] + a x[n-1] 振幅頻譜呈連綿圓峰
feedforward comb filter / feedback comb filter
前饋延遲1刻 y[n] = x[n] + a x[n-1] 前饋延遲d刻 y[n] = x[n] + a x[n-d] 振幅頻譜呈連綿圓峰 回饋延遲d刻 y[n] = x[n] + a y[n-d] 振幅頻譜呈連綿圓丘上下顛倒、梳子 2nd-order其實就是延遲時刻有小數點,需要做線性內插。 https://thewolfsound.com/allpass-filter/
all-pass filter
振幅不變(常數1)、相位改變。 例如feedforward comb filter與feedback comb filter串聯。 https://ccrma.stanford.edu/~jos/pasp/Allpass_Two_Combs.html
first-order ARMA filter
low-pass first-order ARMA filter:
k
F₁(s) = ————— , lim F₁(s) = 1 , lim F₁(s) = 0
s + k s→0 s→∞
high-pass first-order ARMA filter:
s
F₂(s) = ————— , lim F₂(s) = 0 , lim F₂(s) = 1
s + k s→0 s→∞
all-pass filter:
F₁(s) + F₂(s) = 1
low-pass first-order ARMA filter: y₁[n] = a y₁[n-1] + (1-a) x[n] high-pass first-order ARMA filter: y₂[n] = a y₂[n-1] + a (x[n] - x[n-1]) where a = 1/(1+kΔt)
low-pass first-order ARMA filter:
k Y(s)
F₁(s) = ————— = ————
s + k X(s)
(s + k) Y(s) = k X(s)
s Y(s) + k Y(s) = k X(s)
y′(t) + k y(t) = k x(t)
(y(t) - y(t-Δt)) / Δt + k y(t) = k x(t)
(y[n] - y[n-1]) / Δt + k y[n] = k x[n]
(y[n] - y[n-1]) + kΔt y[n] = kΔt x[n]
(1 + kΔt) y[n] - y[n-1] = kΔt x[n]
y[n] = 1/(1+kΔt) y[n-1] + (kΔt)/(1+kΔt) x[n]
y[n] = a y[n-1] + (1-a) x[n]
where a = 1/(1+kΔt)
high-pass first-order ARMA filter:
s Y(s)
F₂(s) = ————— = ————
s + k X(s)
(s + k) Y(s) = s X(s)
s Y(s) + k Y(s) = s X(s)
y′(t) + k y(t) = x′(t)
(y(t) - y(t-Δt)) / Δt + k y(t) = (x(t) - x(t-Δt)) / Δt
(y[n] - y[n-1]) / Δt + k y[n] = (x[n] - x[n-1]) / Δt
(y[n] - y[n-1]) + kΔt y[n] = x[n] - x[n-1]
(1 + kΔt) y[n] - y[n-1] = x[n] - x[n-1]
y[n] = 1/(1+kΔt) y[n-1] + 1/(1+kΔt) (x[n] - x[n-1])
y[n] = a y[n-1] + a (x[n] - x[n-1])
where a = 1/(1+kΔt)
complementary filter
┌──────────┐
x + n₁ ──→│ F(s) │───┐
└──────────┘ ↓+
⊕──→ y
┌──────────┐ ↑+
x + n₂ ──→│ 1 - F(s) │───┘
└──────────┘
n₁: high-frequency noise
n₂: low-frequency noise
F: low-pass filter
1-F: high-pass filter
Y(s) = F(s) (X(s) + N₁(s)) + (1 - F(s)) (X(s) + N₂(s))
= X(s) + F(s) N₁(s) + (1 - F(s)) N₂(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
≈ 0
原始訊號x。 使用兩種感測器進行測量, 受到干擾而失真,得到兩種訊號x + n₁與x + n₂。 利用互補濾波器,還原原始訊號x。 一般情況:雜訊頻譜加權平均,兩者中和,改善雜訊。 完美過濾雜訊:雜訊頻譜加權平均恰好是零,得到原本輸入訊號。
estimator
estimator
估計器分為四種,功能不同。目前沒有正式學術名稱。
(1) parameter estimator = system identification
找到系統參數。
(2) model estimator
找到近似的系統,導致輸出訊號幾乎相同。
(3) statistical estimator
找到特殊統計指標,例如平均數、變異數。
(4) state estimator = observer
針對state-space model,找到內部狀態。
predictor
估計器:找到系統參數(迴歸運算)。 預測器:提前找到下個輸出訊號。 迴歸之後就能預測。 找到系統參數之後,就可以預測輸出訊號啦。 一旦獲得當前輸出訊號,就可以估計下一個輸出訊號。
linear prediction / linear predictive coding
回憶一下system operation章節, autoregressive model的regression運算。 線性預測linear prediction: 一串數列,每一個數值皆是先前緊鄰的K個數值的加權總和。 那麼系統模型就是autoregressive model。 那麼系統參數可用regression運算求得。 形成線性遞迴函數。 反覆套用線性遞迴函數、代入數列最後K個數值, 就能反覆預測下一個即將出現的數值。 線性預測編碼linear predictive coding: 壓縮:一串長長的數列,壓縮成一個線性遞迴函數, 只儲存K個函數係數、K個初始數值。 解壓縮:反覆套用函數、代入數列最後K個數值, 得到一串長長的數列。
controller
controller篇幅較長,另外開闢章節介紹。
controller應用十分廣泛,是世上最實用的演算法之一。
https://www.mathworks.com/solutions/control-systems/feedback-control-systems.html https://ctms.engin.umich.edu/CTMS/index.php?aux=Home
system functionality — controller
controller
controller / plant
追加一個系統(控制器),用來控制原本系統(受控廠)。 控制器的輸出訊號,作為受控廠的輸入訊號。 控制器調整了輸入訊號,受控廠得到了特別的輸出訊號。
in theory:
reference ─┬─→ controller ──→ plant ──┬──→ output
↑ ↓
└──────────────←───────────┘
in practice:
plant
╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╮
reference ─┬─→ controller ─→┆actuator ─→ process┆──┬──→ output
↑ ╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╯ │
└────────────── sensor ←────────────────┘
時域 頻域
reference signal 參考訊號 r[n] R(s)
control signal 控制訊號 x[n] X(s)
output signal 輸出訊號 y[n] Y(s)
controller 控制器 k[n] K(s)
plant 受控廠 g[n] G(s)
actuator 致動器
process 程序
sensor 感測器 h[n] H(s)
regulation / tracking
輸出訊號趨近(固定不變的)固定數值 輸出訊號趨近(即時改變的)參考訊號
regulator:
┌──────────┐ x ┌─────────┐
╭─→│controller│────→│ plant │──┬─→ y
│ └──────────┘ └─────────┘ │
╰────────────────────────────────╯
tracker:
┌──────────┐ x ┌─────────┐
r ──→│controller│────→│ plant │──┬─→ y
╭─→└──────────┘ └─────────┘ │
╰────────────────────────────────╯
open-loop controller / closed-loop controller
open-loop controller: r ┌──────────┐ x ┌─────────┐ y ──→│controller│──→│ plant │──→ └──────────┘ └─────────┘ closed-loop controller: r e=r-y ┌──────────┐ x ┌─────────┐ y ──→⊕──────→│controller│──→│ plant │──┬─→ -↑ └──────────┘ └─────────┘ │ ╰───────────────────────────────────╯
開迴路控制:控制器的輸入是參考訊號。 閉迴路控制:控制器的輸入是誤差。 誤差是參考訊號減輸出訊號(跟統計學家的習慣相反)。 用膝蓋想也知道,誤差訊息量更多,於是效果更好。 其實兩者可以一併使用,尤其是非線性系統。 甚至沒有必要計算誤差,直接使用參考訊號與輸出訊號,尤其是多變數系統。 效果更好的正式說法是靈敏度較低: (dT/T)/(dG/G),控制系統變化與受控廠變化的比值。 教科書談靈敏度,喜歡以P controller的穩態誤差當作範例。只是在誤導大眾。
PID controller
e(t) = r(t) - y(t) error
x(t) = kp e(t) + ki ∫ e(t) dt + kd d/dt e(t) control
^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ signal
proportional integral derivative
controller controller controller
y(t) = x(t) ∗ g(t) output
proportion 比例。乘上某個百分比的結果。 integral 積分。積分運算的結果。 derivative 導數。微分運算的結果。
P controller:原值,再乘上權重kp。誤差當前數值。 I controller:積分,再乘上權重ki。誤差前綴和。過往累計。 D controller:微分,再乘上權重kd。誤差相鄰差。瞬間變化。
closed-loop PID controller (in theory): ───┬──→ kp + ki/s + kd*s ──→ G(s) ──┬──→ -└───────────────←────────────────┘ rate feedback PID controller (in practice): ───┬──→ kp + ki/s ───────┬─→ G(s) ──┬──→ -│ -└── kd*s ←─┤ └────────────────←───────────────┘
PID tuning
此處討論tracking。參考訊號是步進函數(目標數值是1,當前數值是0)。 此時大家觀察下述指標,評定優劣。 rise time tr 到達1的時間(從0.1到0.9的時間,避免計入緩速時段) peak time tp 到達第一個局部極值的時間(最高峰) settling time ts 到達穩態的時間(保持在0.99到1.01之內) peak overshoot Mp 超過1的部分(最高峰減1,單位百分比) https://books.google.com.tw/books?id=QBAGCAAAQBAJ&pg=PA94 此時PID controller調整參數,輸出訊號會有下述效果。 kp 調整斜率、改變頻率。增益(效果是放大縮小)。 ki 調整平均、改變穩態。高通濾波器(效果是鋸齒化) kd 調整曲率、改變振幅。低通濾波器(效果是平滑化)。 Ziegler–Nichols tuning:古聖先賢發明了經驗公式。兩種調參方法。 1. quarter decay ratio 2. ultimate sensitivity method https://my.ece.utah.edu/~ece3510/Notes_PID_Tuning_long.pdf
範例,受控廠是二次微分方程式、0 zero 2 poles、-1 -2。
圖解,位於影片後段。
stability analysis
stability analysis
觀察系統的pole和zero,判斷何時穩定。 觀察特製圖表,調整pole和zero,以便達成穩定。 此處介紹四種圖表: 1. pole–zero plot 2. root locus plot 3. Nyquist plot 4. Bode plot 想要介紹這四種圖表,需要非常非常多的插圖,我實在懶得重製。 以下推薦幾本經典教科書,大家可以自己去找圖片。 《Linear Control System Analysis and Design: Conventional and Modern》 《Automatic Control Systems: Basic Analysis and Design》 《Modern Control Engineering》
除了學會圖表原理,也得學會製作圖表。 上個世紀,大家必須學會手工作圖。 這個世紀,大家只需學會用MATLAB指令製圖。 一個指令搞定一種圖表。 不過我沒有閒情逸致介紹MATLAB指令。 至於製圖演算法,MATLAB沒有公開,學校沒教,我也通靈不出來。 抱歉我沒法介紹。
pole–zero plot
極零圖:transfer function的poles與zeros。極X零O。 畫出poles和zeros的位置,以便判斷穩定性。 如果極X都在左半複平面(開區間、不含虛軸),則穩定。 如果右半複平面沒有極X(閉區間、包含虛軸),則穩定。 transfer function的poles,就是分母的zeros。 畫出分母的極零圖,亦可判斷穩定性。 如果右半複平面沒有零O,則穩定。
root locus plot
https://control.asu.edu/Classes/MAE318/318Lecture12.pdf
根軌跡圖:transfer function附帶一個參數(例如kp)。
窮舉參數值,畫出poles的變化軌跡,以便判斷穩定性。
1. open-loop controller:
r x y
───→ controller ──→ plant ────→
K(s) G(s)
transfer function:
K(s)G(s)
2. closed-loop controller:
r e=r-y x y
───┬──────→ controller ──→ plant ──┬──→
-↑ K(s) G(s) ↓
└─────────────←─────────────────┘
transfer function:
K(s)G(s)
————————————
1 + K(s)G(s)
3. 改寫成分式
K(s) = nᴋ(s) / dᴋ(s)
G(s) = nɢ(s) / dɢ(s)
transfer function:
K(s)G(s) nᴋ(s)nɢ(s)
———————————— = ———————————————————————
1 + K(s)G(s) dᴋ(s)dɢ(s) + nᴋ(s)nɢ(s)
4. P controller:
K(s) = kp
nᴋ(s) = kp
dᴋ(s) = 1
transfer function:
K(s)G(s) kp G(s) kp nɢ(s) nɢ(s)
———————————— = ——————————— = ———————————————— = ————————————————
1 + K(s)G(s) 1 + kp G(s) dɢ(s) + kp nɢ(s) dɢ(s)/kp + nɢ(s)
transfer function的poles,就是分母的根。
1 + kp G(s) = 0 或 dɢ(s) + kp nɢ(s) = 0 或 dɢ(s)/kp + nɢ(s) = 0
注意到,如果今天不是採用P controller,那麼需要重新推導。
現在要畫出transfer function的poles軌跡。kp = 0⋯∞。
當kp = [0,∞),根軌跡是分母1 + kp G(s)的根。
當kp = 0,根軌跡起點恰是dɢ(s)的根,即是G(s)的poles。
當kp → ∞,根軌跡終點恰是nɢ(s)的根,即是G(s)的zeros。
採用P controller的情況下,K(s) = kp只是一個倍率。
此時G(s)的zeros/poles,
恰是open-loop transfer function K(s)G(s)的zeros/poles。
導致大家認為root locus的起點和終點就是開迴路的poles/zeros。
然而一般情況下根本無法牽扯到開迴路。成為歷史共業。
古聖先賢發明了手工製圖方法。好幾條規則。
https://www.mit.edu/people/klund/weblatex/node8.html
5. closed-loop controller with sensor:
r e=r-y x y
───┬──────→ controller ──→ plant ──┬──→
-↑ K(s) G(s) │
│ │
└─────────── sensor ←───────────┘
H(s)
transfer function:
K(s)G(s)
————————————————
1 + K(s)G(s)H(s)
教科書定義K(s)G(s)H(s) = k L(s),但是內文根本沒有用到。來亂的。
Nyquist plot
https://lpsa.swarthmore.edu/Nyquist/NyquistStability.html https://ocw.mit.edu/courses/18-04-complex-variables-with-applications-spring-2018/44f1db513a6a17d655abe0b6ff7748fc_MIT18_04S18_topic11.pdf
Nyquist圖:實施下述變換。 輸入:圍線(封閉路徑)(點集合),順時針圍住右半複平面。s = (-𝑖∞,+𝑖∞) 函數:逐點對應,s -> 1+K(s)G(s)。 輸出:新圍線。稱作Nyquist圖。 總結:右半複平面圍線,每一點s計算1+K(s)G(s),逐點描繪新圍線。 性質:s = (-𝑖∞,0]與s = [0,+𝑖∞)的新圍線呈上下鏡面對稱。 取巧:加一就是圍線往右位移。大家習慣畫K(s)G(s),再用-1取代原點。 取巧:當K(s) = kp,大家習慣畫G(s),再用-1/kp取代-1。 Cauchy's integral theorem: 複變函數f(z),圍線積分路徑圍住零個洞,圍線積分是0。 Cauchy's residue theorem: 複變函數f(z),圍線積分路徑圍住多個洞,圍線積分是2π𝑖乘上留數和。 Cauchy's argument principle: 複變函數f′(z)/f(z),圍線積分路徑圍住P個極、Z個零,圍線積分是2π𝑖(Z-P)。 援引winding number,上述圍線積分重新視作逆時針繞圈(Z-P)次。 Cauchy's argument principle: 複變函數f(z),有多個極零。 一條圍線,逆時針繞圈一次,圍住P個poles、Z個zeros, 該條圍線實施f(z)變換之後, 一條圍線,逆時針繞圈(Z-P)次,圍住原點。 Nyquist stability criterion: 閉迴路系統極零圖,右半複平面不含閉迴路系統的pole,則穩定。 閉迴路系統K(s)G(s)/(1+K(s)G(s))的pole,就是分母1+K(s)G(s)的zero。 分母1+K(s)G(s),有多個極零。 分母極零圖,右半複平面不含分母1+K(s)G(s)的zero,則穩定。 分母極零圖,右半複平面圍線,沒有圍住分母1+K(s)G(s)的zero,則穩定。 分母極零圖,令右半複平面有P個pole、Z個zero,令圍線是逆時針。 Nyquist圖,逆時針繞圈(-P)次,且圍住原點,則Z=0,則穩定。 (必須事先知道P是多少。因此此定理不實用。) 分母極零圖,右半複平面圍線,習慣畫順時針。 Nyquist圖,習慣畫K(s)G(s)而非1+K(s)G(s),用-1取代原點。 Nyquist圖,逆時針繞圈P次,且圍住-1,則穩定。 採用P controller的情況下,K(s) = kp只是一個倍率。 Nyquist圖,習慣畫G(s)而非K(s)G(s),用-1/kp取代-1。 Nyquist圖,逆時針繞圈P次,且圍住-1/kp,則穩定。
兩種製圖方式。 一、已知系統,以紙筆計算: 先畫波特圖(頻譜),再依此畫Nyquist圖。 s = (-𝑖∞,+𝑖∞)恰好對應傅立葉轉換的每種頻率的波。 二、未知系統,以儀器測量: 大家假設K(s)G(s)的pole比zero數量多、分母比分子次方高, 當s → ∞,則分母1+K(s)G(s) → 1。Nyquist圖可以畫得出來。 即便系統不穩定,Nyquist圖在下述情況還是畫得出來: 分母極零圖,右半複平面圍線,沒有途經分母1+K(s)G(s)的zero。 也就是說,閉迴路系統的pole不在虛軸上面。
Bode plot
https://lpsa.swarthmore.edu/Bode/BodeReviewRules.html
波特圖:系統頻譜,分為振幅頻譜和相位頻譜。 振幅頻譜橫軸與縱軸都取log, 相位頻譜橫軸取log,兩者合稱波特圖。 振幅頻譜:採用log-log plot。橫軸頻率取log、縱軸振幅取log。 相位頻譜:採用semi-log plot。橫軸頻率取log、縱軸角度。 Bode stability criterion: if open-loop K(s)G(s) is stable and |K(s)G(s)| < 1 for all s: ∠K(s)G(s) ≡ 180° (mod 360°) then closed-loop (K(s)G(s))/(1+K(s)G(s)) is stable. 先看相位頻譜,-180°是哪幾個頻率。 再看振幅頻譜,這幾個頻率的振幅均小於1,則穩定。 這是利用開迴路來看閉迴路是否穩定。 實務上恰恰相反。大家利用閉迴路來讓開迴路變得穩定。
兩種製圖方式。 一、已知系統,以紙筆計算: 針對LTI system、並且已知zero/pole。 一、根是零:振幅一段:過原點45°降線。(原點取log之後是1) 相位一段:-90°水平線。 二、實根:振幅兩段:0°水平線、45°降線。 相位三段:0°水平線、45°降線、-90°水平線。 分裂點:彎曲過渡,其截距3dB。 三、共軛複根:振幅兩段:0°水平線、分裂點隆起、45°降線。 相位兩段:0°水平線、分裂點漸變、-180°水平線。 四、重根:振幅:水平線高度乘上倍率。降線斜率乘上倍率。 相位:水平線高度乘上倍率。 倍率是重根次數。 五、上述都是極。極零升降相反。 然而現在大家都用電腦軟體製圖。上述手法只能用來人工驗算。 二、未知系統,以儀器測量: 針對LTI system、不知zero/pole。 系統輸入:特定頻率的弦波,振幅一、相位零。 系統輸出:以儀器測量其振幅和相位,描出波特圖一點。 (即是frequency response。) 如果系統不穩定,系統輸出無限大,波特圖有些頻率畫不出來。
compensator
compensator = filter
補償器用來追加poles或zeros。用途如同filter。 根據transfer function串聯乘法原理,補償器接在受控廠前面或後面都行。 PID controller + lead compensator是常見組合。 lead compensator ≈ high-pass filter ≈ PD controller lag compensator ≈ low-pass filter ≈ PI controller notch compensator ≈ band-pass filter lead compensator K(s) = (s-z)/(s-p) and |z| < |p| 左X右O lag compensator K(s) = (s-z)/(s-p) and |z| > |p| 左O右X
non-minimum phase system
右半複平面出現zeros。 當參考訊號是步進函數,則輸出訊號是先蹲後跳、聯結車轉彎。一開始衝向負值。 沒救了。compensator沒有辦法解決這種情況。 一種直覺的方式是追加poles抵銷zeros,分母分子約分之後一起消失不見。 然而實務上無法完全對準。 誤差、設備老化,都會導致zeros偏移。 稍有差池,輸出訊號就會偶然出現正負無限大。 導致電路過載燒掉、動力機械暴衝、反應槽爆炸。 非常危險。 實務上不能追加右半複平面poles抵銷右半複平面zeros。 我不知道有沒有其他解法。也許根本不需要解,順其自然就好。
gain margin / phase margin
兩個指標,用來粗略判斷前述四個調參指標以及穩定性。 增益邊界:相位為-180°=-π的頻率(波特圖相位曲線穿越橫軸之處)的振幅,減去0dB=1。 相位邊界:振幅為0dB=1的頻率(波特圖振幅曲線穿越橫軸之處)的相位,減去-180°=-π。 lead/lag compensator直接影響這兩個指標。
type 0/1/2 system
有0/1/2個pole等於零。 兩種出現情況: 一、補償器追加pole。 二、輸入訊號是constant/unit step/ramp function。 如果是情況二,穩態定義必須隨之改變, 例如零函數/零次常數函數/一次直線函數/二次拋物線函數。
second-order linear constant-coefficient differential equation
專著《Feedback Control of Dynamic Systems》。
second-order linear constant-coefficient differential equation
http://mocha-java.uccs.edu/ECE5540/ECE5540-CH01.pdf
system response
已知輸入、系統,求得輸出。 輸入:已知函數(教科書習慣討論下述三種) 系統:已知函數(教科書習慣討論一階微分方程式、二階微分方程式) 輸出:未知函數。
1. impulse response:脈衝函數。隔壁棚結構分析很常用,控制系統則不使用。 2. frequency response:複弦波。得到波特圖其中一個數值。 3. step response:單位步進函數。主角。例如啟動馬達至定速。
steady state
已知輸入、系統,求得輸出最終數值。 輸入:教科書習慣討論步進函數(step response) 系統:教科書習慣討論一階微分方程式、二階微分方程式 輸出:求得穩態
步進函數:傅立葉轉換是1/s。 針對FIR系統,輸入訊號採用步進函數,輸出訊號很快變成常數,稱作DC gain。 最終值定理:時域穩態(時間趨近無限大)=頻域乘上s後頻率趨近無限大。 系統改寫成transfer function形成分式。觀察分母: 一、實根(一次多項式):輸出指數衰減。 步進函數恰好跟最終值定理互相抵銷,剩下系統。 二、共軛複根(二次多項式):輸出振盪。兩種表達方式。 甲、decay rate σ and damped frequency ωd 乙、damping ratio ζ and natural frequency ωn 其他情況: 一、連乘積:實係數多項式因式分解,總是得到一次暨二次多項式連乘積。 因此只需討論實根、共軛複根兩種情況。 最後讓transfer function相乘。 二、重根:一次暨二次多項式的次方。
tr/tp/ts/Mp
PID tuning的四個指標,可以畫成圖形,併入極零圖。
參考訊號是步進函數,R(s) = 1/s。
參考訊號R(s)、閉/開迴路系統T(s),串聯就是乘法,
得到輸出訊號Y(s) = R(s)T(s)。
極零圖基本不變,只多了一個pole位於原點。
教科書只針對開迴路,受控廠G(s)是二次微分方程式,沒有控制器K(s) = 1。
(教科書討論開迴路,但是照理應該討論閉迴路。因此以下結論沒有實用價值。)
(討論閉迴路,結果相當複雜,缺乏美感。)
(作者故意將閉迴路改成開迴路,然後挪到前面章節,我猜是為了美化。)
R(s) = 1/s unit step function
K(s) = 1 no controller
ωn²
G(s) = ——————————————————— second-order LTI system
s² + 2 ζ ωn s + ωₙ²
ωn²
Y(s) = R(s)K(s)G(s) = —————————————————————— open-loop
s(s² + 2 ζ ωn s + ωₙ²) controller
y(t) = 1 - exp(-ζ ωn t) sin(ωd t + ϕ) / sqrt(1 - ζ²)
where ωd = ωn(1 - ζ²)
ϕ = tan⁻¹(sqrt(1 - ζ²) / ζ)
根據y(t),推導tr/tp/ts/Mp的滿足條件(不等式),畫在複平面。
可行解位於交集(四張圖片左半複平面重疊區域)。
https://cf.ppt-online.org/files/slide/c/C4t2nPmwWsDjy96FoSxvVrU7Iq3gMHBY5ziX1l/slide-32.jpg
nonlinear system
sliding mode control
https://medium.com/@saurav310304/f9fc11c0177a
input-to-state stability
https://en.wikipedia.org/wiki/Input-to-state_stability
system design
system design
「系統設計」。創造系統功能,達成特定任務。
現實世界擁有極端狀況與突發狀況。各種邊邊角角,必須一一應對。現實世界擁有先天限制與外在條件。各種分歧矛盾,只能折衷妥協。即便是基礎的系統功能,也需要細膩的系統設計。
filter design
aliasing / anti-aliasing filter
取樣,連續波變離散波。 根據取樣定理, 頻率超過取樣頻率兩倍的連續波(高頻連續波、取樣間隔太大), 將得到頻率稍小的離散波(波長稍長)。 固定取樣頻率時,若上述連續波頻率增大,則上述離散波頻率減小。 從頻譜來看,差不多是往左鏡射、往左翻書,中譯疊頻。 解法是連續波事先做lowpass filter。 去除高頻連續波,讓它沒有東西用來鏡射翻書。 但是濾波器無法做到完美矩形,只能陡降斜下。 稱作sharp cutoff lowpass filter。 曲線越陡價格越貴。
spectral leakage / window function
傅立葉轉換,只有整數倍頻率波。 如果訊號不是整數倍頻率波所組成,那就完蛋了。 非整數倍頻率波,將分散到各個整數倍頻率波,漏的到處都是。 訊號預先乘以窗函數,才做傅立葉轉換,稍微有點療效。 窗函數也可以想成是一種濾波器:連綿圓丘,消滅非整數倍頻率波。
cutoff frequency
3dB cutoff frequency https://en.wikipedia.org/wiki/Cutoff_frequency
Q factor
電子電路經常產生電磁振盪,訊號基本上都在抖動。 https://en.wikipedia.org/wiki/Q_factor
control system design
control system model
(1) optimal control
additional objectives
(2) model predictive control
additional constraints
(3) robust control
additional parameters
專著《PID Controllers: Theory, Design, and Tuning》。
(1) model-following control
reference signal is generated by your system model.
(2) cascade control
control sequentially. control one by one.
(3) adaptive control / self-tuning control
control recursively. controller of controller.
(controller with additional parameters)
model-following control:
┌───────────┐ r e ┌──────────┐ x ┌─────────┐
│ reference │──→⊕──→│controller│────→│ plant │──┬─→ y
│ model │ -↑ └──────────┘ └─────────┘ │
└───────────┘ ╰─────────────────────────────────╯
cascade control:
┌──────┐ ┌──────┐ ┌────────┐ ┌────────┐
r ──→│ ctr2 │──→│ ctr1 │──→│ plant1 │─┬─│ plant2 │─┬→ y
╭─→└──────┘╭─→└──────┘ └────────┘ │ └────────┘ │
│ ╰────────────────────────╯ │
╰────────────────────────────────────────────────╯
adaptive control / self-tuning control:
┌──────────┐ ┌─────────┐
╭──│controller│←────│estimator│←─╮
│ └──────────┘ └─────────┘←╮│
│ ╭─────────────╯│
╰─→┌──────────┐ x │ ┌─────────┐ ╭╯
r ────→│controller│───┴→│ plant │─┼─→ y
╭─→└──────────┘ └─────────┘ │
╰───────────────────────────────╯
theorem / principal / criterion
Youla–Kucera parametrization (Q parametrization) Bode's sensitivity integral LaSalle's invariance principle small-gain theorem
system realization
system realization
「系統實現」。完成系統分析、系統設計之後,工程師利用電子元件、機械零件打造相似系統,以便模擬現實世界、改造現實世界。
我只聽過四種流派:
一、電子電路:風靡全世界。雖然台灣是地球上最大的電子零件生產基地,台灣也有專門設計電子電路的公司,但是我不太確定台灣是否有這方面的專家。有言道:十萬青年十萬肝,GG輪班救台灣。關鍵字:電學、電子學、電路學、積體電路設計。
二、機械結構:我一竅不通。相關產業從基礎到進階,依序是工具機產業、重機械產業、運輸工具產業、軍工產業。台灣主攻工具機產業。有言道:機械所學乃理工之大成,出路非常之廣。關鍵字:力學、材料力學、機構設計、微機電系統。
三、生化反應:發展中。雖然台灣之前打算成立藥物代工廠、學名藥設計實驗室,但是以失敗告終。有言道:一日生科,終生科科。關鍵字:化學動力學、酵素動力學、藥物動力學、系統生物學。
四、深度學習:最近十年才剛萌芽。已經做到生成/濾波,正在嘗試估計/控制。正在經歷大浪潮,準備迎接大泡沫。有言道:站在風口上,豬都會飛。關鍵字:人工智慧、機器學習、深度學習。
electronic circuit
比方說,RC電路可以製作low-pass filter與high-pass filter,RLC電路可以製作oscillator。
比方說,phase-locked loop是一種controller,用來控制訊號的相位,由三個元件構成。
phase-locked loop: 1. voltage-controlled oscillator 2. phase detector 3. loop filter (e.g. PID controller)
比方說,voltage regulator穩壓器,用來控制電壓。大部分家電和3C產品都有穩壓器。教學文章。
專著《Introduction to Circuit Analysis》。
mechanical structure
比方說,單一機件的運動,根據牛頓運動定律、線性阻尼,形成二階線性常係數微分方程式。整個機構的運動,形成方程組,對應到線性非時變系統。
比方說,利用脈衝響應檢測橋樑強度。拿個鐵鎚迅速敲一下,輸入訊號就是脈衝函數。均勻安裝震動感測器,就能得到輸出訊號。訊號處理只談一維數列,橋樑則是三維張量。
專著《Robot Modeling and Control》。
biochemical reaction
比方說,Goodwin oscillator與Elowitz–Leibler repressilator。
專著《Mathematical Modeling in Systems Biology: An Introduction》。
deep learning
比方說,generative adversarial network是adaptive control。
專著《Data-Driven Science and Engineering: Machine Learning, Dynamical Systems, and Control》。