使用“解决”功能需要太长时间

时间:2015-06-30 10:01:48

标签: performance matlab

在使用Matlab时,我是初学者。我目前正在使用7.12版本。

我的问题很简单。我需要解决一个等式(在这种情况下,我需要找到myfun等于0的位置):

myfun = @(tf) 2*pi/N+(ti-tf)*v_ang+A/(2*pi*f)*(cos(2*pi*f*tf)-cos(2*pi*f*ti));

正如您所看到的,变量是tf,其他所有变量都是常数。

我使用以下行解决它(并使用解决方案计算我存储在数组 delta_t 中的值):

delta_t(i) = (solve(myfun(t))-delta_t(i-1))*10^9;

但问题是,我必须解决很多次(实际上超过五十万次),并且你可以看到delta_t(i)的价值取决于delta_t(i-1)

所以这是我的问题:如何让解决过程更快?我试过这一行:

delta_t(i) = (solve(myfun(t),'IgnoreAnalyticConstraints','true','MaxDegree','1')-delta_t(i-1))*10^9;

但它弄乱了我的代码并且我得到了一个错误,而且我并不相信它会产生很大的不同。

最重要的是,我注意到我使用解决越多,它越慢。例如,如果有10 000次迭代,则迭代次数9000处的求解速度将慢于迭代次数10处的解算次数。

我希望我很清楚,请原谅我的英语,因为这不是我的母语。

PS:我试过A=0,它确实更快(大约快10倍),但程序运行时它仍然会变慢。

0 个答案:

没有答案