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

1 visualización (últimos 30 días)
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?

Respuesta aceptada

Steven Lord
Steven Lord el 7 de Mayo de 2024
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 comentarios
Zahra Yousefi Darani
Zahra Yousefi Darani el 7 de Mayo de 2024
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 el 8 de Mayo de 2024
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).

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by