Use parfor and getting "Index exceeds matrix dimensions" error
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
NOOR AL-SHAKARJI
am 25 Feb. 2017
Kommentiert: NOOR AL-SHAKARJI
am 26 Feb. 2017
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 Kommentare
Walter Roberson
am 25 Feb. 2017
Which line is the error report on?
I recommend by the way that you use fullfile to create the path names
Akzeptierte Antwort
Walter Roberson
am 26 Feb. 2017
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 Kommentare
Walter Roberson
am 26 Feb. 2017
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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!