您可以使用datenum将日期转换为序列日期编号(1 在 01/01/0000、2 在 02/01/0000、367 在 01/01/0001 等):
strDate='27112011';
numDate = datenum(strDate,'ddmmyyyy')
然后可以对这些日期数字执行任何算术运算,例如取平均值或中位数:
mean(numDates)
median(numDates)
这里唯一的问题是,您的日期不是字符串类型,而是数字。幸运的是 datenum 也接受数字输入,但您必须将日、月和年分隔在一个向量中:
numDate = datenum([year month day])
或者如果您有多个时间戳,则作为矩阵中的行。
因此,对于您指定的示例数据:
dates=[32381 41081 40581 32381 32981 41081 40981 40581];
years = mod(dates,100);
dates = (dates-years)./100;
days = mod(dates,100);
months = (dates-days)./100;
years = years + 1900; % set the years to the 20th century
numDates = datenum([years(:) months(:) days(:)]);
fprintf('The mean date is %s\n', datestr(mean(numDates)));
fprintf('The median date is %s\n', datestr(median(numDates)));
在此示例中,我使用datestr将生成的平均值和中位数转换回可读的日期格式,该格式将日期序列号作为输入。