Вы должны быть гораздо более четкое представление о ваших целей , Похоже, вы хотите найти локальные максимумы в векторе.
Будете ли вы всегда иметь векторы (не действительно массивы, которые обычно являются словом, обозначающим вещь с двумя несобственными измерениями), которые имеют локальный максимум, который вы хотите найти? Будете ли вы выбирать все локальные максимумы? Если это так, то это будет работать ...
A = [0 0 1 2 3 5 0 0 0 0 0 4 5 6 7 0 0 0 0 1 1 2 3 4 1];
n = numel(A);
ind = 2:(n-1);
maxLoc = ind(find((diff(ind-1) > 0) & (diff(ind) < 0)));
% in case the max occurs at an end
if A(2) < A(1)
maxLoc = [1,maxLoc];
end
if A(n) < A(n-1)
maxLoc = [maxLoc,n];
end
maxVal = A(maxLoc);
Но что о векторе
A = [0 1 2 2 1 0];
Что вы хотите увидеть сейчас?
Опять же, вам нужно придумать свои требования. Каковы ваши потребности. Какова цель?
Как только вы это сделаете, ваши проблемы будут легче решить, и кому-то легче ответить.
huh? как получить 5 7 4? – DarthVader
Я еще не знаю, как получить 5 7 4 из массива A. , но maxValue и maxLocation - это ответ, который я получил бы. –
Максимальное значение равно 7? правильно? если вы были ребенком, и вам дали 10 мячей, как бы вы нашли самый большой? – DarthVader