2

次のようなマトリックスに IF ステートメントを適用しようとしています。

A =

 2     5     2     4     8
 2     5     0     0     0
 2     4     0     0     0
 6     8     0     0     0
 9     5     0     0     0
 4     7     0     0     0
 8     1     0     0     0

私がこれまでに持っているのはこれです:

if A(1,2)>A(1,4),
A(2,3)=A(1,4);
A(2,4)=(A(1,5))+1;
end


if A(1,2)<A(1,4),
A(2,4)=(A(1,4))-1;
A(2,4)=(A(1,4))-(A(2,3));
end

前述のコードでは、最初の行の 2 列目と 4 列目のみを比較しています。次に、最初の行が 2 番目の行を構成します。

次に、2 番目の行を比較し、それを使用して 3 番目の行を構築することを検討しています ... というように ... 7 行すべてで。

これを変更するために 1:n を追加できますか?

助言がありますか?

4

1 に答える 1

1

次のループを書くことができます

for i=1:size(A, 1)-1
    if A(i,2)>A(i,4),
        A(i+1,3)=A(i,4);
        A(i+1,4)=A(i,5)+1;
    end 
    if A(i,2)<A(i,4),
        A(i+1,4)=A(i,4)-1;
        % wrong index here? You assign twice to the same A entry.
        % the above line has no effect...
        A(i+1,4)=A(i,4)-A(i+1,3);
    end 
end
于 2012-09-22T19:23:08.223 に答える