-2

次のmatlab関数があります。マトリックス内の列数の最大値を見つけます。

function m = maximum(u)
[row col] = size(u);

for i=1:col
    m(i) = max(u(:,i))
end
end

関数が平均値を見つけるために matlab で使用されていることは知っていますが、関数meanでどのように使用できますか?

ありがとう。

4

1 に答える 1

1

と の両方が、はるかに使いやすいベクトル化された形式を持っていますmeanmax

col_max  = max(u,[],1);  % max of matrix along 1st dimension (max of column)
col_mean = mean(u,1);    % mean of matrix along 1st dimension (mean of column)

ちなみに、std他の多くの関数にも同様の自動ベクトル化があります。

col_std = std(u,0,1);    % standard deviation, normalized by N-1
                         % , of first dimension (column s.d.)

一般に、Matlab の組み込みのベクトル化されたバージョンを使用する方が簡単です。エラーが発生しにくく、このような単純な操作のパフォーマンスが向上することがよくあります。ただし、これをループとして書きたい場合は、次のようにします。

function m = column_mean(u)
[row col] = size(u);

for i=1:col
    m(i) = mean(u(:,i));   % <--- replaced max with mean
end
end
于 2013-04-20T15:16:06.077 に答える