0

MATLAB では、次の場合:

A = [1 2 3 4; 2 3 4 5; 4 8 9 10];
[N M] = size(A);
c = zeros(N,1);
for n=1:N;
    for m=1:M;
        c(n) = ?;
    end
end

何を交換しますか?max 関数を使用せずに A の各行の最大値を見つけますか?

4

1 に答える 1

0
A = [1 2 3 4; 2 3 4 5; 4 8 9 10];
[N M] = size(A);
c = A(:,1); % modified per Eitan's suggestion
for n=1:N;
    % c(n) = A(n,1); % commented out per Eitan's suggestion.
    for m=1:M;
        c(n) = (c(n)<A(n,m))*A(n,m) + (c(n)>=A(n,m))*c(n);
    end
end

論理ステートメントの 1 つだけが true になるため、最小値が更新されるか、同じままになります。非常にぎこちない... しかし、エイタン T のおかげで、もう余分な行は必要ありません。内部ループを 2 から開始したい場合もありますが、このコードが機能するためには必要ありません (元のコードから必要な変更を最小限に抑えます)。

この関数を使用しない理由はわかりminませんが、理由があったと思います...

于 2013-04-08T02:13:57.000 に答える