ai
,bi
和ci
是长度为10的向量,这些向量在代码中会发生变化。此代码必须执行超过一百万次。因此,找到x
的方法必须非常快。我尝试了以下代码:
方法1:
s=tf('s');
sys=0;
for i=1:10
sys =sys+a(i)/(s*b(i)+c(i));
end
[roots1] = zpkdata(sys,'v');
在这种情况下,for
循环需要0.1秒才能完成,而[roots] = zpkdata(sys,'v');
的执行时间不到0.005秒。因此,在实际情况下,在方程sys
被zpkdata
求解之前准备好要花费一百万次的长时间。似乎矢量化操作不适用于'tf'参数类型。
接下来,我检查了以下方法: 方法2:
syms x
sys=sum(a./(x*b+c));
[roots1]=vpasolve(sys,x)
此符号方法再次变慢,花了0.13秒才能执行。
您知道适合我情况的任何快速方法吗?或者,您知道在方法1中更快地准备sys
的方法吗?
很多tnx。