0

我正在使用包含以下格式的日期的输入文件:

1st column: year
2nd column: month
3rd column: day

因此,如果我想对 2008 年 7 月 15 日的数据做一些事情,我会执行以下操作:

[n,m] = size(INPUT);
for i=1:n
    if INPUT(i,1)==2008 && INPUT(i,2)==7 && INPUT(i,3)==15
        {...do something...}
    end
end

这适用于给定的日期,但是如何使用另一个 FOR 循环(或多个循环)进行此操作,例如从 7 月 15 日到 10 月 20 日?

4

2 回答 2

0

首先将 3 个输入值转换为日期类型,然后在日期范围的两个日期(也作为日期类型)上进行比较。

于 2013-10-24T12:16:00.600 回答
0

尝试使用像 find() 这样的 Matlab 内置函数。

在您的情况下,您可以使用单线

INPUT(find( (INPUT(:,1)<18) & (INPUT(:,1)>15) & (INPUT(:,2)==7) & (INPUT(:,3)==2008) ),:)

希望有帮助,

编辑:

抱歉 - 评论功能有一些问题 - 您可以使用第二个临时变量进行进一步检查 - 如下所示:

out = INPUT(find( (INPUT(:,3)==2008)),:) %find right year
out = out(find( (out(:,2)>=7) & (out(:,2)<=10)),:) %find right months
our = out(find( ~ ( (out(:,1)<=15) & (out(:,2)==7))) ,:) %filter day
our = out(find( ~ ( (out(:,1)>=20) & (out(:,2)==10))) ,:) %filter day

詹斯。

于 2013-10-24T12:52:51.243 回答