入门MATLAB ,遇到一个比较基础的并行计算问题,在matlab中 使用 parfor 循环如何获取上次迭代结果
在使用MATLAB的parfor循环时,每个迭代都是独立的,并行计算时不能访问前一次迭代的结果。这是由于parfor会将迭代分配到不同的工作进程上,每个工作进程拥有自己的内存空间,无法直接访问其他工作进程的数据。
如果需要在每个迭代中使用前一次迭代的结果,可以在循环体内使用一个变量来存储前一次迭代的结果,然后在下一次迭代中使用该变量。
例如:
result = zeros(1, n);
prev_result = zeros(1, n);
for i = 1:n
if i == 1
% 第一次迭代
prev_result = initial_result;
else
% 后续迭代
prev_result = result(i-1,:);
end
result(i,:) = do_calculation(prev_result);
end
在这个例子中,prev_result存储了前一次迭代的结果,如果是第一次迭代,则使用initial_result作为前一次迭代的结果。在后续迭代中,prev_result将被设置为前一次迭代的result数组。然后使用prev_result进行计算,并将结果存储在result数组中。
```