parfor for double iteration??

3 vues (au cours des 30 derniers jours)
Jinsoo
Jinsoo le 23 Août 2013
Dear, I want to make a matrix G(m, n) as follows:
gamma = sqrt(sqrt(k/(E*I))); % gamma
G = zeros(length(x),length(qusi));
parfor n1 = 1:length(x)
for n2 = 1:length(qusi)
qua = gamma*abs(qusi(n2)-x(n1))/sqrt(2);
G(n1,n2) = (gamma/(2*k))*exp(-qua)*sin(qua + pi/4); % G(x,qusi)
end
end
However, the error come up as follows:
Error using testsquare_test (line 53)
Error: The variable G in a parfor cannot be classified.
See Parallel for Loops in MATLAB, "Overview".
I can't understand it. How should I do?
Could you please help me?
  1 commentaire
Khoo
Khoo le 23 Août 2013
Are you using the parallel computing from matlabpool? parfor is same as for-loop but it's in parallel computing.

Connectez-vous pour commenter.

Réponse acceptée

Edric Ellis
Edric Ellis le 27 Août 2013
Unfortunately, PARFOR doesn't understand how you're accessing 'G' even though you are using it in an order-independent way. What you need to do is build up a temporary row, and then assign it to the row of 'G' all in one go:
parfor n1 = 1:length(x)
tempRow = zeros(1, length(qusi));
for n2 = 1:length(qusi)
qua = gamma*abs(qusi(n2)-x(n1))/sqrt(2);
tempRow(n2) = (gamma/(2*k))*exp(-qua)*sin(qua + pi/4);
end
G(n1, :) = tempRow;
end
  1 commentaire
Jinsoo
Jinsoo le 4 Sep 2013
Thank you very much.

Connectez-vous pour commenter.

Plus de réponses (1)

Madhura Suresh
Madhura Suresh le 26 Août 2013
You will need to slice/classify your variables in parfor loops. Look at this blog:
  1 commentaire
Jinsoo
Jinsoo le 4 Sep 2013
Thank you very much.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Gamma Functions dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by