我正在尝试在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秒。
答案 0 :(得分:1)
您可能希望使用匿名函数替换此类符号变量(或者在较旧的Matlab版本中使用inline
替换现在已弃用的函数):
P11=@(x,y,r) (x/r).*(y/r).*(((x/r).^2+(y/r).^2)-3);
通过这种方式,您只使用双变量,因为x
,y
和r
现在是双倍而不是符号。 P11
将是一个函数句柄,您只需调用:
myResult=P11(myX,myY,myR);
其中myX
,myY
,myR
是x
,y
,r
的值。