概述
如果您已经获得了传递函数,您可以做的是分析极点并根据它们的实际值进行排序。稳定的极点或复极点(即在复平面的左侧)和最接近虚轴的极点或极点将是您选择的最主要的极点。
考虑到您的传递函数存储在TF对象中,我们将其称为T:
%// Get numerator and denominator data
[num,den] = tfdata(T, 'v');
%// Get the poles
pl = roots(den);
%// Get the stable poles only
pl_stable = pl(real(pl) < 0);
%// Determine the closest real location to the imaginary axis
[~,ind] = min(abs(real(pl_stable)));
%// Find all poles that share this same real location
tol = 1e-10;
ind_final = find(abs(real(pl_stable - pl_stable(ind))) <= tol);
final_poles = pl_stable(ind_final);
此代码的第一部分查找传递函数的分子和分母系数,并将它们分别存储在num和den中。之后,我们通过找到分母的根来获得传递函数的极点。之后,我们通过搜索实际成分为负的所有极点来仅隔离稳定极点。
一旦我们隔离出这些极点,我们通过使用min并使用第二个输出确定该最小值的位置来确定与虚拟访问最接近的极点。
之后,我们希望通过搜索在这个最小实际值的小容差范围内的所有极点来找到共享这个相同最小实部的所有极点。我将此容差设置为1e-10。一旦我们找到这些位置,我们就会对稳定的极点阵列进行索引并提取出我们需要的东西。
这是一个小例子:
>> T = tf([1 1], [1 3 2 1])
T =
s + 1
---------------------
s^3 + 3 s^2 + 2 s + 1
Continuous-time transfer function.检查两极,我们得到:
>> pl
pl =
-2.3247 + 0.0000i
-0.3376 + 0.5623i
-0.3376 - 0.5623i正如你所看到的,有一对主导极点,它们的真实分量是-0.3376,而另一个真正的极点位于-2.3247更远的地方。 s = -0.3376 +/- 0.5623i中的两极是我们需要提取出来的。
通过上面的代码,我们得到:
>> final_poles
final_poles =
-0.3376 + 0.5623i
-0.3376 - 0.5623i
最后
以上就是温柔黑夜为你收集整理的matlab主导极点怎么求,Matlab - 以编程方式查找主导极点的全部内容,希望文章能够帮你解决matlab主导极点怎么求,Matlab - 以编程方式查找主导极点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复