フィルターのクリア

parfor for double iteration??

7 ビュー (過去 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 ExchangeParallel for-Loops (parfor) についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by