How to separate all negative and all positive values of a vector?

77 ビュー (過去 30 日間)
Sergey Dukman
Sergey Dukman 2015 年 9 月 23 日
Hello, I baffled by one task in Matlab, namely I need to create two vectors that contains all positive and all negative values of an initial vector. I would like to get a general answer to my question. Here is my script (unfinished): for i=1:numel(x) if x(i) > 0 & x(i)==0 P(i)=????????(all positives) end end disp('The postive vector is:')
Sergey

採用された回答

Stephen23
Stephen23 2015 年 9 月 23 日
編集済み: Stephen23 2015 年 9 月 23 日
You don't need a loop, because logical indexing is much simpler and faster:
>> X = [1,2,-3,-4,5,-6,7,-8,9];
>> idx = X<0; % create logical index
>> neg = X(idx)
neg =
-3 -4 -6 -8
>> pos = X(~idx)
pos =
1 2 5 7 9
  5 件のコメント
Walter Roberson
Walter Roberson 2023 年 3 月 20 日
Do we understand correctly that there should be 11 different outputs?
  1. element in first vector and second vector are both positive
  2. element in first vector is positive, element in second vector is zero
  3. element in first vector is positive, element in second vector is negative
  4. element in first vector is zero, element in second vector is positive
  5. element in first vector is zero, element in second vector is zero
  6. element in first vector is zero, element in second vector is negative
  7. element in first vector is negative, element in second vector is positive
  8. element in first vector is negative, element in second vector is zero
  9. element in first vector is negative, element in second vector is negative
  10. element exists in first vector but you have run out of elements in the second vector
  11. element exists in second vector but you have run out of elements in the first vector
Or should the cases where you have run out of elements in one of the vectors each be split into the negative / zero /positive, leading to a total of 15 different cases?
Brice Arthur Azangue
Brice Arthur Azangue 2023 年 6 月 17 日
Stephen23 thanks for this short line code.

サインインしてコメントする。

その他の回答 (1 件)

RAM MANOHAR
RAM MANOHAR 2019 年 7 月 23 日
I have used for , if --else loops but i have got positive and 0 in place of negative.
  2 件のコメント
Narendra Kintali
Narendra Kintali 2022 年 9 月 23 日
Hi Ram,
I even got zeros in the place of negative numbers.
How did you fix your code.

サインインしてコメントする。

カテゴリ

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