在MATLAB中计算每个时间间隔的条目数
我想计算每个时间间隔的条目数 源数据集nx2在MATLAB中计算每个时间间隔的条目数,matlab,group-by,dataset,time-series,Matlab,Group By,Dataset,Time Series,我想计算每个时间间隔的条目数 源数据集nx2 2001-03-23 05:01:33.347,55 2001-03-23 05:01:33.603,62 2001-03-23 05:01:33.977,32 2001-03-23 05:01:34.126,30 ... 按秒分组计数的输出示例: 2001-03-23 05:01:33.000,3 2001-03-23 05:01:34.000,1 ... 这里有一个方法: % dataset data = { '2001-03-23 05
2001-03-23 05:01:33.347,55
2001-03-23 05:01:33.603,62
2001-03-23 05:01:33.977,32
2001-03-23 05:01:34.126,30
...
按秒分组计数的输出示例:
2001-03-23 05:01:33.000,3
2001-03-23 05:01:34.000,1
...
这里有一个方法:
% dataset
data = {
'2001-03-23 05:01:33.347', 55 ;
'2001-03-23 05:01:33.603', 62 ;
'2001-03-23 05:01:33.977', 32 ;
'2001-03-23 05:01:34.126', 30 ;
};
% convert to serial date (ignoring the seconds fraction part)
dt = datenum(data(:,1), 'yyyy-mm-dd HH:MM:SS');
% convert to group indices
[dt,~,ind] = unique(dt);
% count occurences per group
counts = accumarray(ind, cell2mat(data(:,2)), [], @numel);
% construct resulting dataset
X = [cellstr(datestr(dt, 'yyyy-mm-dd HH:MM:SS.FFF')) num2cell(counts)];
结果是:
>> X
X =
'2001-03-23 05:01:33.000' [3]
'2001-03-23 05:01:34.000' [1]
我们不必转换为序列日期号,我们还可以执行以下操作:
% treat column as a char matrix
dt = char(data(:,1));
dt = dt(:,1:end-4); % remove fractions of seconds
% unique entries
[dt,~,ind] = unique(dt, 'rows');
% counting
counts = accumarray(ind, cell2mat(data(:,2)), [], @numel);
% result
X = [cellstr(strcat(dt,'.000')) num2cell(counts)];
这里有一个方法:
% dataset
data = {
'2001-03-23 05:01:33.347', 55 ;
'2001-03-23 05:01:33.603', 62 ;
'2001-03-23 05:01:33.977', 32 ;
'2001-03-23 05:01:34.126', 30 ;
};
% convert to serial date (ignoring the seconds fraction part)
dt = datenum(data(:,1), 'yyyy-mm-dd HH:MM:SS');
% convert to group indices
[dt,~,ind] = unique(dt);
% count occurences per group
counts = accumarray(ind, cell2mat(data(:,2)), [], @numel);
% construct resulting dataset
X = [cellstr(datestr(dt, 'yyyy-mm-dd HH:MM:SS.FFF')) num2cell(counts)];
结果是:
>> X
X =
'2001-03-23 05:01:33.000' [3]
'2001-03-23 05:01:34.000' [1]
我们不必转换为序列日期号,我们还可以执行以下操作:
% treat column as a char matrix
dt = char(data(:,1));
dt = dt(:,1:end-4); % remove fractions of seconds
% unique entries
[dt,~,ind] = unique(dt, 'rows');
% counting
counts = accumarray(ind, cell2mat(data(:,2)), [], @numel);
% result
X = [cellstr(strcat(dt,'.000')) num2cell(counts)];
请编辑您的问题以添加您迄今为止尝试过的内容。我们可以帮助您解决编程问题,但我们无法完成您的家庭作业。请编辑您的问题以添加您迄今为止尝试过的内容。我们可以帮助您解决编程问题,但我们不能做您的家庭作业。您好,Amro,请您提出以下问题@user1724168:看一看,我发布了一个解决方案(对上面的一个修改)。您好,Amro,请您提出以下问题@user1724168:看一看,我发布了一个解决方案(对上面的一个修改).