传递函数离散化方法:差分,双线性Tustin,预矫正双线性,Matlab实现

传递函数严格离散化

  傅里叶变换、拉普拉斯变换,以及 Z Z Z变换的定义如下所示:
傅里叶变换 : { F ( ω ) = ∫ − ∞ ∞ f ( t ) e − j ω t d t f ( t ) = 1 2 π ∫ − ∞ ∞ F ( ω ) e j ω t d ω 傅里叶变换:\left\{ \begin{array}{l} F\left( \omega \right) = \int_{ - \infty }^\infty {f\left( t \right){e^{ - j\omega t}}dt} \\ f\left( t \right) = \frac{1}{{2\pi }}\int_{ - \infty }^\infty {F\left( \omega \right){e^{j\omega t}}d\omega } \end{array} \right. 傅里叶变换:{F(ω)=f(t)etdtf(t)=2π1F(ω)etdω

拉普拉斯变换 : { F ( s ) = ∫ − ∞ ∞ f ( t ) e − s t d t f ( t ) = 1 2 π j ∫ σ − j ∞ σ + j ∞ F ( s ) e s t d s 拉普拉斯变换:\left\{ \begin{array}{l} F\left( s \right) = \int_{ - \infty }^\infty {f\left( t \right){e^{ - st}}dt} \\ f\left( t \right) = \frac{1}{{2\pi j}}\int_{\sigma - j\infty }^{\sigma + j\infty } {F\left( s \right){e^{st}}ds} \end{array} \right. 拉普拉斯变换:{F(s)=f(t)estdtf(t)=2πj1σjσ+jF(s)estds

Z 变换 : { F ( z ) = ∑ f [ n ] z − n f [ n ] = 1 2 π j ∮ F ( z ) z n − 1 d z Z变换:\left\{ \begin{array}{l} F\left( z \right) = \sum {f\left[ n \right]{z^{ - n}}} \\ f\left[ n \right] = \frac{1}{{2\pi j}}\oint {F\left( z \right){z^{n - 1}}dz} \end{array} \right. Z变换:{F(z)=f[n]znf[n]=2πj1F(z)zn1dz

  可以利用如下映射关系,实现传递函数 F ( s ) F(s) F(s) F ( ω ) F(\omega) F(ω) F ( z ) F(z) F(z)之间的等价转换,详见《信号与系统》的“离散系统的Z域分析”章节:

s = j ω = 1 T ln ⁡ z ,或, z = e s T = e j ω T s = j\omega = \frac{1}{T}\ln z,或,z = {e^{sT}} = {e^{j\omega T}} s==T1lnz,或,z=esT=eT

  稳定性分析: 连续型传递函数稳定的充要条件为,所有极点均位于 s s s域左半平面;离散型传递函数稳定的充要条件为,所有极点均位于 z z z域原点为圆心的单位圆内。对于连续传函离散化问题, s s s域左半平面所有极点,经 z = e s T z=e^{sT} z=esT映射后,均位于 z z z域原点为圆心的单位圆内。因此,严格离散化前后,连续系统稳定,则离散系统稳定。

离散化方法1,前向欧拉,前向差分

  对于一个连续函数 y ( t ) y(t) y(t) k T kT kT时刻的微分可以做以下近似:
y ′ ( k ) ≈ y ( k + 1 ) − y ( k ) T y'(k) \approx \frac{{y(k + 1) - y(k)}}{T} y(k)Ty(k+1)y(k)

  对上式的左右两端分别进行拉氏变换和Z变换,可以得到如下映射关系:
s Y ( s ) ↔ z − 1 T Y ( z ) sY(s) \leftrightarrow \frac{{z - 1}}{T}Y(z) sY(s)Tz1Y(z)

  因此,可以令 s = z − 1 T s = \frac{{z - 1}}{T} s=Tz1实现S域传递函数到Z域传递函数的转换。值得注意的是,这种传递函数离散化是近似的, s = 1 T ln ⁡ z s=\frac{1}{T}\ln z s=T1lnz才是严格的,但并不方便数字实现。实际上, s = z − 1 T s = \frac{{z - 1}}{T} s=Tz1正是 s = 1 T ln ⁡ z s=\frac{1}{T}\ln z s=T1lnz,在 s = 0 s=0 s=0 z = 1 z=1 z=1时的近似表示。

  稳定性分析: 假设连续传递函数是稳定的,即传递函数极点位于 s s s域左半平面,分析离散化后极点在 z z z域平面位置,
s = z − 1 T ⇒ z = s T + 1 s = \frac{{z - 1}}{T} \Rightarrow z = sT + 1 s=Tz1z=sT+1
  前向欧拉离散化方法将 s s s域左半平面映射到 z z z z < 1 z<1 z<1区域,显然包含不稳定区域,稳定极点可能变为不稳定极点。因此,稳定的连续系统变换所得离散系统可能不稳定,这种方法很少用。

离散化方法2,后向欧拉,后向差分

  同理还有后向差分,将 y ( t ) y(t) y(t) k T kT kT时刻的微分做以下近似:
y ′ ( k ) ≈ y ( k ) − y ( k − 1 ) T y'(k) \approx \frac{{y(k) - y(k - 1)}}{T} y(k)Ty(k)y(k1)
  对上式的左右两端分别进行拉氏变换和Z变换,可以得到如下映射关系:
s Y ( s ) ↔ 1 − z − 1 T Y ( z ) sY(s) \leftrightarrow \frac{{1 - z^{-1}}}{T}Y(z) sY(s)T1z1Y(z)
  因此,可以令 s = 1 − z − 1 T s = \frac{{1 - z^{-1}}}{T} s=T1z1实现S域传递函数到Z域传递函数的转换。实际上, s = 1 − z − 1 T s = \frac{{1 - z^{-1}}}{T} s=T1z1也是 s = 1 T ln ⁡ z s=\frac{1}{T}\ln z s=T1lnz,在 s = 0 s=0 s=0 z = 1 z=1 z=1时的近似表示。

  稳定性分析: 假设连续传递函数是稳定的,即连续传函极点位于 s s s域左半平面,分析离散化后极点在 z z z域平面位置,
s = 1 − z − 1 T ⇒ z = 1 1 − s T s = \frac{{1 - z^{-1}}}{T} \Rightarrow z = \frac{1}{{1 - sT}} s=T1z1z=1sT1
  后向欧拉离散化方法将 s s s域左半平面映射到 z z z域以 ( 0.5 , 0 ) (0.5,0) (0.5,0)为圆心,以 0.5 0.5 0.5为半径的圆内(具体分析见附录)。也就是说,原来的连续系统稳定,则离散系统稳定。

离散化方法3,双线性变换,Tustin

  由于 z = e s T = e s T / 2 e − s T / 2 ≈ 1 + s T / 2 1 − s T / 2 z = {e^{sT}} = \frac{{{e^{sT/2}}}}{{{e^{ - sT/2}}}} \approx \frac{{1 + sT/2}}{{1 - sT/2}} z=esT=esT/2esT/21sT/21+sT/2,分子分母进行一阶泰勒线性展开,故得名双线性变换。进一步可以得到:
s = 2 T 1 − z − 1 1 + z − 1 s = \frac{2}{T}\frac{{1 - z^{-1}}}{{1 + z^{-1}}} s=T21+z11z1

  稳定性分析: 假设连续传递函数是稳定的,分析离散化后极点在 z z z域平面位置,
s = 2 T 1 − z − 1 1 + z − 1 ⇒ z = 1 + s T / 2 1 − s T / 2 s = \frac{2}{T}\frac{{1 - z^{-1}}}{{1 + z^{-1}}} \Rightarrow z = \frac{{1 + sT/2}}{{1 - sT/2}} s=T21+z11z1z=1sT/21+sT/2
  双线性变换离散化方法将 s s s域左半平面映射到 z z z域以 ( 0 , 0 ) (0,0) (0,0)为圆心,以 1 1 1为半径的单位圆内(具体分析见附录),这正是我们很希望看到的结果。因此,原来的连续传函稳定,则离散传函稳定。

离散化方法4,预矫正双线性变换,Tustin with Pre-Warping

问题描述

  上述方法均可实现连续系统的离散化,但因为离散化过程中采用了近似化手段,不可避免地引入了误差,使得离散化后的频域特性并不完全等价于连续系统,以下以双线性变换为例,进行说明。设计电网系统的五次谐波消抑制传递函数:
C a ( s ) = K i s s 2 + ( 2 π ∗ 250 ) 2 {C_a}(s){\rm{ = }}\frac{{{K_i}s}}{{{s^2} + {{(2\pi {\rm{*}}250)}^2}}} Ca(s)=s2+(2π250)2Kis
  取 K i = 1 K_i=1 Ki=1,采用双线性变换 s = 2 T z − 1 z + 1 s=\frac{2}{T} \frac{z-1}{z+1} s=T2z+1z1进行离散化,其中T取0.001,得到离散化后的传递函数:
C d ( z ) = C a ( s ) ∣ s = 2 T z − 1 z + 1 = K i ( 2 T z − 1 z + 1 ) ( 2 T z − 1 z + 1 ) 2 + ( 2 π ∗ 250 ) 2 = 2000 z 2 − 2000 [ 2000 2 + ( 2 π ∗ 250 ) 2 ] z 2 + 2 [ ( 2 π ∗ 250 ) 2 − 2000 2 ] z + [ ( 2 π ∗ 250 ) 2 + 2000 2 ] {C_d}(z) = {C_a}(s){|_{s = \frac{2}{T}\frac{{z - 1}}{{z + 1}}}}{\rm{ = }}\frac{{{K_i}(\frac{2}{T}\frac{{z - 1}}{{z + 1}})}}{{{{\left( {\frac{2}{T}\frac{{z - 1}}{{z + 1}}} \right)}^2} + {{(2\pi {\rm{*}}250)}^2}}} = \frac{{2000{z^2} - 2000}}{{\left[ {{{2000}^2} + {{(2\pi {\rm{*}}250)}^2}} \right]{z^2} + 2\left[ {{{(2\pi {\rm{*}}250)}^2} - {{2000}^2}} \right]z + \left[ {{{(2\pi {\rm{*}}250)}^2} + {{2000}^2}} \right]}} Cd(z)=Ca(s)s=T2z+1z1=(T2z+1z1)2+(2π250)2Ki(T2z+1z1)=[20002+(2π250)2]z2+2[(2π250)220002]z+[(2π250)2+20002]2000z22000

  利用如下代码,对比连续传递函数和离散传递函数的波特图:

a=(2*pi*250)^2;
b=2000^2;
Ca = tf([1,0],[1 0 a]);
Cd = tf([2000 0 -2000],[b+a 2*a-2*b b+a],0.001);
bode(Ca, Cd)
legend('Ca','Cd')

  当然,也可以利用matlab实现双线性变换,两者效果是一致的(更多函数介绍请参考matlab函数用法:传递函数tf,波特图bode,离散化c2d):

Ca = tf([1,0],[1 0 (2*pi*250)^2]);
Cd = c2d(Ca,0.001,'tustin');
bode(Ca, Cd);
legend('Ca','Cd')

  连续传递函数和离散传递函数的波特图对比结果如下所示。可以看出,近似的离散化过程使得离散传递函数特性发生了改变,离散化后传递函数的特性与所设计连续传递函数的特性不一致。
在这里插入图片描述

解决方案

  对离散化所引入的误差进行分析, C d ( z ) C_d(z) Cd(z)代表数字控制器, C a ( s ) C_a(s) Ca(s)代表模拟控制器,两者之间的转换关系如下:
C a ( s ) ∣ s = 2 T z − 1 z + 1 = C d ( z ) {C_a}(s){|_{s = \frac{2}{T}\frac{{z - 1}}{{z + 1}}}} = {C_d}(z) Ca(s)s=T2z+1z1=Cd(z)

  下面探究一下 C a ( s ) ∣ s = 2 T z − 1 z + 1 {C_a}(s){|_{s = \frac{2}{T}\frac{{z - 1}}{{z + 1}}}} Ca(s)s=T2z+1z1所对应的真实连续系统,注: sin ⁡ α = − j 0.5 ( e j α − e − j α ) , cos ⁡ α = 0.5 ( e j α + e − j α ) \sin \alpha = - j0.5\left( {{e^{j\alpha }} - {e^{ - j\alpha }}} \right), \cos \alpha = 0.5\left( {{e^{j\alpha }} + {e^{ - j\alpha }}} \right) sinα=j0.5(ejαejα),cosα=0.5(ejα+ejα):
{ C a ( s ) ∣ s = 2 T z − 1 z + 1 = C a ( 2 T e s T − 1 e s T + 1 ) = C a ( 2 T e j ω T − 1 e j ω T + 1 ) = C a [ 2 T e j ω T 2 ( e j ω T 2 − e − j ω T 2 ) e j ω T 2 ( e j ω T 2 + e − j ω T 2 ) ] = C a [ j ∗ 2 T tan ⁡ ( ω T 2 ) ] \left\{ \begin{aligned} {C_a}(s){|_{s = \frac{2}{T}\frac{{z - 1}}{{z + 1}}}} &= {C_a}(\frac{2}{T}\frac{{{e^{sT}} - 1}}{{{e^{sT}} + 1}})\\ &= {C_a}\left( {\frac{2}{T}\frac{{{e^{j\omega T}} - 1}}{{{e^{j\omega T}} + 1}}} \right)\\ &= {C_a}\left[ {\frac{2}{T}\frac{{{e^{j{\textstyle{{\omega T} \over 2}}}}\left( {{e^{j{\textstyle{{\omega T} \over 2}}}} - {e^{ - j{\textstyle{{\omega T} \over 2}}}}} \right)}}{{{e^{j{\textstyle{{\omega T} \over 2}}}}\left( {{e^{j{\textstyle{{\omega T} \over 2}}}} + {e^{ - j{\textstyle{{\omega T} \over 2}}}}} \right)}}} \right]\\ &= {C_a}\left[ {j*\frac{2}{T}\tan \left( {\frac{{\omega T}}{2}} \right)} \right] \end{aligned} \right. Ca(s)s=T2z+1z1=Ca(T2esT+1esT1)=Ca(T2eT+1eT1)=Ca T2ej2ωT(ej2ωT+ej2ωT)ej2ωT(ej2ωTej2ωT) =Ca[jT2tan(2ωT)]

   C d ( z ) {C_d}(z) Cd(z)并不对应 C a ( j ω ) {C_a}(j\omega) Ca(),而对应 C a [ j 2 T tan ⁡ ( ω 2 T ) ] {C_a}\left[ {j\frac{2}{T}\tan \left( {\frac{\omega }{2}T} \right)} \right] Ca[jT2tan(2ωT)],离散系统的 ω \omega ω会映射到连续系统的 2 T tan ⁡ ( ω T 2 ) \frac{2}{T}\tan \left( {\frac{\omega T}{2}} \right) T2tan(2ωT),这就是频率畸变现象。也就是说,分别以 ω \omega ω为横轴画出 C d ( z ) C_d(z) Cd(z)的波特图,和以 2 T tan ⁡ ( ω 2 T ) \frac{2}{T}\tan \left( {\frac{\omega }{2}T} \right) T2tan(2ωT)为横轴画出 C a ( s ) C_a(s) Ca(s)的波特图,两个波形图应该是完全对应的。当 ω T 2 \frac{\omega T}{2} 2ωT足够小时, j 2 T tan ⁡ ( ω 2 T ) {j\frac{2}{T}\tan \left( {\frac{\omega }{2}T} \right)} jT2tan(2ωT)是近似等于 j ω j\omega 的。但对于高频谐波,或者特定频率的分析,就不得不考虑这部分影响了。

  回顾上述所设计 C a ( s ) C_a(s) Ca(s)时,对于 2 π ∗ 250 2\pi*250 2π250 rad/s的角速度变化,传递函数取得最大值。由于离散系统的 ω \omega ω会映射到连续系统的 2 T tan ⁡ ( ω T 2 ) \frac{2}{T}\tan \left( {\frac{\omega T}{2}} \right) T2tan(2ωT),利用 2 T tan ⁡ ( ω T 2 ) = 2 π ∗ 250 \frac{2}{T}\tan \left( {\frac{\omega T}{2}} \right) = 2\pi*250 T2tan(2ωT)=2π250求解离散系统的原始 ω \omega ω,解得 ω = 1331.5 \omega = 1331.5 ω=1331.5 rad/s,这与上述波特图结果是一致的。

  解决方案:离散系统的 ω d \omega_d ωd与连续系统的 ω a = 2 T tan ⁡ ( ω d T 2 ) \omega_a = \frac{2}{T}\tan \left( {\frac{\omega_d T}{2}} \right) ωa=T2tan(2ωdT)之间存在映射关系,根据目标 ω d \omega_d ωd计算 ω a \omega_a ωa,基于 ω a \omega_a ωa完成连续传递函数的设计,采用双线性变换得到离散传递函数。正确的设计思路为:(1)首先,明确所需要的离散传递函数的特性,比如,目标谐振频率 ω d = 2 π ∗ 250 \omega_d = 2\pi*250 ωd=2π250 rad/s;(2)计算上述离散频率所映射的连续频率, ω a = 2 T tan ⁡ ( ω d T 2 ) = 2000 \omega_a = \frac{2}{T}\tan \left( {\frac{\omega_d T}{2}} \right) = 2000 ωa=T2tan(2ωdT)=2000 rad/s = 318 Hz;(3) 基于映射的连续角频率 ω a \omega_a ωa设计连续传递函数, C a ( s ) = K i s s 2 + 200 0 2 {C_a}(s){\rm{ = }}\frac{{{K_i}s}}{{{s^2} + {2000^2}}} Ca(s)=s2+20002Kis,并完成离散化, C d ( z ) = C a ( s ) ∣ s = 2 T z − 1 z + 1 = K i ( 2 T z − 1 z + 1 ) ( 2 T z − 1 z + 1 ) 2 + 200 0 2 {C_d}(z) = {C_a}(s){|_{s = \frac{2}{T}\frac{{z - 1}}{{z + 1}}}}{\rm{ = }}\frac{{{K_i}(\frac{2}{T}\frac{{z - 1}}{{z + 1}})}}{{{{\left( {\frac{2}{T}\frac{{z - 1}}{{z + 1}}} \right)}^2} + {2000^2}}} Cd(z)=Ca(s)s=T2z+1z1=(T2z+1z1)2+20002Ki(T2z+1z1)

  基于如下代码重绘波特图。可以看出,尽管连续传递函数在2000 rad/s (318Hz)处实现最大增益,离散传递函数在目标频率点1570 rad/s (250Hz)处取得最大增益,与预期一致。

Ca = tf([1,0],[1 0 (2000)^2]);
Cd = c2d(Ca,0.001,'tustin');
bode(Ca, Cd);
legend('Ca','Cd')

在这里插入图片描述

总结

  对离散化的简单场景,优先考虑后向差分离散化方法;对于频率有较高准确度的场景,如谐振控制器,建议使用预矫正双线性变换方法。

附录

附录1:后向欧拉相关证明

  对于 s s s域的左半平面,其边界为 s s s平面虚轴。证明:该边界在 z z z域的映射为,以 ( 0.5 , 0 ) (0.5,0) (0.5,0)为圆心,以 0.5 0.5 0.5为半径的圆,如下所示:
{ z = 1 1 − s T = 1 1 − j ω = 1 + j ω ( 1 − j ω ) ( 1 + j ω ) = 1 1 + ω 2 + j ω 1 + ω 2 → { ∥ z − 0.5 ∥ 2 = ( 1 1 + ω 2 − 0.5 ) 2 + ( ω 1 + ω 2 ) 2 = 1 4 [ ( 2 1 + ω 2 − 1 ) 2 + ( 2 ω 1 + ω 2 ) 2 ] = 1 4 [ ( 1 − ω 2 1 + ω 2 ) 2 + ( 2 ω 1 + ω 2 ) 2 ] = 1 4 ,证毕 \left\{ \begin{aligned} z &= \frac{1}{{1 - sT}}\\ &= \frac{1}{{1 - j\omega }}\\ &= \frac{{1 + j\omega }}{{\left( {1 - j\omega } \right)\left( {1 + j\omega } \right)}}\\ &= \frac{1}{{1 + {\omega ^2}}} + j\frac{\omega }{{1 + {\omega ^2}}} \end{aligned} \right. \to \left\{ \begin{aligned} {\left\| {z - 0.5} \right\|^2} &= {\left( {\frac{1}{{1 + {\omega ^2}}} - 0.5} \right)^2} + {\left( {\frac{\omega }{{1 + {\omega ^2}}}} \right)^2}\\ &= \frac{1}{4}\left[ {{{\left( {\frac{2}{{1 + {\omega ^2}}} - 1} \right)}^2} + {{\left( {\frac{{2\omega }}{{1 + {\omega ^2}}}} \right)}^2}} \right]\\ &= \frac{1}{4}\left[ {{{\left( {\frac{{1 - {\omega ^2}}}{{1 + {\omega ^2}}}} \right)}^2} + {{\left( {\frac{{2\omega }}{{1 + {\omega ^2}}}} \right)}^2}} \right]\\ &= \frac{1}{4},证毕 \end{aligned} \right. z=1sT1=11=(1)(1+)1+=1+ω21+j1+ω2ω z0.52=(1+ω210.5)2+(1+ω2ω)2=41[(1+ω221)2+(1+ω22ω)2]=41[(1+ω21ω2)2+(1+ω22ω)2]=41,证毕

  进一步证明, s s s域内任何左半平面的点,映射到上述圆内:
{ z = 1 1 − s T , R e ( s ) < 0 = 1 a − b j , a > 1 = a + b j ( a − b j ) ( a + b j ) = a a 2 + b 2 + j b a 2 + b 2 → { ∥ z − 0.5 ∥ 2 = ( a a 2 + b 2 − 0.5 ) 2 + ( b a 2 + b 2 ) 2 = 1 4 [ ( 2 a a 2 + b 2 − 1 ) 2 + ( 2 b a 2 + b 2 ) 2 ] < 1 4 [ ( 2 a a 2 + b 2 − 1 ) 2 + ( 2 a b a 2 + b 2 ) 2 ] < 1 4 [ ( a 2 − b 2 a 2 + b 2 ) 2 + ( 2 a b a 2 + b 2 ) 2 ] = 1 4 ,证毕 ,其中 { 2 a a 2 + b 2 − 1 < a 2 − b 2 a 2 + b 2 ← 2 a − a 2 − b 2 < a 2 − b 2 ← 2 a < 2 a 2 ← 1 < a \left\{ \begin{aligned} z &= \frac{1}{{1 - sT}},Re(s) < 0\\ &= \frac{1}{{a - bj}},a > 1\\ &= \frac{{a + bj}}{{\left( {a - bj} \right)\left( {a + bj} \right)}}\\ &= \frac{a}{{{a^2} + {b^2}}} + j\frac{b}{{{a^2} + {b^2}}} \end{aligned} \right. \to \left\{ \begin{aligned} {\left\| {z - 0.5} \right\|^2} &= {\left( {\frac{a}{{{a^2} + {b^2}}} - 0.5} \right)^2} + {\left( {\frac{b}{{{a^2} + {b^2}}}} \right)^2}\\ &= \frac{1}{4}\left[ {{{\left( {\frac{{2a}}{{{a^2} + {b^2}}} - 1} \right)}^2} + {{\left( {\frac{{2b}}{{{a^2} + {b^2}}}} \right)}^2}} \right]\\ &< \frac{1}{4}\left[ {{{\left( {\frac{{2a}}{{{a^2} + {b^2}}} - 1} \right)}^2} + {{\left( {\frac{{2ab}}{{{a^2} + {b^2}}}} \right)}^2}} \right]\\ &< \frac{1}{4}\left[ {{{\left( {\frac{{{a^2} - {b^2}}}{{{a^2} + {b^2}}}} \right)}^2} + {{\left( {\frac{{2ab}}{{{a^2} + {b^2}}}} \right)}^2}} \right]\\ &= \frac{1}{4},证毕 \end{aligned} \right.,其中\left\{ \begin{aligned} &\frac{{2a}}{{{a^2} + {b^2}}} - 1 < \frac{{{a^2} - {b^2}}}{{{a^2} + {b^2}}}\\ &\leftarrow 2a - {a^2} - {b^2} < {a^2} - {b^2}\\ &\leftarrow2a < 2{a^2}\\ &\leftarrow1 < a \end{aligned} \right. z=1sT1,Re(s)<0=abj1,a>1=(abj)(a+bj)a+bj=a2+b2a+ja2+b2b z0.52=(a2+b2a0.5)2+(a2+b2b)2=41[(a2+b22a1)2+(a2+b22b)2]<41[(a2+b22a1)2+(a2+b22ab)2]<41[(a2+b2a2b2)2+(a2+b22ab)2]=41,证毕,其中 a2+b22a1<a2+b2a2b22aa2b2<a2b22a<2a21<a

  Matlab绘图验证:
在这里插入图片描述
  Matlab代码如下:

clc; clear; close all;

% 定义参数
T = 1;

% 定义s=0(虚部从-无穷到正无穷)
omega = linspace(-1000, 1000, 20001);  % 使用大的范围代替无穷
s1 = 0.0 + 1j * omega;
s2 = -0.1 + 1j * omega;
s3 = -1.0 + 1j * omega;
s4 = -10.0 + 1j * omega;

% 映射到z平面
z1 = 1 ./ (1 - s1 * T);
z2 = 1 ./ (1 - s2 * T);
z3 = 1 ./ (1 - s3 * T);
z4 = 1 ./ (1 - s4 * T);

% 绘制z平面的值
figure;
hold on;

% 绘制s=0的映射
plot(real(z1), imag(z1), 'b', 'DisplayName', 's = 0 (Im: -\infty to +\infty)');

% 绘制s=-0.1的映射
plot(real(z2), imag(z2), 'r', 'DisplayName', 's = -0.1 + j\omega');

% 绘制s=-1.0的映射
plot(real(z3), imag(z3), 'g', 'DisplayName', 's = -1.0 + j\omega');

% 绘制s=-10.0的映射
plot(real(z4), imag(z4), 'm', 'DisplayName', 's = -10.0 + j\omega');

% 设置图形属性
xlabel('Real Part');
ylabel('Imaginary Part');
title('Mapping of s-plane lines to z-plane');
legend show;
grid on;
axis equal;
hold off;

附录2:双线性变换相关证明

  对于 s s s域的左半平面,其边界为 s s s平面虚轴。证明:该边界在 z z z域的映射为,以 ( 0 , 0 ) (0, 0) (0,0)为圆心,以 1 1 1为半径的圆,如下所示:
{ z = 1 + s T / 2 1 − s T / 2 = 1 + j ω 1 − j ω = 1 − ω 2 1 + ω 2 + j 2 ω 1 + ω 2 → { ∥ z ∥ 2 = ( 1 − ω 2 1 + ω 2 ) 2 + ( 2 ω 1 + ω 2 ) 2 = 1 \left\{ \begin{aligned} z &= \frac{{1 + sT/2}}{{1 - sT/2}}\\ &= \frac{{1 + j\omega }}{{1 - j\omega }}\\ &= \frac{{1 - {\omega ^2}}}{{1 + {\omega ^2}}} + j\frac{{2\omega }}{{1 + {\omega ^2}}} \end{aligned} \right. \to \left\{ \begin{aligned} {\left\| z \right\|^2} &= {\left( {\frac{{1 - {\omega ^2}}}{{1 + {\omega ^2}}}} \right)^2} + {\left( {\frac{{2\omega }}{{1 + {\omega ^2}}}} \right)^2}\\ &= 1 \end{aligned} \right. z=1sT/21+sT/2=11+=1+ω21ω2+j1+ω22ω z2=(1+ω21ω2)2+(1+ω22ω)2=1
  对于边界内的点,类比后向欧拉方法,可证明其在 z z z平面的映射在单位圆内。给出Matlab绘图结果:
在这里插入图片描述
  Matlab代码如下:

clc; clear; close all;
% 定义参数
T = 1;

% 定义s=0(虚部从-无穷到正无穷)
omega = linspace(-1000, 1000, 20001);  % 使用大的范围代替无穷
s1 = 0.0 + 1j * omega;
s2 = -0.1 + 1j * omega;
s3 = -1.0 + 1j * omega;
s4 = -10.0 + 1j * omega;

% 映射到z平面
z1 = (1 + s1 * T) ./ (1 - s1 * T);
z2 = (1 + s2 * T) ./ (1 - s2 * T);
z3 = (1 + s3 * T) ./ (1 - s3 * T);
z4 = (1 + s4 * T) ./ (1 - s4 * T);

% 绘制z平面的值
figure;
hold on;

% 绘制s=0的映射
plot(real(z1), imag(z1), 'b', 'DisplayName', 's = 0 (Im: -\infty to +\infty)');

% 绘制s=-0.1的映射
plot(real(z2), imag(z2), 'r', 'DisplayName', 's = -0.1 + j\omega');

% 绘制s=-1.0的映射
plot(real(z3), imag(z3), 'g', 'DisplayName', 's = -1.0 + j\omega');

% 绘制s=-10.0的映射
plot(real(z4), imag(z4), 'm', 'DisplayName', 's = -10.0 + j\omega');

% 设置图形属性
xlabel('Real Part');
ylabel('Imaginary Part');
title('Mapping of s-plane lines to z-plane');
legend show;
grid on;
axis equal;
hold off;
  • 16
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值