信號流圖

信號流圖（Signal-flow graph）最早是由克勞德·香農所發明，但因為美國麻省理工學院的塞繆爾·傑斐遜·梅森於20世紀50年代初提出這個詞，因為也稱梅森圖（Mason graph），信號流圖是特殊的流向圖，屬於有向圖，其中的節點表示系統的變數，而連接兩節點的邊表示二個變數之間的函數關係。信號流圖的理論是以有向圖為基礎，不過是應用有向圖來表示系統，和有向圖的原理差異較大。

信號流圖最常用來表示物理系統和其控制器（網宇實體系統或控制系統）之間的關係，不過在許多電子電路、運算放大器電路、數位濾波器、狀態變數濾波器及類比濾波器的分析中也會用到信號流圖。在許多文獻中，信號流圖都可以轉換為一組線性方程或是線性微分方程，而各組變數之間的增益則用邊上的係數來表示，也有些信號流圖會用特殊方式來表示非線性系統。而利用梅森增益公式可以找到輸入和輸出之間的關係。

## 基本信號流圖概念

以下是梅森提出信號流圖的基本概念：

在基本信號流圖中，節點的相依關係可以用指向此節點的箭頭表示，節點會影響的其他節點可以用由節點射出的箭頭表示，最常見的信號流圖中，每一個節點i若有指向此節點的箭頭，此節點的值會和這些箭頭另一端的節點有關，而且呈一函數關係，舉例為Fi。(a) 圖表示各節點有以下的關係：

$$\begin{align} <pre> x_\mathrm{1} &= \text{an independent variable} \\ x_\mathrm{2} &= F_2(x_\mathrm{1}, x_\mathrm{3})\\ x_\mathrm{3} &= F_3(x_\mathrm{1}, x_\mathrm{2}, x_\mathrm{3})\\ </pre> \end{align}$$

節點x1是獨立節點，沒有箭頭指向此節點，節點x2和x3和其他節點的關係分別如圖(b)和(c)。

信號流圖會針對每一個節點定義一函數，處理其輸入的變數。每個非獨立節點都會依個別特定方式來處理輸入信號，再將結果送到其他的節點「信號流圖一開始是由梅森所定義，其中表示了許多的函數關係，可能線性，也可能非線性。」

信號流圖中的變數可以自行依需要選定，系統本身有其方程式，但也可以根據其系統及架構來選擇變數，繪製信號流圖，複雜的系統可能會有多種選擇變數的方式。同一個系統也可以用不同的信號流圖來表示，系統和信號流圖之間沒有一對一的對應關係。

## 線性信號流圖

線性信號流圖只針對線性非時變系統。在為系統建立模型時，第一步是找到確認系統行為的方程式，先不考慮因果關係（這稱為acausal modeling），之後可以由方程式推出信號流圖。

線性信號流圖也是由節點及箭頭組成，不過箭頭上會有加權的係數。節點是線性方程組的變數，而加權的係數則是方程組中的係數，信號只會依節點的方向，由一個節點流到另一個節點。線性信號流圖中只能表達信號和係數相乘，以及數個信號的相加，這已足以表示線性方程組。當一信號延著箭頭一個節點到另一個節點時，此信號就乘以箭頭上的係數，若幾個箭頭指到同一個節點時，這幾個信號會相加（若需要相減，可以調整對應係數為負即可）。

針對用線性代數方程或是微分方程來表示的系統，線性信號流圖在數學上等效於其方程式，看信號流圖上各節點信號的來源以及箭頭上的係數即可得到方程式。箭頭上的係數多半會是實數或是某種參陣列成的線性函數（例如拉氏轉換的變數s）。

### 基本元件

線性信號流圖是和以下形式線性系統有關的信號流圖：

$$\begin{align} <pre> x_\mathrm{j} &= \sum_{\mathrm{k}=1}^{\mathrm{N}} t_\mathrm{jk} x_\mathrm{k} </pre> \end{align}$$

