假设我有一个数组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
的元素。
答案 0 :(得分:1)
试试这个
isequal(sort(A(S)),A(S)) % or isequal(sort(A(S==1)),A(S==1))
或者S
不是逻辑矩阵,即可以包含1
和0
以外的值
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