Мне нужно написать простой вложенный цикл цикла в MATLAB, используя parfor
для внешнего цикла. Скелетной код:Matlab parfor доступ к вложенным переменным цикла
parfor i=1:M
for j=1:N
A(i,j)=myFunction(i,j);
end
end
После этого мне нужно найти максимальное значение в матрице A
(соответствующий номер строки и столбца). Однако эта переменная недоступна вне цикла parfor
. Каков самый простой способ сделать это? Это требуется для настройки нескольких параметров для классификатора.
Update
Вот точный код:
C1=[0.001;100]; C2=[0.001;100];
A=zeros(length(C1),length(C2));
parfor i=1:length(C1)
for j=1:length(C2)
A(i,j)=2*i-3*j;
end
end
[max_num,max_idx] = max(A(:)); %finding maximum element
[X Y]=ind2sub(size(A),max_num); %retrieving location of max element
% Need to use these values
bestC=C1(X)
bestD=C2(Y)
poolobj = gcp('nocreate');
delete(poolobj);
Это дает ошибку:
Error: The variable A in a parfor cannot be classified.
A должен быть доступен за пределами parfor после завершения цикла. Я просто проверил это, заменив ваш внутренний оператор на A (i, j) = i * M + j * N; Какую ошибку вы получаете, когда пытаетесь получить к ней доступ? – Herb
Я изменил вопрос, чтобы добавить код и ошибку. Пожалуйста, смотрите. – Sumit
Я пробовал ваш код и получил ту же ошибку. Затем я попробовал код Дэниела ниже, который работал. Так ясно, что замена длины (C1) и длины (C2) переменными решает проблему. – Herb