2015-05-10 111 views
0

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

我会很感激我在这里失去的任何提示。

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

回答

1

你忘了在RES迭代变量来存储结果。它的方式是覆盖每次迭代后分配的值。你应该尝试:

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

您还可以通过使用bsxfun矢量化你的方法:

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

完美的作品:-)。感谢您帮助菜鸟! – Carolin