对于一项经济任务,我需要使用来自美联储网站的季度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列导入数据,因此我的整个代码都无法工作!
如果有任何关于如何调试或如何做得更好的建议,我将不胜感激!
发布于 2012-01-17 14:02:40
如果您正在尝试获取日期,那么您可能会发现以下内容很有用。
您可以获取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发布于 2012-01-28 23:03:28
一旦您成功地存储了日期列:
ind = find( growth_data(:,2) < 0)
strfind( diff(ind)', [1 1] )https://stackoverflow.com/questions/8888394
复制相似问题