我想从TF对象计算根和极点。但我在手册中没有找到相应的功能。
例如:
我有一个给定的TF
对象。我想知道根和两极在哪里。
目的是我有两个对象,乘以它们,从结果中我想知道根和极。
答案 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 documentation和some background material,在我看来,您通过
定义TF对象TF_obj = tf(num, den, ...)
其中num
和den
是系数的向量,分别定义分子和分母中的多项式。
编辑(2):如果您有一个现有的TF对象TF_obj
,您仍然可以像这样访问num
和den
:
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。我确实认为这是重复的,因为你得到了一个答案(与我的建议完全相同),所以我将对此进行一次密切的投票。