필터 지우기
필터 지우기

Use parfor and getting "Index exceeds matrix dimensions" error

조회 수: 2 (최근 30일)
Pleas need help , I use Parfor to run the code in parallel but I got "Index exceeds matrix diamensions"
when I run the code with for it runs normally.
Rootpath=('............');
flist1=dir(fullfile(Rootpath));
parfor i=3: size (flist1,1)
inputpath=strcat(Rootpath,'/',flist1(i).name,'/');
outpath=strcat('./Output/',flist1(i).name,'/');
if ~isdir(outpath)
mkdir(outpath);
end
Read_main(inputpath,outpath)
end
  댓글 수: 2
Walter Roberson
Walter Roberson 2017년 2월 25일
Which line is the error report on?
I recommend by the way that you use fullfile to create the path names

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2017년 2월 26일
You could end up with mysterious path problems in the case that your Rootpath was a global variable. Global variables are not copied to parfor workers.
  댓글 수: 3
Walter Roberson
Walter Roberson 2017년 2월 26일
If it is a global variable, copy it to a local variable and use that in the code.
Alternately, you can use parfevalOnAll() before running the parfor, running a small bit of code that creates Rootpath as a global variable and initializing it with the appropriate value.
Or since you do not appear to write to the variable in the code, you could use parallel.pool.constant()
But really, for a simple variable such as this, best would just be to avoid using a global variable.
NOOR AL-SHAKARJI
NOOR AL-SHAKARJI 2017년 2월 26일
Thank You Alot!!!
Now it works
I just put the globla variable inside the body of parfor

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by