我想从 TF 对象计算根和极点。但是我在手册中没有找到该功能。
例如:
我有一个给定的TF
对象。我想知道根和极点在哪里。
目的是我有两个对象,将它们相乘并从结果中我想知道根和极。
我想从 TF 对象计算根和极点。但是我在手册中没有找到该功能。
例如:
我有一个给定的TF
对象。我想知道根和极点在哪里。
目的是我有两个对象,将它们相乘并从结果中我想知道根和极。
最简单的方法是从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)
.
我对控制系统工具箱没有经验,但我会试一试。
阅读文档和一些背景资料,在我看来,您通过以下方式定义 TF 对象
TF_obj = tf(num, den, ...)
其中num
和den
是分别定义分子和分母中多项式的系数向量。
编辑(2):如果你有一个现有的 TF 对象TF_obj
,你仍然可以像这样访问num
和den
:
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):刚刚看到你的另一个问题。我确实认为这是重复的,因为您得到了答案(以与我建议的完全相同的方式),因此我将对这个答案投赞成票。