the temporary variable uses a value set outside of the PARFOR loop

1 次查看(过去 30 天)
Let' say I have the code like this:
gcp;
a=zeros(1,3);%create the zeros matric 1x3
my_cell={[1 1 1;2 2 2],[3 3 3;4 4 4],[5 5 5;6 6 6;7 7 7]}; %this is the initial cell
parfor I=1:3
input_data=my_cell{I};%get data coordinate(x,y,z) from my_cell
[ result ] = my_function( input_data );% The result will be generated from function named "my_function". The result is kx3 matric
[a,~,~] = union(a,result,'rows');% add the result to the initial matrix a
end
In my code informed this warning: the temporary variable "a" uses a value set outside of the parfor loop. How can I fix this error for "parfor"
Thanks.

采纳的回答

Walter Roberson
Walter Roberson 2018-8-13
You cannot do that. You are trying to use|a| as a reduction variable, but union() is not one of the supported reduction operations. You will need to do something like
my_cell={[1 1 1;2 2 2],[3 3 3;4 4 4],[5 5 5;6 6 6;7 7 7]}; %this is the initial cell
N = size(my_cell,2);
a = cell(N,1);
parfor I = 1 : N
input_data=my_cell{I};%get data coordinate(x,y,z) from my_cell
[ result ] = my_function( input_data );% The result will be generated from function named "my_function". The result is kx3 matric
a{I} = result;
end
a = unique(vertcat(a{:}), 'row');

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Parallel for-Loops (parfor) 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by