JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

線性與非時變:LTI 的超能力

宇宙中大多數系統都難以分析。但有一個特別溫馴的家族——[[ee-lti-system|LTI 系統]]——卻臣服於一個近乎魔法的技巧:對它輕敲一下,你就能預知它對**任何**訊號的回應。本篇教你如何測試一個系統是否擁有這項超能力,以及為什麼工程師會不計代價地把設計留在 LTI 俱樂部裡。

為什麼這一族系統獨得寵愛

在第一階你認識了訊號——那些在導線與空氣中流動的東西。而系統就是夾在中間、把一個訊號轉換成另一個訊號的東西:放大器、濾波器、吉他效果器、定速巡航迴路,甚至是隨風搖晃的混凝土橋。輸入訊號 x,輸出訊號 y。工程的整場遊戲就是預測那個 y。壞消息是:在完全一般的情況下,這場遊戲根本贏不了。系統可以是非線性的、可以每秒鐘改變行為、可以用千頭萬緒的方式依賴它的整段歷史。對一個任意的黑盒子,根本沒有乾淨的公式。

好消息是,被工程打造出來的世界裡,有驚人比例的部分——至少在實用的工作範圍內——可以用具備兩個溫馴性質的系統來描述得很好:線性非時變。把這兩者擺在一起,你就得到了LTI 系統,整個訊號與系統領域中最重要的物件。LTI 系統溫馴到只要算一次就什麼都知道,卻又豐富到足以描述放大器、RC 電路、天線、控制迴路、音訊殘響,乃至光在玻璃中的傳播。掌握它們,電機工程裡很大一塊就會豁然開朗。

線性=縮放+疊加,毫無意外

線性是一種承諾:當你把多個輸入組合在一起時,系統絕不會給你意外。它有兩半,合起來稱為疊加原理。第一,齊次性(縮放):若輸入 x 產生輸出 y,則把輸入放大 a 倍,輸出就恰好是 a·y——輸入加倍,輸出也加倍,不多也不少。第二,可加性:若 x₁ 給出 y₁、x₂ 給出 y₂,則同時送入 x₁ + x₂ 會恰好得到 y₁ + y₂——兩個輸入各走各的,互不干擾、互不打架,也不會孳生出新的頻率。

為什麼這如此重要?因為若系統是線性的,你就能把任何雜亂的輸入拆成一堆簡單片段的總和,讓每個簡單片段各自通過系統,然後把答案加起來就好。困難的問題就此瓦解成容易的問題。這正是你或許在電阻網路裡見過的疊加定理背後的邏輯——而在這裡,它被提升為一整類系統的定義性質。

非時變=系統不在乎現在幾點

第二項超能力是非時變,而且它更容易想像。若把輸入延遲,輸出就單純地延遲同樣的量,且回應的*形狀*不變,這個系統就是非時變的。今天敲一扇木門,它「咚」一聲;明天用一模一樣的力道敲,你會得到一模一樣的「咚」,只是移到了明天。門的行為不取決於現在幾點。形式上來說:若 x(t) → y(t),則對任何位移 τ 都有 x(t − τ) → y(t − τ)。

什麼會破壞非時變?任何規則裡明白提到時鐘的東西——隨時間漂移的係數、被你逐漸調高的增益、乘上一個 t。元件正在緩緩升溫的電路,嚴格說是時變的;電池正在耗盡的放大器也是。我們通常忽略這些緩慢的漂移,因為在真正要緊的那幾毫秒裡,系統*實質上*是非時變的。和線性一樣,非時變是一種配得上的近似,不是白送的禮物。

兩個實作測試:一個過、一個不過

理論很廉價;我們來實際測試兩個看似無辜的系統。做法是機械化的,值得背下來:測線性時,把一個「縮放再相加」的輸入推過去,再和「縮放再相加」的輸出相比。測非時變時,把輸入延遲,再檢查輸出是不是只是延遲後的原輸出。第一個受害者:離散時間系統 y[n] = 2·x[n] + 3。它看起來是線性的——有乘法也有加法——但看看那個常數搞了什麼鬼。

