Matlab 从某些行提取数据
我有一系列的数据集,每一个大约1032x4。通过我现在的节目,我可以找到某个事件发生的时间(虽然我是这样做的)。我得到的结果是:Matlab 从某些行提取数据,matlab,extract,rows,Matlab,Extract,Rows,我有一系列的数据集,每一个大约1032x4。通过我现在的节目,我可以找到某个事件发生的时间(虽然我是这样做的)。我得到的结果是: 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的值序列,等等。
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
您可以使用
startTime
和endTime
作为与冒号运算符组合的索引(:)
例如,要获取在i处记录的事件(例如,从开始时间(i)
到结束时间(i)
),您可以使用(假设您的1032x4矩阵被称为数据
):
这将把数据矩阵中从开始时间(i)
到结束时间(i)
的所有行放入事件中。到目前为止你能发布你的代码吗(或至少是它的相关部分)?时间(结束时间)-时间(开始时间)
?还有其他想法吗?我不知道我做错了什么,但它对我不起作用。。。
events=data(startTime(i):endTime(i),:);