matlab - dynamically fill vector without assigning empty matrix -
oftentimes need dynamically fill vector in matlab. sligtly annoying since first have define empty variable first, e.g.:
[a,b,c]=deal([]); ind=1:10 if rand>.5 %some random condition emphasize dynamical fill of vector a=[a, randi(5)]; end end %display result
is there better way implement 'push' function, not have define empty vector beforehand? people tell me nonsensical in matlab- if think case please explain why.
related: push variable in vector in matlab, is-there-an-elegant-way-to-create-dynamic-array-in-matlab
in matlab, pre-allocation way go. docs:
for
,while
loops incrementally increase size of data structure each time through loop can adversely affect performance , memory use.
as pointed out in comments m7913d, there question on mathworks' answers section addresses same point, read here.
i suggest "over-allocating" memory, reducing size of array after loop.
numloops = 10; = nan(numloops, 1); ind = 1:numloops if rand > 0.5 a(ind) = 1; % assign value current loop index end end = a(~isnan(a)); % rid of values weren't used (and remain nan)
no, doesn't decrease amount have write before loop, it's worse having write a = []
! however, you're better off spending few keystrokes , minutes writing structured code making saving , having worse code.
Comments
Post a Comment