0

私は次のデータを持っています: 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=4、およびが表示totalET=10されました。これは、i=3 のデータのみがワークスペースに格納されたことを意味します。totalET=[4 12 10]に対応する、ワークスペースのような結果を取得したい i = 1, 2, 3。それ、どうやったら出来るの?

4

2 に答える 2

3

または、単純なベクトル化されたソリューションを使用することもできます。

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

totalET =
    4   12   10
于 2012-12-10T10:17:26.067 に答える
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
于 2012-12-10T08:44:26.783 に答える