-1

我想从 TF 对象计算根和极点。但是我在手册中没有找到该功能。

例如:

我有一个给定的TF对象。我想知道根和极点在哪里。

目的是我有两个对象,将它们相乘并从结果中我想知道根和极。

4

2 回答 2

1

最简单的方法是从tf对象获取零极增益 (ZPK) 数据。您可以按如下方式执行此操作:

G = tf([1], [1 0.1 1]);
[z,p,k] = zpkdata(G);

z % are the zeros (roots as you call them)
p % are the poles
k % is a static gain

您还可以使用pzmap(G).

于 2012-10-15T06:59:55.117 回答
0

我对控制系统工具箱没有经验,但我会试一试。

阅读文档一些背景资料,在我看来,您通过以下方式定义 TF 对象

TF_obj = tf(num, den, ...)

其中numden是分别定义分子和分母中多项式的系数向量。

编辑(2):如果你有一个现有的 TF 对象TF_obj,你仍然可以像这样访问numden

num = TF_obj.num;
den = TF_obj.den;

现在,极点是分母多项式的根,而是分子多项式的根。因此,使用 Matlab 的roots函数

TF_roots = roots(num);
TF_poles = roots(den);

或者

TF_roots = roots(TF_obj.num);
TF_poles = roots(TF_obj.den);

如果你愿意,你可以在没有 Matlab 的搜索路径的地方定义一个小辅助函数,它允许你在一个单行中做到这一点:

function [rts, pls] = TfRootsPoles(num, den)
    rts = roots(num);
    pls = roots(den);
end

以便

[TF_roots, TF_poles] = TfRootsPoles(num, den);

将是上述更易读的直观版本。

您也可以[z,p,k] = zpkdata(G)按照 Egon 的建议使用,它本质上是相同的功能,但将 TF 对象作为其输入。

编辑(1):刚刚看到你的另一个问题。我确实认为这是重复的,因为您得到了答案(以与我建议的完全相同的方式),因此我将对这个答案投赞成票。

于 2012-10-15T06:28:31.623 回答