Saving data in a loop as a vector

I have a binomial expansion which requests the user to input an x value between (-1,1). I am trying to save the term by term output of the above code into a vector but everything i try gives me an error. I think its perhaps because my n sequence starts at zero? If i try to put binx(n) = .... it throws an error.
I basically just want to save all the passes through the loop in a single vector, currently it only saves the last one. All other examples I've found online don't seem to work in this case.

 Accepted Answer

Indeed, Matlab arrays are immutably 1-based...just compute an index...
N=12; % generalize number terms...
binx=zeros(N+1,1); % preallocate for output
term=binx;
idx=0; % index variable initialize...
for n=0:N
idx=idx+1; % and increment first...
term(idx) = ...
binx(idx) = binx(idx-1) + term;
...
Of course, w/ Matlab, you could compute term() then bin becomes
bin=cumsum(term);
after the loop. This then would cause rearrangement of your output displays, so not necessarily the thing to do here; simply pointing out Matlab vectorized syntax in general...

3 Comments

Aye, i tried a method like this before, and just tried the method shown and still get this error "Subscript indices must either be real positive integers or logicals."
Your answer has clarified why this approach isn't ideal though!
I will try a different method for plotting!
Woops...forgot to special-case the first instance of idx-1; better route would be to compute the first value prior to entering the loop, the run the loop from 1:N, and initializing idx=1 instead of 0.

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 20 Nov 2016

Commented:

dpb
on 20 Nov 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!