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

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

 採用された回答

Greg
Greg 2018 年 2 月 17 日

2 投票

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 件のコメント

Naveen kumar Elumalai
Naveen kumar Elumalai 2018 年 2 月 17 日
thank you so much for the answer !!
Greg
Greg 2018 年 2 月 17 日
Happy to help.
Naveen kumar Elumalai
Naveen kumar Elumalai 2018 年 2 月 17 日
This really worked out
ahmad eldeeb
ahmad eldeeb 2022 年 11 月 18 日
What if zeros will consume large memory?

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by