Sim*_*ity -5 arrays matlab max
我编写了以下'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
Run Code Online (Sandbox Code Playgroud)
这里的情况是返回的结果似乎是每次迭代中的最大数.我怎样才能只返回one值,这是最大值?
谢谢.
要查找数组中的最大值,建议使用内置函数max.请注意,max默认情况下沿数组的第一维操作; 要查找总体最大值,您可能因此希望将数组作为向量传递:
overallMax = max(array(:));
Run Code Online (Sandbox Code Playgroud)
实际上,如果性能非常重要,不建议重新实现内置插件.但是,出于教育目的,逆向工程代码可能很有用.
你的函数运行正常,但我建议你迭代线性索引(类似于你将数组转换为上面的向量).这样它就可以用于任意维度的数组.
function mx = maxi(a)
mx = a(1);
for ii = 1:numel(a)
if a(ii) > mx
mx = a(ii);
end
end
Run Code Online (Sandbox Code Playgroud)