其中$t_{jk}$ 為從$x_k$到$x_j$的增益。

右圖中有一些線性信號流圖中的基本元件。

(a)是標示為$x$的節點，節點是圖的一個頂點，表示變數或是信號。

(b)是一個有$m$倍增益的分支，意思是指箭頭的終點會是箭頭起點的$m$倍。增益可能是簡單的常數，也有可能函數（例如表示拉氏轉換、傅立葉轉換及Z轉換的$s$, $\omega$或$z$）。

(c)是增益為1的分支，當分支上沒有標示增益時，就假設增益為1。

(d) $V_{in}$為輸入節點。此例中，輸出是$V_{in}$乘以增益$m$。

(e) $I_{out}$為輸出節點，輸出值為輸入值的$m$倍。

(f) 表示加法。若二個或是多個箭頭的終點是同一個節點，該節點的值是各箭頭表示信號的和。

(g) 是簡單的迴路，迴路增益為$A \times m$。

(h) 表示$Z = aX + bY$。

以下是一些線性信號流圖中常見的術語：

- 路徑（Path）。路徑是依箭頭方向一直延伸的連續數個分支。
- 開路徑（Open path）是指路徑上沒有同一個節點走到二次或二次以上。
- 路徑增益（Path gain）是指路徑上所有分支增益的乘積。
- 迴路（Loop）是指封閉的路徑，路徑的起點和終點是同一個節點，路徑上的節點都只經過一次。
- 迴路增益（Loop gain）是指迴路上所有分支增益的乘積。
- 不相連迴路（Non-touching loops）是指二個或多個沒有共同節點的迴路。

## 和方塊圖的關係

有些研究者認為，線性信號流圖的限制比方塊圖要多，信號流圖嚴謹用有向圖來表示線性代數方程。

有些研究者則認為為線性信號流圖和線性方塊圖是描述一個系統的二個等效方式，用任何一個都可以找到系統的增益。

Bakshi及Bakshi提供了一個信號流圖和方塊圖比較的列表，Kumar另外有一個列表。根據Barker等人的論點：

「信號流圖是最方便表示動態系統的方式。圖的拓樸很緊湊，處理的規則比處理方塊圖的規則要簡單。」

在右圖中有一個回授系統的簡單方塊圖，以及二個對應的信號流圖。輸入R(s)是輸入信號的拉氏轉換，是信號流圖的源節點（沒有輸入邊的節點），輸出信號C(s)是輸出變數的拉氏轉換，表示為最終節點（沒有輸出邊的節點），G(s)和H(s)為傳遞函數，H(s)可以提供調整後的輸出信號B(s)給輸入端，二個信號流圖是等效的。

## 分析及設計中的信號流圖

信號流圖也可以用來分析系統，用來瞭解一個已有系統的模型，也可以用來合成，確認不同設計的特質。

### 用在動態系統分析的信號流圖

在建構動態系統的模型時，以下是Dorf和Bishop列出的步驟：

- 定義系統以及其元件。
- 將其數學模型公式化，並且列出需要的假設。
- 寫出描述模型的微分方程。
- 求解方程式，得到輸出變數的解。
- 檢驗得到的解，並且檢驗假設。
- 若有需要，重新分析系統或是重新設計系統。

—RC Dorf and RH Bishop, Modern Control Systems, Chapter 2, p. 2

在上述程中，物理系統的數學模型方程可以用來推導信號流圖方程。

### 用在設計合成的信號流圖

信號流圖也用在設計空間探索（DSE），一個趨近實際呈現的過渡表示方式。設計空間探索會在許多不同的選項中找一個適合的解。典型的分析流程會先針對待確認的系統，以其各元件的物理方程式來建模。設計空間探索不同，其設計合成的規格是想要的傳遞函數。例如，不同的策略會產生不同的信號流圖，可由此推導出對應的實現方式。

另一個使用有說明的信號流圖的例子是連續時間行為的表示方式，作為架構生成器的輸入。

