从矩阵变量中取出两个日期之间的日期值,Matlab

Take out date values between two dates from matrix variable, Matlab

我试图从日期 table 中取出两个不同的年份。

% Date table
Datez = [2001 2;2001 5;2001 9;2001 11;2002 3;2002 5;2002 7;2002 9;2002 11;...
2003 2;2003 4;2003 6;2003 8;2003 10;2003 12;2004 3;2004 5;2004 7;...
2004 9;2004 11; 2005 10;2005 12]

我想取出所有值作为 1 或 0。我想要从 2001-11 到 2002-11 的日期 加上 从 2004-11 到 2005-11 的所有值. 总的来说,我应该得到一个新的向量,叫做 test:

test = [0;0;0;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;1;1;0] % final result

我尝试了这些组合,但我不知道如何将这四个语句组合成一个类似“test”的向量,或者是否有更好的解决方案?

xjcr = 1:length(Datez)
(Datez(xjcr,1) >= 2001 & Datez(xjcr,2) >= 11) % greater than 2001-11 
(Datez(xjcr,1) <= 2002 & Datez(xjcr,2) <= 11) % smaller than 2002-11 

(Datez(xjcr,1) >= 2004 & Datez(xjcr,2) >= 11) % greater than 2004-11 
(Datez(xjcr,1) <= 2005 & Datez(xjcr,2) <= 11) % smaller than 2005-11 

非常感谢任何想法,提前致谢!

您的问题是您不想独立过滤两个项目,即大于 2001 年的年份和大于 11 月的月份。这将为您提供 2001 年 12 月而不是 2002 年 1 月。我认为解决方案是将您的两个合数视为一个数字,以便比较运算符可以对它们进行运算。这是一个简单的方法:

Datez2 = Datez(:,1)*100 + Datez(:,2);
test = (Datez2>=200111 & Datez2<=200211) | (Datez2>=200411 & Datez2<=200511)

也许乘以 12 并加上 (month - 1) 会是最好的,这取决于你是在构建需要非常健壮的东西还是只是一起破解一些东西。