-5

我编写了以下“matlab”代码,它应该返回maximum数组中的值:

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

要查找数组中的最大值,建议使用内置函数max。请注意,max默认情况下沿数组的第一个维度进行操作;要找到整体最大值,您可能希望将数组作为向量传递:

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 回答