SYSTEM A:  y[n] = 2*x[n] + 3      <- the sneaky +3

LINEARITY TEST (does scaling pass through?)
  let a = 2.
  scale input first:   x'[n] = a*x[n] = 2*x[n]
     -> system gives:  2*(2*x[n]) + 3 = 4*x[n] + 3
  scale output instead: a*y[n] = 2*(2*x[n] + 3) = 4*x[n] + 6

  4*x[n] + 3   != (NOT)  4*x[n] + 6      <-- mismatch of 3
  => homogeneity FAILS  =>  NOT linear.

  (The +3 is an output even when x = 0. A linear system
   must obey "zero in -> zero out". This one doesn't.)

VERDICT:  affine, not linear  ->  NOT an LTI system.
          (It IS time-invariant -- no 'n' in the coeffs --
           but you need BOTH, so it's still out.)
惡名昭彰的 +3。一個常數偏移讓系統變成**仿射**而非線性——而最明顯的破綻就是:x = 0 不再產生 y = 0。

現在來一個栽在*另一個*測試上的連續時間例子:y(t) = t·x(t),一個把輸入乘上時間本身的系統。它線性嗎?是的——把 x 縮放,輸出就跟著縮放;把兩個輸入相加,輸出也相加,因為在每個瞬間 t 不過是個固定的乘數。但它非時變嗎?我們來延遲一下看看。

SYSTEM B:  y(t) = t * x(t)

TIME-INVARIANCE TEST (does a delay just delay the output?)
  Path 1 -- delay the OUTPUT by tau:
     y(t - tau) = (t - tau) * x(t - tau)

  Path 2 -- delay the INPUT by tau, then run the system:
     feed x(t - tau)  ->  system multiplies by t
                       ->  t * x(t - tau)

  Compare:  (t - tau)*x(t-tau)   vs   t*x(t-tau)
            differ by  tau*x(t-tau)   != 0 in general

  => the two paths DISAGREE  =>  NOT time-invariant.

VERDICT:  linear, but time-VARYING  ->  NOT an LTI system.
          (The multiplier 't' literally is the clock,
           so the system's behaviour depends on when
           the signal arrives.)
y(t) = t·x(t) 完美線性,卻栽在非時變上——這證明了這兩個性質確實是兩道分開的關卡。

回報:一敲揭示一切

回報在這裡華麗地兌現了。假設你的系統兩個測試都過了——它是 LTI 的。現在送進你能想像的最尖、最簡單的一戳:一個脈衝,一道無限短促的單一尖刺,記作 δ。跑出來的東西稱為脈衝響應,記作 h。它是系統的簽名、它的指紋、你彈它一下時它發出的聲音。而 LTI 理論驚人的主張是:h 就是你需要知道的一切。告訴我 h,我就能預測*任何*你將施加的輸入所對應的輸出——正弦波、一首歌、嘈雜的感測器讀數,什麼都行。

  1. 分解。 靠線性,把任意輸入訊號切成一串密集的微小縮放脈衝——每個瞬間一個脈衝,各自以輸入在該處的值為權重。
  2. 位移。 靠非時變,每個被延遲的脈衝都產生*相同*的響應 h,只是滑到它自己的抵達時刻。一個指紋,被複製並位移。
  3. 疊加。 把所有那些被位移、被縮放的 h 副本加起來。那個大總和*就是*輸出——而這個運算有個名字:捲積,寫作 y = x ∗ h。

把那三步再讀一遍:分解、位移、疊加。 第一步倚靠線性,第二步倚靠非時變,第三步則是只有線性才允許的相加。捲積不是從天而降的任意公式——它是你剛學會測試的那兩個性質的*直接邏輯後果*。下一階會把這台捲積機器完整建起來;此刻只要記住標題:對 LTI 系統而言,脈衝響應就是一份完整的描述。 那一條曲線 h 就捕捉了增益、延遲、振鈴、平滑——整個盒子的全部個性。