在MATLAB里面怎样做一个for循环的进度记录,之后可以读取并继续的

用save可以保存当前所有变量的值,包括循环计数,load回来可以根据保存的循环计数产生新的循环范围.不过7层循环显然是程序结构没设计好.先改进一下程序,再修一下电脑吧...
■网友
MATLAB还是尽可能避免循环,七层是有点多了,可以尝试优化一下,不过也不排除题主实际问题就是需要这么多循环。先说优化循环:for i=1:n c(i)=a(i)*b(i)^2end优化成:c = a.*b^2类似的还有很多,可以看一看,如果不存在循环优化可以略过。在循环内的每一步输出数据,程序开始读取数据,输出文件的格式要设计一下,最主要的是每一层循环的循环变量值,重启后这个值是要作为循环变量的初始值,目测会很影响程序效率。另外我觉得还是想办法从电源入手解决吧,UPS啊不间断电源啊什么的,解决用电问题才是消除本质矛盾。
■网友
当然可以,但是你要自己实现每次循环就把中间变量保存到文件里的操作,也要实现脚本开始的时候读取文件然后跳到正确的地方继续。这样你就不能轻松写成两个循环了。而且你写文件一定要写两份,文件开头保留时间戳。这样当你写任何一个文件因为断电坏掉的话,你都可以安全恢复到上一次的状态(最多浪费一次循环的计算)。七层for循环每一层都要改成一个函数,大概代码会膨胀五六倍吧。
■网友
话说你是什么复杂的逻辑需要用到7层循环呢。
■网友
这是比较困难的。因为你在循环的时候,不仅仅改变了循环变量,而且还会改变计算数据。你如果想恢复一个计算场景,就需要读写你的计算数据。建议你改变业务逻辑的处理方式,比如预计算、展开一些循环,弄成一堆互不关联的输入数据,或者切成很多小文件,等等。
■网友
matlab中循环相较向量操作很慢的,依高票所说,先修改程序设计
■网友
各位前辈,我已经搞定了%--------------------------------clc%从.mat文件中读取ijk的值load m_process.mat%首先判断是否应该进位,如果存在进位则进位if k==6 \u0026amp;\u0026amp; j==5 k=1; j=1; i=i+1;elseif k==6 \u0026amp;\u0026amp; j\u0026lt;5 k=1; j=j+1;endm_FirstJudge=0%首次判断成功for ii=1:4 if m_FirstJudge==0 \u0026amp;\u0026amp; ii~=i else for jj=1:5 if m_FirstJudge==0 \u0026amp;\u0026amp; jj~=j else for kk=1:6 if m_FirstJudge==0 \u0026amp;\u0026amp; kk\u0026lt;=k else i=ii; j=jj; k=kk; save m_process.mat i j k m_FirstJudge=1; end end end endend%----------------------------------------一个比较笨的方法,记录循环的位置在此开机进入循环后先行判断到了位置后重新开始。感谢各位的指教,给了我很多灵感。
■网友
先考虑优化算法看看?或者交给云去做…现在不是有一些出售计算能力的机构么?


    推荐阅读