首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找连续的负值

查找连续的负值
EN

Stack Overflow用户
提问于 2012-01-17 08:51:34
回答 2查看 903关注 0票数 3

对于一项经济任务,我需要使用来自美联储网站的季度GDP增长率数据,并计算出1952-2010年间发生了多少次技术性衰退。

这意味着我需要计算具有3个或更多连续负增长率的序列的数量。

这是我到目前为止所拥有的代码:

代码语言:javascript
复制
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列导入数据,因此我的整个代码都无法工作!

如果有任何关于如何调试或如何做得更好的建议,我将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2012-01-17 14:02:40

如果您正在尝试获取日期,那么您可能会发现以下内容很有用。

您可以获取xlsread()的第二个输出,然后使用datenum()取消格式化,从而获得格式化的日期。

代码语言:javascript
复制
[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
EN

Stack Overflow用户

发布于 2012-01-28 23:03:28

一旦您成功地存储了日期列:

代码语言:javascript
复制
ind = find( growth_data(:,2) < 0)

strfind( diff(ind)', [1 1] )

  1. 获取负值的指数
  2. 看看是否能找到3个递增指数(diff = 1) ->答案:衰退开始的所有日期的指数
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8888394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档