仅将特定日期从数组传递到函数

时间:2017-05-30 09:53:34

标签: matlab

这是我的代码

 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年之前的日期没有进入函数的东西。

2 个答案:

答案 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