如何从SYS对象计算根和极点

时间:2012-10-15 06:07:42

标签: matlab

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

例如:

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

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

2 个答案:

答案 0 :(得分: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)获取图形表示。

答案 1 :(得分:0)

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

阅读the documentationsome background material,在我看来,您通过

定义TF对象
TF_obj = tf(num, den, ...)

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

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

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

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

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);

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

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

编辑(1):刚看到你的other question。我确实认为这是重复的,因为你得到了一个答案(与我的建议完全相同),所以我将对此进行一次密切的投票。