2015-03-06 2 views
0

Я пытаюсь вывести два отдельных года из таблицы дат.Вывести значения даты между двумя датами из матричной переменной, 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 

Любые идеи очень ценятся, спасибо заранее!

+0

Как 1 и 0 определены в тестовом векторе? – madbitloman

+0

, если вы, например, используете команду 'Datez (xjcr, 1)> = 2004', он даст вам вектор 1 и 0. Вы просто назовите этот новый вектор, так что ' test = Datez (xjcr, 1)> = 2004' – Wiz

ответ

0

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

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

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

+0

@tallblo Спасибо за эту идею, очень ценю !!, объединить их, кажется, трюк. Работает очень хорошо !! Не могу сделать это лучше. Я понимаю умножение 12, но я не понимаю, зачем добавлять (месяц - 1). Еще раз спасибо за ваше время! – Wiz

Смежные вопросы