How do I use a for loop to return a vector

19 ビュー (過去 30 日間)
Adam Palmer
Adam Palmer 2014 年 7 月 31 日
コメント済み: Ben11 2014 年 7 月 31 日
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 Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by