标签: arrays matlab
我有一个向量,我需要知道是否有任何五个连续数字值增加(排序)。我找到了一个解决方案,但我确信还有另一个解决方案会更有效率。有什么帮助吗?
我的代码:
A = [10 4 1 2 3 4 1 2]; for i =1 :length(A)-5 temp = A(i:i+5); sor(i) = issorted(temp); end
答案 0 :(得分:4)
使用diff计算更改,conv在n=5个连续值的窗口上累积:
diff
conv
n=5
n = 5; result = any(conv(double(diff(A)>0), ones(1,n), 'valid')==n);
如果符合条件,变量result将为1(true),否则为0(false)。
result
1
true
0
false
您可能希望将>替换为>=。
>
>=
如果您需要知道每次n次连续正面更改的起始索引,请使用find代替any:
n
find
any
starts = find(conv(double(diff(A)>0), ones(1,n), 'valid')==n);