最小相位系统
1、传递函数
一个线性系统的响应。
比如一个RC低通滤波器:
交流分量在电容的充放电中被滤除掉,通过设置电容器的电容值,以及电阻值,能够控制这种滤除能力,这个参数为RC。
电容的电抗为 1 / j w C 1/jwC 1/jwC,因此容易的写出其频率响应,其中 V i n = ∑ k = 1 L A k ℜ { exp ( j ϕ k ) exp ( j w t ) } V_{in} = \sum_{k=1}^{L}A_k\Re\{\exp(j\phi_k)\exp(jwt)\} Vin=∑k=1LAkℜ{exp(jϕk)exp(jwt)}:
V o u t = 1 / j w C R + 1 / j w C V i n = 1 1 + j w R C V i n V_{out} = \frac{1/jwC}{R+1/jwC} V_{in} = \frac{1}{1+jwRC} V_{in} Vout=R+1/jwC1/jwCVin=1+jwRC1Vin
将这个系数提出来:
H ( w ) = 1 1 + j w R C H(w) = \frac{1}{1+jwRC} H(w)=1+jwRC1
这是一个变量为角频率的复变函数。为了便于在二维空间展示,对其取模、取相角,分别得到幅频响应和相频响应。求逆傅立叶变换得到 h ( t ) h(t) h(t),冲激函数响应。
此时的 H ( w ) H(w) H(w)是一种传递函数(transfer function)。
以上是简单情况,仅当输入信号存在傅立叶变换的时候才成立,傅立叶变换要求输入信号绝对可积。对于更一般的情况,对频率进行推广。傅立叶变换的核函数是 e j w t e^{jwt} ejwt,将纯虚数推广到复数,就能够对幅度进行调控,即 e s t = e ( a + j b ) t = e a t e j b t e^{st}=e^{(a+jb)t}=e^{at}e^{jbt} est=e(a+jb)t=eatejbt。至于衰减还是增加,取决于 a a a的正负。
得到:
H ( s ) = 1 1 + s R C H(s) = \frac{1}{1+sRC} H(s)=1+sRC1
当s取纯虚数的时候,等于频率响应。
为了便于分析,将 H ( s ) H(s) H(s)画在一个复平面上,横轴为实轴,纵轴为虚轴。
这个系统是一个因果系统,没有输入的时候不会有输出。因此其时域响应是一个右边信号,因此其收敛域为 R O C = { s ∣ ∣ s ∣ > − R C } ROC = \{s\mid |s|> -RC\} ROC={s∣∣s∣>−RC}。
包含虚轴,那么该系统稳定。有理+极点在左半平面,因此系统因果。
2、最小相位
比较相位大小,首先要保证幅频响应相同,或者说幅度增益相同,否则没有意义。
结论:系统首先要求因果+稳定
- 拉普拉斯变换:零极点都在左半复平面
- z变换:零极点都在单位圆内
则是最小相位系统
首先系统要求稳定,即有界输入对应有界输出,其充要条件是ROC包含虚轴。
其次系统要求因果,即 h ( t ) = 0 , ∀ t < 0 h(t)=0,\forall t<0 h(t)=0,∀t<0,暂时没有好的充要条件,但又一些有意义的结论:
- 必要条件:ROC是某个右半复平面。( h ( t ) h(t) h(t)至少要求是右边信号,起点还不确定,所以仅仅是个必要条件)
- 充分条件:传递函数是有理的,并且ROC为最右侧极点的右半复平面。
那么,下面的讨论中,假设传递函数可以用有理函数表示。(这意味着其时域响应可以用复指数函数表示)
H ( s ) = N ( s ) D ( s ) (2-1) H(s) = \frac{N(s)}{D(s)} \tag{2-1} H(s)=D(s)N(s)(2-1)
接下来再说什么情况下两个系统的幅度增益是相同的。
∣ H 1 ( s ) ∣ = ∣ N 1 ( s ) ∣ ∣ D 1 ( s ) ∣ = ∣ N 2 ( s ) ∣ ∣ D 2 ( s ) ∣ = ∣ H 2 ( s ) ∣ (2-2) |H_1(s)| = \frac{|N_1(s)|}{|D_1(s)|} =\frac{|N_2(s)|}{|D_2(s)|} =|H_2(s)| \tag{2-2} ∣H1(s)∣=∣D1(s)∣∣N1(s)∣=∣D2(s)∣∣N2(s)∣=∣H2(s)∣(2-2)
从上面公式(2-2)可以看出,幅度相同,意味着分子分母的幅度都相同。
根据有理传递函数的假设,其分子分母都可以用多项式表示,再由代数基本定理,该多项式可以写成连乘的形式。
先讨论分母,其中A是一个常数, a i , i = 1 , 2 , . . . , N a_i,i=1,2,...,N ai,i=1,2,...,N:
D ( s ) = A Π i = 1 N ( 1 − a i s − 1 ) = A ( 1 − a 1 s − 1 ) ( 1 − a 2 s − 1 ) ⋯ ( 1 − a N s − 1 ) (2-3) D(s) = A\Pi_{i=1}^N(1-a_is^{-1}) = A(1-a_1s^{-1})(1-a_2s^{-1})\cdots(1-a_Ns^{-1}) \tag{2-3} D(s)=AΠi=1N(1−ais−1)=A(1−a1s−1)(1−a2s−1)⋯(1−aNs−1)(2-3)
如果要求系统因果稳定,那么 ℜ { a i } < 0 \Re\{a_i\}<0 ℜ{ai}<0,且ROC为右半平面。
因此必有 D 1 ( s ) = D 2 ( s ) D_1(s)=D_2(s) D1(s)=D2(s),否则必有一个不满足因果稳定的条件。
再讨论分子,其中B是一个常数, b i , i = 1 , 2 , . . . , M b_i,i=1,2,...,M bi,i=1,2,...,M:
N ( s ) = B Π i = 1 M ( 1 − b i s − i ) = B ( 1 − b 1 s − 1 ) ( 1 − b 2 s − 1 ) ⋯ ( 1 − b M s − 1 ) (2-4) N(s) = B\Pi_{i=1}^M(1-b_is^{-i}) = B(1-b_1s^{-1})(1-b_2s^{-1})\cdots(1-b_Ms^{-1}) \tag{2-4} N(s)=BΠi=1M(1−bis−i)=B(1−b1s−1)(1−b2s−1)⋯(1−bMs−1)(2-4)
系统因果稳定跟分子没有关系,因此 b i ∈ C b_i\in C bi∈C,为任意复数。
因此,两个因果稳定的系统,幅度增益相同,相位响应不同,只能从分子入手,分母不能动。
对任意一项 ( 1 − b i s − 1 ) (1-b_is^{-1}) (1−bis−1),其中 s = σ + j w , b i = x + j y s=\sigma+jw,b_i = x+jy s=σ+jw,bi=x+jy。取相角:
ϕ = ∡ ( 1 − b i s − 1 ) = arg ( 1 − x + j y σ + j w ) = arg ( σ − x + j ( w − y ) σ + j w ) = arg ( K e ϕ 1 − ϕ 2 ) K = ( σ − x ) 2 + ( w − y ) 2 σ 2 + w 2 ϕ = ϕ 1 − ϕ 2 = arctan 2 ( w − y σ − x ) − arctan ( w σ ) \phi = \measuredangle (1-b_is^{-1})= \arg (1-\frac{x+jy}{\sigma+jw}) =\arg(\frac{\sigma-x+j(w-y)}{\sigma+jw}) = \arg(Ke^{\phi_1-\phi_2}) \\ K = \frac{\sqrt{(\sigma-x)^2+(w-y)^2}}{\sqrt{\sigma^2+w^2}}\\ \phi = \phi_1-\phi_2 = \arctan2(\frac{w-y}{\sigma-x}) - \arctan(\frac{w}{\sigma}) ϕ=∡(1−bis−1)=arg(1−σ+jwx+jy)=arg(σ+jwσ−x+j(w−y))=arg(Keϕ1−ϕ2)K=σ2+w2 (σ−x)2+(w−y)2 ϕ=ϕ1−ϕ2=arctan2(σ−xw−y)−arctan(σw)
讨论相频响应,需要令 σ = 0 \sigma=0 σ=0,频率 w w w从0开始递增,通常使用波特图来描述,横坐标用类似于np.linspace(1e-2,1e2,1000)
的语句来描述。
因此 ϕ 2 = π / 2 \phi_2=\pi/2 ϕ2=π/2, ϕ 1 = arctan 2 ( w − y − x ) \phi_1 = \arctan2(\frac{w-y}{-x}) ϕ1=arctan2(−xw−y),需要注意 arctan 2 \arctan2 arctan2的输出范围是 [ − π , π ) [-\pi,\pi) [−π,π)。因此当 − x > 0 -x>0 −x>0为常数, w − y > 0 w-y>0 w−y>0的时候,返回的是一个一象限的锐角,因此 ϕ 1 \phi_1 ϕ1从 − π / 2 -\pi/2 −π/2递增到0。反过来将从 π / 2 \pi/2 π/2递减到0
可以用python代码来描述这个过程:
python
import numpy as np
import matplotlib.pylab as plt
# (1-bs^-1)
sigma = 0
Npoints = 1000
w = np.linspace(1e-1,100,Npoints)
s = sigma+1j*w
b = -5+1j*0
y1 = np.angle((1-b/s), deg=True)
y2 = np.angle((1+b.conjugate()/s), deg=True)
x1 = np.abs(1-b/s)
x2 = np.abs(1+b.conjugate()/s)
plt.semilogx(w,y1,'ro')
plt.semilogx(w,y2,'b*')
plt.legend(["negtive poles","positive poles"])
plt.show()
上述推导属实令人费解,主要原因是我们采用了负幂来描述这个系统。实际上,在控制工程当中,使用正幂来描述连续时间系统会更加常见。
如果是正幂,那么分子中的一项为 ( s − b i ) (s-b_i) (s−bi),令s的实部为0,即 s = j w s=jw s=jw,那么
∡ ( s − b i ) = a r c t a n 2 ( w − y − x ) ∣ ( s − b i ) ∣ = x 2 + ( w − y ) 2 (2-5) \measuredangle(s-b_i) = arctan2(\frac{w-y}{-x}) \\ |(s-b_i)| = \sqrt{x^2+(w-y)^2} \tag{2-5} ∡(s−bi)=arctan2(−xw−y)∣(s−bi)∣=x2+(w−y)2 (2-5)
显然,要使得幅频响应不变,那么 b i b_i bi的虚部不能动,实部的正负可以变。
( w − y ) > 0 (w-y)>0 (w−y)>0 | ( w − y ) < 0 (w-y)<0 (w−y)<0 | |
---|---|---|
实部为正(位于正半平面) | 正钝角 | 负钝角 |
实部为负(位于负半平面) | 正锐角 | 负锐角 |
所以,当实部为负,即零点在负半平面,随着频率的变化,相位变化相比于零点在正半平面更慢。也就是说相位变化小,即群时延小,阶跃响应建立更快,冲激响应能量更向0时刻集中。需要注意,最小相位系统,其相位延迟不一定是最小,但是相位变化一定是最小。比如一个最小相位系统的相位延迟了45度,另外一个相同幅频响应的系统相位延迟可能只有30度。
总结
Tip1:
关于最小相位系统有一些等价条件:
- 群时延最小的系统
- 冲激响应能量最靠近0时刻的系统
- 阶跃响应建立最快的系统
- 有理传递函数的情况下,零极点都在复平面的左半平面的系统
- 有理传递函数的情况下,对于离散时间系统,零极点都在单位圆内的系统
- 有理传递函数的情况下,系统和逆系统都是因果稳定的系统
Tip2:
最大相位系统:零点都在右半平面。因此这种系统因果稳定,但是其逆系统则不可能同时因果稳定。
Tip3:
一个零极点系统可以表示成最小相位系统和全通系统的乘积。
比如:
H ( s ) = s − 1 ( s + 3 ) ( s + 2 ) = s − 1 ( s + 3 ) ( s + 2 ) × s − 1 s + 1 H(s) = \frac{s-1}{(s+3)(s+2)} = \frac{s-1}{(s+3)(s+2)}\times \frac{s-1}{s+1} H(s)=(s+3)(s+2)s−1=(s+3)(s+2)s−1×s+1s−1
H ( z ) = 1 − ( 2 e j π / 3 ) z − 1 ( 1 − 3 z − 1 ) ( 5 − z − 1 ) = z − 1 − 2 e − j π / 3 ( z − 1 − 3 ) ( 5 − z − 1 ) × 1 − ( 2 e j π / 3 ) z − 1 z − 1 − 2 e − j π / 3 × z − 1 − 3 1 − 3 z − 1 H(z) = \frac{1-(2e^{j\pi/3})z^{-1}}{(1-3z^{-1})(5-z^{-1})} = \frac{z^{-1} - 2e^{-j\pi/3}}{(z^{-1}-3)(5-z^{-1})} \times \frac{1-(2e^{j\pi/3})z^{-1}}{z^{-1} - 2e^{-j\pi/3}} \times \frac{z^{-1}-3}{1-3z^{-1}} H(z)=(1−3z−1)(5−z−1)1−(2ejπ/3)z−1=(z−1−3)(5−z−1)z−1−2e−jπ/3×z−1−2e−jπ/31−(2ejπ/3)z−1×1−3z−1z−1−3
Tip4:
已知幅频响应,那么其最小相位系统的相频响应响应是唯一的。