storing loop function output in vector
1 view (last 30 days)
Show older comments
Ali Ajaz
on 18 Mar 2018
Commented: David Fletcher
on 18 Mar 2018
Hi, I have a single column array of some positive and negative values. I am trying to use a loop to segregate them and to store the result in a separate vector. Unable to do ot so far. can anyone help please? This is my code:
Diff=MP_25-MP_60
y=nan(117,1)
for i=Diff(1:117) if i>0 y(i) = ('Upward') else y(i) = ('Downward') end end
0 Comments
Accepted Answer
David Fletcher
on 18 Mar 2018
Edited: David Fletcher
on 18 Mar 2018
y=Diff>=0
will return a logical array of all elements in Diff that are greater than or equal to 0. You can either just use this as a marker, or if you wish index out all the positive values (and by extension also all the negative values) into separate vectors: -
positives=Diff(y)
negatives=Diff(~y)
6 Comments
More Answers (1)
Ali Ajaz
on 18 Mar 2018
3 Comments
David Fletcher
on 18 Mar 2018
You may find that because you pre-allocated y as NaN, when you add 'U' or 'D' you get their numeric codes instead of the letter.
you could pre-allocate y to a character vector instead
y=repmat('U',117,1)
David Fletcher
on 18 Mar 2018
Actually, if you pre-allocate y to 'D' you can lose the else clause in the condition block (since the array is already set to 'D')
y=repmat('D',117,1)
for iter=1:length(Diff)
if (Diff(iter)>=0)
y(iter)='U'
end
end
See Also
Categories
Find more on Loops and Conditional Statements 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!
