Выньте значения даты между двумя датами из матричной переменной, Matlab

Я пытаюсь вытащить два разных года из таблицы дат.

% 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 

Приветствуются любые идеи, заранее спасибо!


person Wizhi    schedule 06.03.2015    source источник
comment
Как 1 и 0 определяются в вашем тестовом векторе?   -  person madbitloman    schedule 06.03.2015
comment
если вы, например, используете команду Datez(xjcr,1) >= 2004, она даст вам вектор из 1 и 0. Вы просто называете этот новый вектор, поэтому test = Datez(xjcr,1) >= 2004   -  person Wizhi    schedule 06.03.2015


Ответы (1)


Ваша проблема заключается в том, что вы не хотите независимо фильтровать два элемента: годы старше 2001 года и месяцы больше ноября. Это даст вам декабрь 2001 года, но не январь 2002 года. Решение, которое я считаю, состоит в том, чтобы рассматривать ваши два составных числа как одно число, чтобы оператор сравнения мог работать с ними как с парой. Вот простой способ:

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

Возможно, умножение на 12 и добавление (месяц - 1) было бы лучше в зависимости от того, создаете ли вы что-то, что должно быть очень надежным, или если вы просто что-то ломаете вместе.

person TallBrian    schedule 06.03.2015
comment
@tallblo Спасибо за идею, очень признательна!!, объединить их, похоже, это трюк. Очень хорошо работает!! Я не могу сделать это лучше себя. Я понимаю умножение на 12, но не понимаю, зачем прибавлять (месяц - 1). Еще раз спасибо за ваше время! - person Wizhi; 06.03.2015