MATLAB: How to pre-allocate for unknown size vector

MATLABmatlab coderpreallocation

vector = [];
for i = 1:1000000
r = randi([1 4],1,1); % a random integer generator between 1 and 4
vector = [vector 1:r];
end
% 1. How to preallocate 'vector' ?
% 2. And get rid of unassigned variables ?
% 3. Preallocation considering Matlab coder compatability perspective !!
% 4. Can i use 'coder.nullcopy' ?

Best Answer

Here is one way:
numIterations = 4;
maxLength = 4;
vector = zeros(1, numIterations * maxLength);
lastIndex = 0;
for k = 1: numIterations
r = randi([1 maxLength],1,1); % a random integer generator between 1 and 4
vector(lastIndex+1 : lastIndex + r) = 1 : r;
lastIndex = lastIndex + r;
end
% Crop off unused elements
vector = vector(1:lastIndex)