About preallocating for speed
2 ビュー (過去 30 日間)
古いコメントを表示
There is a " for loop" in my program and Matlab gives me a suggestion to consider "Preallocating" for speed. I want to learn how to do it. This is my code:
A = [];
for i = 1:size(P,2)
Ai = build_matrix(P(:,i));
*A* = [A; Ai];
end
there is a red line under A on Bold saying that The size of the indicated variable or array appears to be changing with each loop iteration. Could you guys tell me what should I do to solve it. Thanks!!
0 件のコメント
採用された回答
James Tursa
2017 年 11 月 30 日
編集済み: James Tursa
2017 年 11 月 30 日
This depends on what the size and class of the matrix returned by build_matrix( ) is. E.g., suppose it returns an MxN double matrix. Then the pre-allocation and the assignments would look like this:
A = zeros(size(P,2)*M,N); % pre-allocate result
for i = 1:size(P,2)
A(1+(i-1)*M:i*M,:) = build_matrix(P(:,i)); % modify the way you do the assignment
end
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および 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!