store vctors of non-fixed size
1 view (last 30 days)
Show older comments
I have a loop to call a function, this function will return a vector, the size of vector is not fixed. However, in the main function, I want to store the returned vector of each loop into a matrix or any other places. Is there any way to tackle this size changing issue? Seems that the preallocation is difficult.
0 Comments
Answers (1)
Walter Roberson
on 28 Dec 2022
If you have a known number of iterations, then pre-allocate a cell array and store the results into that.
If you have a maximum possible return size per iteration, sometimes it makes sense to take the output, pad it with filler values to the maximum size, and store the padded value into a pre-allocated array.
If I am reading multiple files in which I do not know maximum reasonable size, then at each step I read in a file, and compare the dimensions to the current dimensions of my accumulated data. If the new data is smaller in a dimension than the accumulated data, then I pad the data to the current size. If the new data is larger in some dimension than the saved data then I pad the saved data to the new size. Then now that the sizes are compatible, store the new data. This code takes a bit of work (it is easier if padding with zero is acceptable.)
0 Comments
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!