这是我的代码
for i= 1:length(t)
h(i)=t(i)
if % condition here??
myfunction(h)
end
end
t是一个日期数组,如:
2009-05-07
2010-05-09
2011-05-16
2012-05-21
2014-05-24
2016-05-27
2016-05-31
我想做一个if测试或者让2011年之前的日期没有进入函数的东西。
答案 0 :(得分:2)
如果您的t
采用 datetime 格式,则可以使用year
属性:
for ii = 1:length(t)
h = t(ii);
if year(h) >= 2011
myfunction(h);
end
end
您可以通过一次测试所有日期来缩短循环,这比<{1}}每个日期的if
检查更快 :
t_after2011 = t(year(t) >= 2011);
for ii = 1:length(t_after2011)
myfunction(t_after2011(ii));
end
如果是字符串的单元格数组,您可以先使用t_datetime = datetime(t);
将其转换为日期时间
答案 1 :(得分:0)
使用 datevec 将日期转换为日期向量。现在你可以从这个向量访问年份,并把你的条件。
str = {'2009-05-07'
'2010-05-09'
'2011-05-16'
'2012-05-21'
'2014-05-24'
'2016-05-27'
'2016-05-31'} ;
vec = datevec(str) ;
for i = 1:size(str,1)
if vec(i,1)>2011
disp(str{i}) ;
end
end