存储for循环的结果

时间:2012-12-10 08:21:04

标签: matlab

我有以下数据:ET = [1 3 5 7 6 4],以下是我的代码:

for i=1:3
    meanET(i)=ET(:,1+(2*i-2)); %//for i=1,extract ET column 1 data
    stdET(i)=ET(:,2+(2*i-2)); 
    totalET(i)=meanET(i)+stdET(i)
end

然而,MATLAB显示的错误表明在赋值A(I)=B中,B和I中的元素数必须相同,因此我将代码修改为:

for i=1:3
    meanET=ET(:,1+(2*i-2));%for i=1,extract ET column 1 data
    stdET=ET(:,2+(2*i-2)); 
    totalET=meanET+stdET
end

运行后一个代码后,它显示meanET=6stdET=4totalET=10,这意味着它只在工作区中存储i = 3的数据。我想得到像这样的结果 工作区中的totalET=[4 12 10],对应i = 1, 2, 3。我该怎么做?

2 个答案:

答案 0 :(得分:3)

或者您可以使用简单的矢量化解决方案:

>> totalET = ET(1:2:5) + ET(2:2:6)

totalET =
    4   12   10

答案 1 :(得分:2)

您应该在代码的开头声明目标数组:

meanET=zeros(size(ET,1),3);
stdET=zeros(size(ET,1),3);
for i=1:3
   meanET(:,i)=ET(:,1+(2*i-2));
   stdET(:,i)=ET(:,2+(2*i-2)); 
end
totalET=meanET+stdET