2013-05-08 35 views
0

我有一系列的数据集的每一个约1032 X 4.随着节目我现在我能找到在哪个特定的事件正在发生的时间(我这样做,虽然结构)。和输出我得到的是:提取数据Matlab的

startTime: [1 84 111 251 450 482 613 660 787 951 956] 
endTime: [5 90 112 252 451 485 619 661 788 952 961] 

这个输出告诉我从中行到这个事件,我感兴趣的是发生哪一行。因此,我希望手动键入time(1)time(5)time(84)得到从第1行的值的序列到行5,从行84至90,从111到112,从251至252,等等。我能做到这一点,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 
+0

您可以发布您的代码到目前为止(或至少它的相关部分) – am304 2013-05-08 12:41:05

+0

'时间(结束时间) - ?时间(开始时间)' – Dan 2013-05-08 13:49:38

回答

0

您可以使用startTimeendTime作为指数与colon operator(:)相结合。

例如,为了获得记录在我的事件(例如,开始在startTime(i)endTime(i)你可以使用结束(假设你的1032x4矩阵称为data):

events=data(startTime(i):endTime(i),:); 

这将放置到events所有行从startTime(i)endTime(i)data矩阵

+0

任何行吟诗人? R的想法?我不知道我做错了什么,但它对我不起作用...... – Flowers 2013-05-08 14:37:31