计算大于阈值的事件的时间间隔

时间:2015-12-03 11:57:38

标签: matlab intervals threshold

我在MATLAB中遇到困难,如果有人可以提供帮助,我将不胜感激。这是我想做的。我有一个速度场数据w.r.t.时间(见附图)。

  1. 我想计算速度值大于阈值的时间间隔(T1,T2,T3等)的数量。请注意,我想计算时间间隔,而不是速度点的数量超过阈值。

  2. 在执行步骤1之后,我想以某种方式计算持续时间的平均值(例如,T1,T2,T3等的平均值)。

  3. 最后,我想计算时间间隔T1,T2,T3等的速度数据的平均值。

  4. 如果我能完成第1步,我认为第2步和第3步应该是直截了当的。我真的很感激任何帮助。我在MATLAB中这样做,但如果需要我可以使用任何其他工具。 enter image description here

1 个答案:

答案 0 :(得分:0)

我建议使用bwconncomp

A = rand(1,100); %your 1d list of speeds
T = 0.5;

B = A > T;

tmp = bwconncomp(B); 

pxlist = tmp.PixelIdxList; %connected components are above thresh

N = zeros(1,length(pxlist));
V = zeros(1,length(pxlist));

for li = 1:length(pxlist)
    N(li) = length(pxlist{li});
    V(li) = mean(A(pxlist{li})); %avg velocity in interval li
end

avg = mean(N); %this is the avg. "time", i.e. length of connected components