存储 for 循环的结果



我有以下数据: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 。我该怎么做?

或者

你可以选择一个简单的矢量化解决方案:

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

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

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

最新更新