最近需要运行一个十分庞大的程序,为了利用碎片时间运行该程序而工作时间运行其他程序,不得不临时保存工作区以使得时间上间断的任务能在逻辑上连续。
然而,该代码主体部分主要在循坏体中,循环体赋值变量在读取工作区数据后运行一次循环就会诡异地变成另外一个值。
结论是,MATLAB中的for循环其循环变量无法在循坏体中改变值,哪怕改变了,也会在下一次循环开始前变为原值,而while循环则可以随意在循坏体中地更改循环变量,所以解决办法是将所有for循环改为等效的while循环。
然而,对于等价的for循环和while循环,for循环的效率要更高,所以可以酌情将最外层的循环改为for循环,其初值根据工作区来定,而内层循环则改为while循环,可以利用工作区重新定义循环变量。