Matlab-以编程方式查找主导极点
我有一个SISO系统(tf形式),有48个特征值,我想找到占优势的极点(比如说,把它减少到一阶或二阶)。我需要知道它们来近似计算系统的阻尼和带宽。我不想依赖于时间响应的识别,我也不想看pzmap(因为我必须做很多次)。有人有办法解决这个问题吗?提前感谢您的帮助。如果您已经获得了传递函数,您可以做的是分析极点并根据其实际值进行排序。稳定的磁极或复磁极对(即在复平面的左侧)和离虚轴最近的将是您选择的最主要磁极 考虑到传递函数存储在Matlab-以编程方式查找主导极点,matlab,system,eigenvalue,transfer-function,ss,Matlab,System,Eigenvalue,Transfer Function,Ss,我有一个SISO系统(tf形式),有48个特征值,我想找到占优势的极点(比如说,把它减少到一阶或二阶)。我需要知道它们来近似计算系统的阻尼和带宽。我不想依赖于时间响应的识别,我也不想看pzmap(因为我必须做很多次)。有人有办法解决这个问题吗?提前感谢您的帮助。如果您已经获得了传递函数,您可以做的是分析极点并根据其实际值进行排序。稳定的磁极或复磁极对(即在复平面的左侧)和离虚轴最近的将是您选择的最主要磁极 考虑到传递函数存储在TF对象中,我们将其称为T,我们会想到类似的情况: %// Get n
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);
检查电线杆,我们得到:
>> 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
你可以通过查看零极点地图找到最主要的极点。。。或者只是波兰人。。。找到最接近虚轴的。除非我看到你写的一些代码,否则我真的不能告诉你更多。这就是我现在正在做的。。。但是由于我必须做很多次(比如说超过30次),我一直在寻找一个程序化的解决方案……我尝试了一下。看看,这个答案对你有帮助吗?如果确实如此,请考虑接受我的回答。
>> final_poles
final_poles =
-0.3376 + 0.5623i
-0.3376 - 0.5623i