2013-05-08 71 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