MATLAB Answers

How to fix index in a parfoor loop?

조회 수: 1(최근 30일)
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

표시 이전 댓글 수: 1
Andreu Angles Castillo
f is a function of two variables, input two variables and gives a scalar.
Stephen Cobeldick
Stephen Cobeldick 13 Sep 2018

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

Andreu Angles Castillo
errors uploaded

로그인 to comment.

채택된 답변

Titus Edelhofer
Titus Edelhofer 14 Sep 2018
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

Andreu Angles Castillo
Thank you very much, it worked for me.

로그인 to comment.

More Answers (0)

이 질문에 답변하려면 로그인을(를) 수행하십시오.

제품


릴리스

R2017b

Translated by