我试着在一台4 4GB,2.4 GHz的Windows10笔记本电脑上运行一个同事写的Matlab程序,这真的太耗时了,我通常在5分钟没有响应的运行后中断它。
我运行分析器,注意到符号函数运行时要了我的命。有一次,以这种方式定义了几十个多项式,程序在这些定义上明显减慢:
syms P11 x y; P11= (x/r).*(y/r).*(((x/r).^2+(y/r).^2)-3);有没有可能在使用这些多项式的同时提高速度的方法?计算机规格可能很低,但似乎并不困难,即处理器的运行速度为12%,RAM的运行速度为67%,磁盘使用率为零。在另一台处理器稍快的计算机上,相同的程序在Matlab 2012上需要130秒。
发布于 2016-02-18 00:07:48
您可能希望将这些符号变量替换为匿名函数(或者在较早的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的值。
https://stackoverflow.com/questions/35461227
复制相似问题