对于循环计算,Matlab不起作用

时间:2015-05-10 15:03:27

标签: matlab for-loop

我正在尝试计算19个时间序列变量的残差(res)。我期望一个(nIndices,:)矩阵作为计算的结果。 如果应用于1个单独的时间序列,则res计算可以完美地工作,但是如果我尝试使用所有时间序列的循环来计算它,则它不起作用。它只计算第一次系列的res(因此我得到1,:矩阵而不是nIndices,:)。 (nIndices函数正确计算了19个时间序列,并且之前多次应用于同一个编辑器文件中)。

我很感激任何关于我在这里失踪的提示。

for i=1:nIndices  
    res = returns(:,i)-mean(returns(:,i));
end

1 个答案:

答案 0 :(得分:1)

您忘记迭代 res 变量来存储结果。它的方式是,它覆盖每次迭代后分配的值。你应该试试:

for i=1:nIndices
    res(:,i)=returns(:,i)-mean(returns(:,i));
end

您还可以使用 bsxfun 对您的方法进行矢量化:

res = bsxfun(@minus,returns,mean(returns,1));