MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   MATLAB在程序执行期间内存不足 (https://www.labfans.com/bbs/showthread.php?t=23158)

poster 2019-12-10 20:30

MATLAB在程序执行期间内存不足
 
我一直很高兴地使用MATLAB解决一些[URL="http://projecteuler.net/"]项目Euler[/URL]问题。昨天,我编写了一些代码来解决这些问题之一( [URL="http://projecteuler.net/index.php?section=problems&id=14"]14[/URL] )。当我编写包含长循环的代码时,我总是通过短循环运行它来测试代码。如果运行正常,并且可以执行预期的操作,则我认为循环的长度较长时也会出现这种情况。

这个假设被证明是错误的。在执行以下代码时,MATLAB在第75000次迭代中的某个地方耗尽了内存。

c=1; e=1000000; for s=c:e n=s; t=1; while n>1 a(s,t)=n; if mod(n,2) == 0 n=n/2; else n=3*n+1; end a(s,t+1)=n; t=t+1; end end 我该怎么做才能防止这种情况发生?我是否需要清除变量或释放进程中的内存?将生成的矩阵a保存到硬盘驱动器会有所帮助吗?



[B]回答:[/B]

这是解决方案,请与代码保持尽可能的距离(这非常接近,主要区别在于您只需要一维矩阵):

c=1; e=1000000; a=zeros(e,1); for s=c:e n=s; t=1; while n>1 if mod(n,2) == 0 n=n/2; else n=3*n+1; end t=t+1; end a(s)=t; end [fg]=max(a); 这需要几秒钟(请注意预分配),结果g解锁Euler 14门。



[url=https://stackoverflow.com/questions/2339197]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 04:59

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.