how to not violate from trnasparency in parloop? (a good replacement for "which" or "exist")

1 次查看(过去 30 天)
Hello!
inside the body of my parloop, I have to evaluate the existance of sth in my workspace then based on that, run a piece of code,
of course this is not working:
if exist('NHP_SoloB')
Actor_B= string(report_struct.unique_lists.B_Name);
else
Actor_A = string(report_struct.unique_lists.A_Name);
end
%
%
loadedDATA = array2table(report_struct.data,'VariableNames',report_struct.header);
if exist('NHP_SoloB')
Rewarded_Aborted = report_struct.unique_lists.B_OutcomeENUM(loadedDATA.B_OutcomeENUM_idx);
else
Rewarded_Aborted = report_struct.unique_lists.A_OutcomeENUM(loadedDATA.A_OutcomeENUM_idx);
end
exist or which can not be used here bc they violates with transparency rules , do you have any suggestion to be consistent with transparency of the workspace?

采纳的回答

Steven Lord
Steven Lord 2024-5-7
How does that variable get created in the workspace? Inside the loop or before? If it gets created inside the loop I'm not sure you'll be able to use parfor at all, as whether or not that variable exists likely depends on which loop iterations have run previously.
Rather than testing for the existence of the variable, can you check for the value of that variable? That could still potentially lead to a violation of loop iteration independence (depending on the exact nature of the calculations you're trying to perform) but it would avoid the transparency rule violation.
  2 个评论
Zahra Yousefi Darani
Basically I have two data sets, each of which are a huge structure and the way that I process the data from each is different, before the parloop they are loaded to the main workspace depending on ''input of the user''.
I wanted to say if user loaded the first data set, go through that .... if user loaded the second, go through this... But inevitably I created two seperated parloops for processing the data of each data sets.
Edric Ellis
Edric Ellis 2024-5-8
Maybe it would work to perform the conditional pieces of code ahead of the parfor loop, and have that work with a single named variable? (There can be additional complications other than simply exist when conditionally accessing variables inside parfor which might trip you up).

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

产品


版本

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by