## 香農公式以及香農-哈普公式

香農公式（Shannon's formula）是計算類比電腦中互聯放大器增益的解析表示法。在二次大戰時，香農在探就類比電腦的功能運作時，發展了香農公式。因為戰爭期間的限制，香農當時沒有發表他的研究。塞繆爾·傑斐遜·梅森在1952年重新發現了相同的公式。

哈普將香農公式擴展到在圖形上封閉的系統。香農-哈普公式（Shannon-Happ formula）可以計算傳遞函數、靈敏度、誤差函數等。

對於一致的單邊線性方程，香農-哈普公式可以用直接替代的方式求解（非迭代法）。

NASA的電路計算軟體NASAP就是以香農-哈普公式為基礎。

## 線性信號流圖的例子

### 理想的負回授放大器

圖3是由漸近增益模型表示負反饋放大器的一種可能的信號流圖，可以得到放大器增益的方程式為

$G = \frac {y_2}{x_1}$ $= G_{\infty} \left( \frac{T}{T + 1} \right) + G_0 \left( \frac{1}{T + 1} \right) \ .$

其參數的說明如下：T = 返回比，G∞ = 直變大器增益，direct amplifier gain, G0 = 前饋（表示回授可能有的雙向特性，也可能是刻意的前饋補償）。

增益G0和G∞的意思分別是時間接近零及無限大時的增益：

$$G_{\infty} = \lim_{T \to \infty }G\ ; \ G_{0} = \lim_{T \to 0 }G \ .$$

有許多可能的信號流圖，對應不同的增益關係。圖4是另一個信號流圖，其漸近增益模型比較容易用電路表示。在此圖中，參數β為回授因子，而A為控制因子，和電路中的相依訊號源有關，配合信號流圖，可以得到增益為

$G = \frac {y_2}{x_1}$ $= G_{0} + \frac {A} {1 - \beta A} \ .$

若要連接到漸近增益模型，參數A和β不能是任意的電路參數，需要和返回比T有以下的關係：

$$T = - \beta A \ ,$$

因此漸近增益為：

$$G_{\infty} = \lim_{T \to \infty }G = G_0 - \frac {1} {\beta} \ .$$

替換結果到增益表示式中。

$$G = G_{0} + \frac {1} {\beta} \frac {-T} {1 +T}$$

$$= G_0 + (G_0 - G_{\infty} ) \frac {-T} {1 +T}$$

$$= G_{\infty} \frac {T} {1 +T} + G_0 \frac {1}{1+T} \ ,$$

上述就是漸近增益模型的公式。

## 非線性的信號流圖

梅森在導入線性信號流圖的同時，也導入了非線性信號流圖。梅森提到：「線性信號流圖就是相關系統是線性的信號流圖」"

### 非線性分支函數的例子

若以xj來表示j節點的訊號，以下例子是不符合線性非時變系統的函數：

$$\begin{align} <pre> x_\mathrm{j} &= x_\mathrm{k} \times x_\mathrm{l} \\ x_\mathrm{k} &= abs(x_\mathrm{j})\\ x_\mathrm{l} &= \log(x_\mathrm{k})\\ x_\mathrm{m} &= t \times x_\mathrm{j} \text{ ,where } t \text{ represents time} \\ </pre> \end{align}$$

### 非線性信號流圖的例子

- 在電子工程的文獻中常見非線性的信號流圖
- 在生命科學中也常有非線性信號流圖，例如亞瑟·蓋頓的心血管系統電腦模型。

## 信號流圖在不同領域的應用

- 電子電路
- 分析摩爾型有限狀態機或是米利型有限狀態機的順序電路，從狀態圖中得到正則表達式
- 非線性資料轉換器的合成
- 控制及網路理論
- 隨機信號處理
- 電子系統的可靠度
- 生理學及生物物理
- 心臟輸出量調節
- 模擬
- 類比電腦上的模擬