我需要在MATLAB中使用parfor
來編寫一個簡單的嵌套循環。骨骼的代碼是:Matlab parfor嵌套循環變量訪問
parfor i=1:M
for j=1:N
A(i,j)=myFunction(i,j);
end
end
在此之後,我需要找到(對應的行數和列數)的矩陣A
最大值。但是,該變量不能在parfor
循環之外訪問。什麼是最簡單的方法來做到這一點?這對分類器的多個參數調整是必需的。
更新
這裏是確切的代碼:
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
我試過你的代碼並得到了同樣的錯誤。然後,我嘗試了下面的Daniel的代碼,它的工作。很明顯,用變量代替長度(C1)和長度(C2)解決了這個問題。 – Herb