Проблема здесь в том, что вы присваиваете часть total_results
во время цикла, но не «нарезанным» способом. Вероятно, проще собрать имена и значения отдельно, а затем использовать cell2struct
после цикла parfor
, например:
N = 10;
names = cell(1, N);
results = cell(1, N);
parfor i = 1:10
name = sprintf('result_%i',i)
names{i} = name;
results{i} = struct('a', rand(i), 'b', rand(i));
end
total_results = cell2struct(results, names, 2);
EDIT Другой способ нарезки выходных данных (как это предлагается в комментариях) заключается в использовании
parfor i = 1:10
total_results(i).result = struct('a', rand(i), 'b', rand(i));
end
. В этом случае это работает, поскольку индексное выражение первого уровня представляет собой «нарезанное» выражение.