How do I use a for loop to return a vector

3 次查看(过去 30 天)
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

采纳的回答

Ben11
Ben11 2014-7-31
编辑:Ben11 2014-7-31
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 个评论
Adam Palmer
Adam Palmer 2014-7-31
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
Ben11 2014-7-31
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!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by