Рассмотрим следующую пару функций:Как печатать в тот же файл из разных Итераций PARFOR?
function fileTop
test = fopen('test.txt','w');
fprintf(test,'In function "fileTop"\r\n');
fileMid(test)
fprintf(test,'Back in function "fileTop"');
fclose(test);
end
и:
function fileMid(fid)
for k = 1:5
pause(rand)
fprintf(test,'In "fileMid %d" at %f\r\n',k,now);
end
end
Если вы просто запустите fileTop
вы получаете новый текстовый файл (в случае, если это первый раз) следующего содержания:
In function "fileTop"
In "fileMid 1" at 736847.920072
In "fileMid 2" at 736847.920073
In "fileMid 3" at 736847.920081
In "fileMid 4" at 736847.920087
In "fileMid 5" at 736847.920096
Back in function "fileTop"
который просто отлично!
Теперь попробуйте изменить цикл в fileMid
к parfor
, и вы получите сообщение об ошибке:
Error using fileMid (line 2)
Invalid file identifier. Use fopen to generate a valid file identifier.
Есть ли способ решить эту проблему?
BTW, мне не нужен порядок, в котором итерации печатаются.