Azzera filtri
Azzera filtri

is there any way to keep the uninitialized variable in parfor and recall it outside

5 visualizzazioni (ultimi 30 giorni)
Hi
This is how it look like my code:
b = [];
parfor i = 1:n
for j=1:m
if b && some_condition(i)
t=do_something(i);
b = [b;t];
end
end...
end
I want to save b matrix for every itration , please help
Best

Risposta accettata

Manikanta Aditya
Manikanta Aditya il 29 Apr 2024
In MATLAB, when using a parfor loop (parallel for loop), you need to understand that each iteration of the loop is executed independently and potentially on different workers. This means that variables like b in your example cannot be directly modified in the manner you're attempting because it breaks the independence of each iteration.
However, you can collect results from each iteration in a way that is compatible with parfor.
n = 10; % Example value for n
m = 5; % Example value for m
% Preallocate a cell array for the results
results = cell(n, 1);
parfor i = 1:n
temp_b = []; % Temporary variable for this iteration
for j = 1:m
if ~isempty(temp_b) && some_condition(i)
t = do_something(i);
temp_b = [temp_b; t];
end
end
results{i} = temp_b; % Store the result of this iteration
end
% Concatenate all the results after the parfor loop
b = vertcat(results{:});
Hope this helps!
  6 Commenti

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by