Нахождение последовательных отрицательных ценностей - PullRequest
3 голосов
/ 17 января 2012

Для экономического задания мне нужно использовать данные ежеквартальных данных о темпах роста ВВП с веб-сайта ФРС и выяснить, сколько технических спадов произошло с 1952-2010 гг.

Это означает, что мне нужно посчитать количество последовательностей, которые имеют 3 или более последовательных отрицательных темпа роста.

Это код, который у меня есть:

Data = xlsread('Q3.xls','D14:E271');

matlab_dates = Data(:,1)
real_GDP_growth = Data(:,2);

growth_data = [matlab_dates real_GDP_growth];

T = length(growth_data);
recession_tracker = zeros(T,1);


for i=2:T
    if growth_data(i,2) < 0
        recession_tracker(i,1) = recession_tracker(i-1,1) + 1;
    else recession_tracker(i,1) = 0;
    end
end

Итак, Q3.xls содержит 2 столбца (D и E). Столбец D - это столбец даты (квартальные даты отформатированы как гггг-мм-дд, например, 1952-01-01, 1952-04-01); Столбец E - это столбец скорости роста.

Matlab отказывается импортировать данные из столбца Date, и, следовательно, весь мой код не работает!

Буду признателен за любые предложения о том, как отлаживать или как сделать это лучше!

Ответы [ 2 ]

1 голос
/ 28 января 2012

Как только вам удалось сохранить столбец даты:

ind = find( growth_data(:,2) < 0)

strfind( diff(ind)', [1 1] )
  1. получить индексы отрицательных значений
  2. посмотрите, можете ли вы найти 3 возрастающих индекса (diff = 1) -> ответ: индексы всех дат начала рецессии
1 голос
/ 17 января 2012

Если вы пытаетесь узнать даты, то вам может пригодиться следующее.

Вы можете получить отформатированные даты, захватив второй вывод xlsread (), а затем отформатировав с помощью datenum ().

[M,txt] = xlsread('Q3.xls','D14:E271');

for row = 1:size(txt, 1)
    try
        % assuming date in the first column
        date = datenum( txt{row, 1}, 'yyyy-mm-dd');
    catch
        continue;
    end

    ... do something with date ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...