我parfor
以这种方式并行处理数据:
iteration = 10;
result = zeros(1, iteration);
matlabpool open local 2
parfor i = 1:iteration
data = generate_data();
result(i) = process_data(data);
end
end
matlabpool close
它工作正常,但我有一个问题。我的函数generate_data
会生成唯一数据(即 0、1、2、3、4 ...),但实际上有时我会两次给出相同的值(我给出 0、1、1、2、3、4、4、5、 ...)。简单来说,我的函数如下所示:
function data = generate_data()
persistent counter generated_data;
if(isempty(counter))
counter = 1;
generated_data = [0 1 2 3 4 5 6 7 8 9];
end
data = generated_data(counter);
counter = counter + 1;
我怎样才能解决这个问题 ?