data_2
是一个单元格,其中第一列包含date
,第二列包含time
。每当在时间戳下检测到对象时,该对象的身份以及错误将添加到下一行。 (此数据来自玩具车的录像)。
我想做的是添加与每个时间戳相对应的递增索引号。在所示的示例代码中,我将索引添加到第一列。我编写了一个示例代码来执行此操作。当我执行此操作时,还会在单个时间戳下添加递增索引以进行检测。
例如:如果您查看row 5
,将有两个检测结果,并且将标识添加到第6行和第7行。但是那里的帧号是不一样的。它应该与时间戳相同,即5
。解决该问题的任何帮助将不胜感激。
data_2 = {'2018-03-11','15:28:30';'2018-03-11','15:28:32';'2018-03-11','15:28:34';'2018-03-11','15:28:36';'2018-03-11','15:28:38';'27','0';'29','1';'2018-03-11','15:28:40';'2018-03-11','15:28:42';'2018-03-11','15:28:44';'89','2'};
frame_num_2 = strsplit(num2str(1:size(contains(data_2(:,1),'-'))))';
data_2 = [frame_num_2 data_2];
答案 0 :(得分:2)
如果我正确理解了您的问题,则只希望帧号在出现新的日期或时间时才增加一,而不是在检测到物体时才增加一。 要解决此问题,您需要检测行何时是日期或时间。查看您的数据,日期列的不同之处在于“-”的存在,而时间列的不同之处在于“:”的存在。您可以使用这两个中的一个或两个,我选择仅使用日期列。
data_date = data_2(:,1);
data_time = data_2(:,2);
%data that doesn't have a new frame contains a '-' symbol.
newFrame = contains(data_date, '-');
frame_num = cumsum(newFrame); %only increase when there is a new frame
Data = [num2cell(frame_num) data_2] %save in a new variable name
这将导致数据=
{[1]} {'2018-03-11'} {'15:28:30'}
{[2]} {'2018-03-11'} {'15:28:32'}
{[3]} {'2018-03-11'} {'15:28:34'}
{[4]} {'2018-03-11'} {'15:28:36'}
{[5]} {'2018-03-11'} {'15:28:38'}
{[5]} {'27' } {'0' }
{[5]} {'29' } {'1' }
{[6]} {'2018-03-11'} {'15:28:40'}
{[7]} {'2018-03-11'} {'15:28:42'}
{[8]} {'2018-03-11'} {'15:28:44'}
{[8]} {'89' } {'2' }