首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从矩阵变量中提取两个日期之间的日期值,Matlab

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

Stack Overflow用户
提问于 2015-03-06 00:39:10
回答 1查看 119关注 0票数 0

我正试着从一张日期表中抽出两年时间。

代码语言:javascript
复制
% 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

代码语言:javascript
复制
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“的向量,或者是否有更好的解决方案?

代码语言:javascript
复制
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 

任何想法都是非常感谢的,谢谢提前!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-06 02:32:35

您的问题是,您不想独立地过滤两个项目,比2001年多年,比11月多几个月。这将给你2001年12月,但不是2002年1月。我相信的解决方案是把你的两个数字组合成一个数字,这样比较运算符就可以把它们当作对来操作。下面是一个简单的方法:

代码语言:javascript
复制
Datez2 = Datez(:,1)*100 + Datez(:,2);
test = (Datez2>=200111 & Datez2<=200211) | (Datez2>=200411 & Datez2<=200511)

也许乘以12并加上(月份- 1)将是最好的,取决于你是在构建一些需要非常健壮的东西,或者你只是在拼凑一些东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28890488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档