Выходы из контуров PARFOR должны быть либо переменными редукции (например, вычисление суммирования), либо "нарезанными". Подробнее см. на этой странице в документе.
В вашем случае вы пытаетесь сформировать «нарезанный» вывод, но ваше индексное выражение слишком сложно для PARFOR. В PARFOR секционированный вывод должен быть проиндексирован с помощью: переменной цикла для одного индекса и некоторого константного выражения для других индексов. Константное выражение должно быть либо :
, end
, либо буквальным скаляром. В следующем примере показано несколько нарезанных выходных данных:
x3 = zeros(4, 10, 3);
parfor ii = 1:10
x1(ii) = rand;
x2(ii,:) = rand(1,10);
x3(:,ii,end) = rand(4,1);
x4{ii} = rand(ii);
end
В вашем случае ваше индексирующее выражение в Ad слишком сложное, чтобы PARFOR мог его обработать. Вероятно, самое простое, что вы можете сделать, это вернуть вычисления в виде массива ячеек, а затем ввести их в Ad
на стороне хоста, используя обычный цикл FOR, например:
parfor i = 1:length(con)
tmpout{i} = ....;
end
for i = 1:length(con)
Ad(...) = tmpout{i};
end