How do I use a for loop to return a vector
20 views (last 30 days)
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];
Ben11 on 31 Jul 2014
Edited: Ben11 on 31 Jul 2014
you actually don't need a loop:
P = x(x > 0);
N = x(x < 0);
6.2000 11.0000 8.1000 3.0000 3.0000 2.5000
-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.
P(P==0) = ; % Remove values equal to 0
N(N==0) = ;