Parallel Computing Question for For loop switch to parfor

Illustration
Remingtonsmith - 2021-01-15T09:58:32+00:00
Question: Parallel Computing Question for For loop switch to parfor

I am trying to find the nearest phase value to time intervals. This is the loop I have used. The  matrix is large and I want to use parallel computing function 'parfor', but cannot due to having embedded functions within a function. I somewhat understand that they need things to be as simplistic as possible, but is there a way to fix this so that I can use 'parfor' function? I do not fully understand why the parallel processing has the limitations, so I am not exactly sure how to fix it. Any help would be greatly appreciated!   for i=1:length(timeintervals(:,1)) for ii=1:length(timeintervals) [~,ix]=min(abs(timeintervals(i,ii)-phasevalues(:,2))); % find nearest location out(i,ii)=phasevalues(ix); end end

Expert Answer

Profile picture of Neeta Dsouza Neeta Dsouza answered . 2025-11-20

Why not as follows?
 
 
 col1=phasevalues(:,1);
 col2=phasevalues(:,2); %as separate variable, repeated memory allocation is avoided

 parfor j=1:size(timeintervals,2)
   [~,ix]=min( abs(timeintervals(:,j).' - col2 ) );  % find nearest location
   out(:,j)=col1(ix);   
 end


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!