Building an array using parfor
    2 views (last 30 days)
  
       Show older comments
    
Hi,
I am building an array using parfor in the following fashion :
parfor ifreq = 1:80
  for iSig   =  1:140
    [SigVal,~] = somefunction(NecessaryInputs)
    AllSig(ifreq,iSig,:) = SigVal;
  end
end
However this is throwing an error that the variable AllSig cannot be classified. Any ideas how to get this to work ?
0 Comments
Answers (2)
  Edric Ellis
    
      
 on 25 Jan 2016
        What version of MATLAB are you using? I tried this in R2015b, and it worked as expected:
parfor ifreq = 1:80
  for iSig   =  1:140
    SigVal = rand(3,1);
    AllSig(ifreq,iSig,:) = SigVal;
  end
end
  Walter Roberson
      
      
 on 25 Jan 2016
        parfor ifreq = 1:80
  SigVal = zeros(140, 3);  %for example
  for iSig   =  1:140
    [SigVal(iSig, :),~] = somefunction(NecessaryInputs)
  end
  AllSig(ifreq,:,:) = SigVal;
end
2 Comments
  Walter Roberson
      
      
 on 25 Jan 2016
				parfor is not necessarily faster, due to the various overheads involved. Also because the workers are restricted to one CPU each whereas non-parallel array computations that are "big enough" get sent to BLAS or LAPACK which operates on all CPUs on the host. Therefore any one computation can take several times longer in parallel.
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

