-5

maximum配列で値を返すはずの次の「matlab」コードを作成しました。

function m = maxi(a)
maximum = a(1,1);
[m,n]=size(a);
for i=1:m
    for j=1:n
        if a(i,j)>=maximum
            maximum = a(i,j)
        else
            maximum = maximum;
        end
    end
end
m = maximum;
end

ここでのケースは、返された結果が各反復の最大数であるように見えることです。one最大値である値のみを返すにはどうすればよいですか?

ありがとう。

4

1 に答える 1

7

配列内の最大値を見つけるには、組み込み関数を使用することをお勧めしますmaxmaxデフォルトでは、配列の最初の次元に沿って動作することに注意してください。したがって、全体の最大値を見つけるには、配列をベクトルとして渡すことができます。

overallMax = max(array(:));

実際、パフォーマンスが重要な場合は、ビルトインを再実装することはお勧めしません。ただし、教育目的では、コードをリバース エンジニアリングすると便利な場合があります。

あなたの関数は私にとっては問題なく動作しますが、線形インデックスを反復処理することをお勧めします (上記の配列をベクトルに変換する方法と同様)。このようにして、任意の次元の配列に対して機能します。

function mx = maxi(a)
  mx = a(1);
  for ii = 1:numel(a)
      if a(ii) > mx
         mx = a(ii);
      end
  end
于 2013-04-04T14:14:36.647 に答える