MATLAB日期时间

0 matlab datetime

我在MATLAB中有一个日期时间列矩阵,我希望将其拆分为不同的年份,并将每年分配给一个变量.即如果,

    Rows 1 to 5000 = 2015,

    Rows 5000 to 10000 = 2016,

    Rows 10001 to 16000 = 2017.
Run Code Online (Sandbox Code Playgroud)

有人可以帮我一些代码来做这个,所以我不必手动完成.

谢谢.

hou*_*anb 5

您可以尝试执行以下操作.在这里,载体unique_years包含在你的岁月datetime载体newdatemat是一个单元阵列与一排,每组给定年份相关联的日期.

%// Sample data
datemat=[datetime(2015,5,3);...
         datetime(2015,3,5);...
         datetime(2016,4,2);...
         datetime(2014,1,1);...
         datetime(2014,3,2);...
         datetime(2017,3,3)];

%// Get the unique years from the date vector
unique_years = unique(year(datemat));

%// create a cell array newdatemat that contains
%// the datenums from datemat grouped by year
newdatemat=cell(length(unique_years), 1);
for ii=1:length(unique_years)
    newdatemat{ii} = datemat(year(datemat) == unique_years(ii));
end
Run Code Online (Sandbox Code Playgroud)

根据@Adriaan的建议,下面提供了上述代码的类似版本:

mydatevec = datevec(datemat);
unique_years = unique(mydatevec(:,1));
newdatemat1=cell(length(unique_years), 1);
for ii=1:length(unique_years)
    newdatemat1{ii} = mydatevec(mydatevec(:,1) == unique_years(ii),:);
end
Run Code Online (Sandbox Code Playgroud)