Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

使用 FEEDBACK 来闭合反馈回路

此示例说明为什么您应始终使用 FEEDBACK 来闭合反馈回路。

闭合反馈回路的两种方式

假定有以下反馈回路

其中

K = 2;
G = tf([1 2],[1 .5 3])
G =
 
       s + 2
  ---------------
  s^2 + 0.5 s + 3
 
Continuous-time transfer function.

有至少两种方法可以计算从 r 到 y 的闭环传递函数 H

  • 使用 feedback 命令

  • 使用公式

H=G1+GK

要使用 feedback 计算 H,请键入

H = feedback(G,K)
H =
 
       s + 2
  ---------------
  s^2 + 2.5 s + 7
 
Continuous-time transfer function.

要根据公式计算 H,请键入

H2 = G/(1+G*K)
H2 =
 
        s^3 + 2.5 s^2 + 4 s + 6
  -----------------------------------
  s^4 + 3 s^3 + 11.25 s^2 + 11 s + 21
 
Continuous-time transfer function.

为什么使用 FEEDBACK 更好

根据公式计算 H 的主要问题是它会扩大闭环传递函数的阶数。在上面的示例中,H2 的阶数是 H 的两倍。这是因为表达式 G/(1+G*K) 的计算结果为两个传递函数 G1+G*K 的比值。如果

G(s)=N(s)D(s)

G/(1+G*K) 计算为:

ND(D+KND)-1=NDD(D+KN).

结果,G 的极点会加到 H 的分子和分母上。您可以通过观察 ZPK 的表示形式确认这一点:

zpk(H2)
ans =
 
       (s+2) (s^2 + 0.5s + 3)
  ---------------------------------
  (s^2 + 0.5s + 3) (s^2 + 2.5s + 7)
 
Continuous-time zero/pole/gain model.

在处理高阶传递函数时,过多的极点和零点会对结果的准确性产生负面影响,如以下示例所示。此示例调用一个 17 阶传递函数 G。您可以像以前一样,使用两种方法来计算 K=1 的闭环传递函数:

load numdemo G
H1 = feedback(G,1);          % good
H2 = G/(1+G);                % bad

为了有一个参考点,还要计算包含 G 的频率响应的 FRD 模型,并将 feedback 直接应用于频率响应数据:

w = logspace(2,5.1,100);
H0 = feedback(frd(G,w),1);

然后比较闭环响应的幅值:

h = sigmaplot(H0,'b',H1,'g--',H2,'r');
legend('Reference H0','H1=feedback(G,1)','H2=G/(1+G)','location','southwest')
setoptions(h,'YlimMode','manual','Ylim',{[-60 0]})

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Reference H0, H1=feedback(G,1), H2=G/(1+G).

对于低于 2e4 弧度/秒的频率,H2 的频率响应不准确。这种不准确性可以追溯到 z=1 附近引入的附加(相消)动态特性。具体来说,H2 在 z=1 附近的极点和零点大约是 H1 的两倍。因此,H2(z) 在 z=1 附近的准确性要差得多,这会使低频率响应失真。有关详细信息,请参阅示例Using the Right Model Representation

另请参阅

相关主题