我编写了以下'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
值,这是最大值?
感谢。
答案 0 :(得分: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