parfor for double iteration??

3 ビュー (過去 30 日間)
Jinsoo
Jinsoo 2013 年 8 月 23 日
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 件のコメント
Khoo
Khoo 2013 年 8 月 23 日
Are you using the parallel computing from matlabpool? parfor is same as for-loop but it's in parallel computing.

サインインしてコメントする。

採用された回答

Edric Ellis
Edric Ellis 2013 年 8 月 27 日
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 件のコメント
Jinsoo
Jinsoo 2013 年 9 月 4 日
Thank you very much.

サインインしてコメントする。

その他の回答 (1 件)

Madhura Suresh
Madhura Suresh 2013 年 8 月 26 日
You will need to slice/classify your variables in parfor loops. Look at this blog:
  1 件のコメント
Jinsoo
Jinsoo 2013 年 9 月 4 日
Thank you very much.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by