2013-04-04 3 views
-4

я написал следующее «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, что является максимальным значением?

Спасибо.

+1

Почему бы не использовать встроенную функцию 'max()'? –

+2

Вы используете 'm' как количество строк, так и для максимального элемента - это ** не ** хорошая практика. – Shai

+0

Кроме того, [лучше не использовать 'i' и' j' как имена переменных в matlab] (http://stackoverflow.com/questions/14790740/using-i-and-j-as-variables-in- MATLAB). – Shai

ответ

6

Чтобы найти максимальное значение в массиве, рекомендуется использовать встроенную функцию 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