对于经济学分配,我需要使用美联储网站季度GDP增长率数据中的数据,并计算出从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是日期列(季度日期格式为yyyy-mm-dd,例如1952-01-01,1952-04-01); E栏是增长率栏。
Matlab拒绝从Date列导入数据,因此我的整个代码都不起作用!
我很感激有关如何调试或如何做得更好的任何建议!
答案 0 :(得分:1)
如果您想要了解日期,那么您可能会发现以下内容非常有用。
您可以通过抓取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
答案 1 :(得分:1)
一旦您设法存储了日期列:
ind = find( growth_data(:,2) < 0)
strfind( diff(ind)', [1 1] )