# How do I use a for loop to return a vector

15 views (last 30 days)
Adam Palmer on 31 Jul 2014
Commented: Ben11 on 31 Jul 2014
Hey everyone, I've been using matlab for about a month, so this might be a pretty simple question.
I have a vector x=[-3.5 -5 6.2 11 0 8.1 -9 0 3 -1 3 2.5], and I want to make two other vectors from it using a for loop. The first contains the positive elements of x, and the second contains the negative elements of x. I can get it to return individual elements, but not vectors. Your help is greatly appreciated, I've been trying to figure this out for a couple hours.
Heres my code
x=[-3.5 -5 6.2 11 0 8.1 -9 0 3 -1 3 2.5];
n=length(x);
for k=1:n
if x(k)>0
P=x(k)
elseif
x(k)<0
N=x(k)
end
end
##### 0 CommentsShow -2 older commentsHide -2 older comments

Sign in to comment.

### Accepted Answer

Ben11 on 31 Jul 2014
Edited: Ben11 on 31 Jul 2014
Hi Adam,
you actually don't need a loop:
P = x(x > 0);
N = x(x < 0);
P =
6.2000 11.0000 8.1000 3.0000 3.0000 2.5000
N =
-3.5000 -5.0000 -9.0000 -1.0000
If you want to use a loop, you need to assign an index to P and N, otherwise the loop will erase the current value at every iteration. Here's an example;
P = zeros(1,length(x)); % Initialize a vector P of length equal to that of x. After the loop we get rid of the 0 values.
N = P; same thing for N.
for k=1:length(x)
if x(k)>0
P(k) =x(k);
elseif x(k)<0
N(k)=x(k);
end
end
P(P==0) = []; % Remove values equal to 0
N(N==0) = [];
##### 3 CommentsShow 1 older commentHide 1 older comment
Adam Palmer on 31 Jul 2014
Hey It worked!! So what you're doing with the p is creating a vector to store the positive values, and same with N?
Thanks so much Ben11!
Ben11 on 31 Jul 2014
Yep. Since normally you would not know beforehand how many values there would be in P and N, it is good practice to initialize the vector with a size large enough to store more values. Anyhow, at each loop iteration you add the current value of x in either P or N depending on its value. Glad to help!

Sign in to comment.

### 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!