how do i store a matrix value inside a parfor loop?

8 vues (au cours des 30 derniers jours)
Naveen kumar Elumalai
Naveen kumar Elumalai le 17 Fév 2018
Commenté : ahmad eldeeb le 18 Nov 2022
I wanted to use the A matrix outside the parfor loop for further computation, i get an error stating "cannot run due to way variable A", is there any solution to this problem ??is there any other way to save the matrix???
thank you
N=50;
parfor n=1:Nc
b=rand(300,103);
[Q,R]=qr(b,0);
A((n-1)*(N+1)+1:n*(N+1),:)=R
end

Réponse acceptée

Greg
Greg le 17 Fév 2018
Pre-allocate A to store each R along the third dimension, then reshape it outside the loop. Iterations of parfor can't use indexing that depends on other iterations of the loop (i.e., n-1).
A = zeros(N+1,numColsofR,Nc);
parfor ...
A(:,:,n) = R;
end
reshape(permute(A,[1,3,2]),[],numColsofR);
  4 commentaires
Naveen kumar Elumalai
Naveen kumar Elumalai le 17 Fév 2018
This really worked out
ahmad eldeeb
ahmad eldeeb le 18 Nov 2022
What if zeros will consume large memory?

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by