How using a script of variables in a parfor loop ?
2 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I have gathered the declaration of variables in one and the same script, to simply reduce the number of lines in the main function. The script of variables therefore contains:
Var1 = 2;
Var2 = 3;
....
The loop just reads the script.
parfor i = 1:5
scriptOfVariables
Var3 = Var1 + Var2
end
It seems that parfor does not accept it and I have to write the set of variables directly in the loop.
Any idea to avoid overloading the loop?
2 件のコメント
Ive J
2022 年 1 月 13 日
why not save/load the variables in/as mat/struct? Though not sure about overhead issues (should be fine if variables are few).
採用された回答
Matt J
2022 年 1 月 13 日
編集済み: Matt J
2022 年 1 月 13 日
Does scriptOfVariables use the loop counter i in any way? If not, you should move it outside the loop,
scriptOfVariables;
parfor i = 1:5
Var3 = Var1 + Var2;
end
Otherwise, you should be using a function instead
parfor i = 1:5
[Var1,Var2]=mfunction(i);
Var3 = Var1 + Var2;
end
4 件のコメント
Matt J
2022 年 1 月 15 日
From what I understand, Matlab cannot recognize structures declared outside the loop and used inside the loop.
No, that's not the problem. The problem is that you are not allowed to assign to variables declared outside the loop unless it is a sliced variable. However, you can return the struct from a function:
parfor i = 1:5
[S,Var1,Var2]=declareTemp();
Var3 = Var1 + Var2
struct.var(1).type = 6;
....
end
function [S,Var1,Var2]=declareTemp()
Var1 = 2;
Var2 = 3;
struct.var(1) = 5;
struct.var(2) = 7;
end
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Parallel for-Loops (parfor) についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!