How to check monotonity of a vector?

156 ビュー (過去 30 日間)
Mr M.
Mr M. 2017 年 12 月 15 日
コメント済み: Andreas 2022 年 3 月 16 日
How to check easily that components of a vector form a monotone (increasing) sequence or not?
  1 件のコメント
Adam
Adam 2017 年 12 月 15 日
You can use
validateattributes( yourVector, { 'numeric' }, { 'vector', 'increasing' } )
if you just want to validate that it is monotonic and carry on with the code if it is while throwing an error otherwise.

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

採用された回答

Walter Roberson
Walter Roberson 2017 年 12 月 15 日
issorted() with 'ascend' (repeats permitted) or 'strictascend' (repeats not permitted)

その他の回答 (1 件)

KL
KL 2017 年 12 月 15 日
編集済み: KL 2017 年 12 月 15 日
use diff
along with all maybe
a = 1:10;
isIncreasing = all(diff(a)) %or all(diff(a)>=0) if you want to allow 0 difference
  1 件のコメント
Andreas
Andreas 2022 年 3 月 16 日
Take care, that all is also true for negative values.
Therefore, this example has a false positive on b
a = [1:10];
b = [1 2 3 2 1 5];
isIncreasingA = all(diff(a))
isIncreasingA = logical
1
isIncreasingB = all(diff(b))
isIncreasingB = logical
1
To fix that, restrict to positive values of diff
isIncreasingA = all(diff(a)>0)
isIncreasingA = logical
1
isIncreasingb = all(diff(b)>0)
isIncreasingb = logical
0

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

カテゴリ

Help Center および File ExchangeFunction Creation についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by