我有一个例程,它返回一个整数列表作为向量.
这些整数来自连续数字组; 例如,它可能看起来像这样:
vector = 6 7 8 12 13 14 15 26 27 28 29 30 55 56
Run Code Online (Sandbox Code Playgroud)
请注意,上面有四个"运行"数字(6-8,12-15,26-30和55-56).我想做的是将最长的 "运行"数字转发到新的向量.在这种情况下,这将是26-30运行,所以我想生产:
newVector = 26 27 28 29 30
Run Code Online (Sandbox Code Playgroud)
这个计算必须在不同的向量上执行很多次,所以我能做得越多越好!任何智慧都会被感激地收到.
H.M*_*ter 36
你可以试试这个:
v = [ 6 7 8 12 13 14 15 26 27 28 29 30 55 56];
x = [0 cumsum(diff(v)~=1)];
v(x==mode(x))
Run Code Online (Sandbox Code Playgroud)
这导致了
ans =
26 27 28 29 30
Run Code Online (Sandbox Code Playgroud)