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 Exchange で Loops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by