MATLABで複数のパルスの立上がり時刻を効率的に求める方法

例えばオシロで測定したデータをti, Vi (i=1,2,...)として、それをplot(t,V)とすると下図のような波形だとする。

f:id:imakov:20211010213708p:plain

このような、複数の電圧パルスの各立上がり時刻を効率的に求めるには、以下の様にすると便利。

>> % t ... time of signal (1xN array)
>> % V ... signal (1xN array)
>> % Vttl ... peak of pulse (known value such as 5 V)
>> spikes = diff(V>Vttl*0.5)>0;
>> tpulse_index = find(spikes == 1);
>  tpulse = t(tpulse_index);
>> tpulse'

ans =

   -0.0240
   -0.0210
   -0.0180
   -0.0150
   -0.0120
   -0.0090
   -0.0060
   -0.0030
    0.0000
    0.0030
    0.0060
    0.0090
    0.0120
    0.0150
    0.0180
    0.0210