如何知道向量中是否连续增加了五个值

时间:2014-11-19 00:04:09

标签: 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  

1 个答案:

答案 0 :(得分:4)

使用diff计算更改,convn=5个连续值的窗口上累积:

n = 5;
result = any(conv(double(diff(A)>0), ones(1,n), 'valid')==n);

如果符合条件,变量result将为1true),否则为0false)。

您可能希望将>替换为>=

如果您需要知道每次n次连续正面更改的起始索引,请使用find代替any

starts = find(conv(double(diff(A)>0), ones(1,n), 'valid')==n);