Faster way to concatenate arrays with unknown size ?
9 次查看(过去 30 天)
显示 更早的评论
In my application, I have a huge for loop and at each iteration, I concatenate the 'result' array with the matrix obtained at the current loop. The function returns this 'result' array at the end of the for loop. Is there a way I can speed things up because concatenating seems very slow when the result array gets large enough. I won't know the final size of the array but I will know the size of the matrix at the current loop if that helps..
0 个评论
采纳的回答
Walter Roberson
2016-7-7
If you know the final data size then pre-allocate the output and store into the array as you go.
If you do not know the final data size then store the pieces in a cell array until the end (better yet if you can at least pre-allocate the cell array itself.) You can then cell2mat()
3 个评论
per isakson
2016-7-7
编辑:per isakson
2016-7-7
"know the maximum size it can take"  
One approach: Assume the result_array is  <kxm double>. Preallocate total_result as  <kxmxn double> where n is maximum number of loops that can occur.
total_result = zeros(k,m,n)
loop over huge number
total_result(:,:,jj) = result_array;
end
delete unused space of total_result
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!