我有一系列数据集,每个数据集大约 1032 x 4。通过我现在拥有的程序,我可以找到某个事件发生的时间(我通过结构做到了)。我得到的输出是:
startTime: [1 84 111 251 450 482 613 660 787 951 956]
endTime: [5 90 112 252 451 485 619 661 788 952 961]
这个输出告诉我我感兴趣的事件从哪一行到哪一行发生。所以我想得到从第 1 行到第 5 行、从第 84 行到第 90 行、从 111 到 112、从 251 到 252 等的值序列。我可以通过键入time(1)
, time(5)
,来手动完成time(84)
,time(90)
所以我可以计算持续时间的事件。但是有没有办法自动做到这一点?
请帮忙 !!这听起来很容易,但它让我发疯。
提前致谢,
我到目前为止的代码是:
function DetectEvent = DetectEvent(inputData, ColumnNumbers)
%ColumnNumbers = 1 contains Time
%ColumnNumbers = 2 contains Position
%ColumnNumbers =3 contains velocity
%ColumnNumbers=4 contains accelereation
eventNow = false;
event.startTime = []; % initialise
event.endTime = []; % initialise
for i = 1: length(inputData)
if abs(inputData(i,ColumnNumbers.velocity)) == 0
if ~eventNow
eventNow = true;
thisevent.startTime = i;
end
else
if eventNow
eventNow = false;
thisevent.endTime = i - 1;
event.startTime = [event.startTime, thisevent.startTime];
event.endTime = [event.endTime, thisevent.endTime];
end
end
end