Preallocating memory for a matrix of unknown size
Show older comments
I have a number of points I need to store in a matrix - an m*2 to be specific. The problem being I do not know how many I need to store beforehand, but it typically ranges from 1500 - 15000. Is there a more efficient way of allocating memory than just using an arbitrarily big size that I know will definitely fit everything, or should I increment the matrix size by 1 with every step? theoretically I could run the code once before and just count the number of points, but I wont do that, because the code is too slow already.
So what's the best way to to this?
Accepted Answer
More Answers (3)
Hugo
on 24 Jun 2013
3 votes
You can use a buffer. I mean, suppose the matrix you want is M, then create M=[]; and a vector X=zeros(xsize,2), where xsize is a relatively small value compared with m (the number of rows of M). Then, fill X and when it is filled, just concatenate the matrix with M by doing M=[M; X]; and start filling X again from the first row on. That should save some time.
Simon
on 24 Jun 2013
1 vote
Zhiyu Xiao
on 18 Apr 2019
1 vote
Here's a similar question with the answer.
Hugh
Categories
Find more on Performance and Memory in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!