Matlab脚本耗时太长

时间:2016-02-17 15:40:50

标签: performance matlab

我正在尝试在4GB,2.4 GHz Windows 10笔记本电脑上运行一个由同事编写的Matlab程序,它实际上需要很长时间,我通常会在5分钟无响应运行后中断它。

我运行了探查器并注意到符号函数运行时正在杀死我。在某一点上,以这种方式定义了几十个多项式,并且程序在这些定义下显着减慢:

syms P11 x y; P11= (x/r).*(y/r).*(((x/r).^2+(y/r).^2)-3);

使用这些多项式时是否有可能获得速度?计算机规格可能很低但似乎没有挣扎,即处理器运行在12%,RAM为67%,磁盘使用率没有。在处理器速度略快的另一台计算机上,同样的程序在Matlab 2012上耗时130秒。

1 个答案:

答案 0 :(得分:1)

您可能希望使用匿名函数替换此类符号变量(或者在较旧的Matlab版本中使用inline替换现在已弃用的函数):

P11=@(x,y,r) (x/r).*(y/r).*(((x/r).^2+(y/r).^2)-3);

通过这种方式,您只使用双变量,因为xyr现在是双倍而不是符号。 P11将是一个函数句柄,您只需调用:

即可收集此类公式的结果
myResult=P11(myX,myY,myR);

其中myXmyYmyRxyr的值。