次の例から:
x = 1 + (10-1)*rand(1,100);
x(12:22) = 20 + (30-20)*rand(1,11);
x(70:94) = 20 + (30-20)*rand(1,25);
ここで私はいくつかのことを試みています。最初に、20 を超える最初の値の行番号を見つけようとしています。ここで、20 を超える連続する値の数は 24 を超えています。したがって、この例では、行番号 70 を返したいと思います。
私はこれを行うことができます:
y = x > 20;
k = [strfind([~y(1),y],[0 1]);strfind([y,~y(end)],[1 0])];
idx = k(1,diff(k) + 1 > 24);
ただし、最初の値のセット (20 を超える連続する値が 24 個を超えていない) も nan に置き換えたいと思います。どうすればこれを達成できますか?