1

これを行う方法を見つけるのに助けが必要ですが、それはかなり単純なはずです。nx1配列があるとしましょう。たとえば、みましょうX=[1 1 1 .5 .4 .2 -.2 -.3 1 1 0 1]。私がやろうとしているのは、連続した の最大のシリーズがどこで1始まり、その中に がいくつあるかを見つける1ことです。たとえば、 を使用するXと、連続したシリーズの最大のシリーズはインデックス 1 から始まり、長さは 3 になります。また、非常に大きなデータ セットを使用するので、これが可能な最も効率的で最速の方法を見つけたいと思います。終わり。

4

2 に答える 2

2

これをかなり効率的に達成できる 1 つの方法を次に示します。

x = [1 1 1 0.5 0.4 0.2 -0.2 -0.3 1 1 0 1];
x1 = (x==1);
d = diff(x1(:).');
start = find([x1(1) d]==1)
len = find([d -x1(end)]==-1)-start+1

返す

start =

     1     9    12

len =

     3     2     1
于 2013-07-14T20:15:59.070 に答える