MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

0

How to fix index in a parfoor loop?

Andreu Angles Castillo さんによって質問されました 2018 年 9 月 13 日
最新アクティビティ Andreu Angles Castillo さんによって コメントされました 2018 年 9 月 18 日
I have the following code and get indexing error
parfor dt=0:round(tmax/step)
fprintf(1,'\b\b\b\b\b%05.2f',dt);
for dm=0:dt
A(dm+1,dt+1) = f(dm,dt);
end
end
It does not make sense, for me, because each loop of the first for is stand alone in the variable dt. The size of A has been prefixed.
The error messages on the script are:
-The PARFOOR loop cannot run due to the way varaiable 'A' is used. (On line 1)
-Valid indices for 'A' are resticted in PARFOR loops. (On line 4)
Error when run:
Error: The variable A in a parfor cannot be classified. See Parallel for Loops in MATLAB, "Overview".

  4 件のコメント

f is a function of two variables, input two variables and gives a scalar.
Stephen Cobeldick
2018 年 9 月 13 日

@Andreu Angles Castillo: please give the complete error message. This means all of the red text.

errors uploaded

サインイン to comment.

製品


リリース

R2017b

1 件の回答

回答者: Titus Edelhofer
2018 年 9 月 14 日
 採用された回答

Hi Andreu,
agreed, it looks as if this case could be handled. But it is fairly easy to work around this by separating the inner loop from the parfor loop:
n = round(tmax/step) + 1;
parfor dt=0:round(tmax/step)
fprintf(1,'\b\b\b\b\b%05.2f',dt);
col = zeros(n, 1);
for dm=0:dt
col(dm+1) = f(dm, dt);
end
A(:, dt+1) = col;
end
Titus

  1 件のコメント

Thank you very much, it worked for me.

サインイン to comment.



Translated by