试图检查数组是否总是在增加

时间:2016-06-17 22:04:19

标签: arrays matlab sorting

假设我有一个数组A = [ 1 3 4 6 7 8]和另一个大小相同的数组S = [1 1 0 1 0 1]

对于整个数组长度,我需要检查A(i)+S(i)是否大于或等于A(i-1)+S(i-1)。换句话说,我会检查A + S是否单调增加。

但是,如果S(i-1)为零,那么我想将A(i)+S(i)A(i-2)+S(i-2)进行比较。

简单地说,我需要检查A+S中的所有元素是否单调增加,忽略S=0的元素。

1 个答案:

答案 0 :(得分:1)

试试这个

isequal(sort(A(S)),A(S)) % or isequal(sort(A(S==1)),A(S==1)) 

或者S不是逻辑矩阵,即可以包含10以外的值

idx = S ~= 0;
isequal(sort(A(idx)),A(idx))

Adriaan的建议应该更快,特别是在大型矩阵上

all(diff(A(S~=0)) >= 0) % or replace >= with > if you want it to be strictly increasing