2015-03-21 6 views
-2

У меня проблема с максимальной функцией MATLAB. Я должен сделать это, чтобы заменить максимальное значение массива на число. Однако, когда имеется более одного максимального значения, программа обновляет их все одновременно. Есть ли способ заставить его делать это один за другим? Порядок замены не важен; это можно сделать произвольно. Главное, чтобы MATLAB делал это один за другим.MATLAB Множественные максимальные значения

Заранее спасибо.

+2

что вы имеете в виду «один на один»? Просьба представить примерные данные и код, который у вас есть. – thewaywewalk

+0

a = [5 5]; b = max (a); c = b-2; a = changem (a, c, b); disp (a) Когда этот код запущен, программа обновляет как первую, так и вторую строки вектора a. Таким образом, он печатает [3 3]. Я хочу, чтобы он печатался либо [5,3], либо [3,5]. Есть ли способ сделать это? – theakt

+2

Пожалуйста, не указывайте детали как комментарии, вместо этого отредактируйте свой вопрос, чтобы улучшить его. – mins

ответ

1

Второй выход max возвращает один индекс:

a=[5,5]; 
[b,idx]=max(a) 
c=b-2; 
a(idx)=c 
+0

Большое спасибо. Это, похоже, решает мою проблему. Однако у меня есть один быстрый вопрос. Не могли бы вы объяснить, что означает (idx) и что он делает? – theakt

+0

Он возвращает индекс одного максимума. Попробуйте более крупный пример, когда первый не является максимальным для понимания. – Daniel

0

Когда вы говорите более 1 максимального значения, я предполагаю, что вы говорите о матрице, где функция max работает с каждым столбцом?

Вы можете сделать следующее:

a = [1 1 2;5 5 7; 3 2 9] 

Очевидно, что максимальное значение будет 9, но если вы сделаете следующее:

max(a) 

Результат будет:

5 5 9 

Основано на каждом столбце.

Возможно, для вас может быть выполнено следующее:

max(a(:)) % Maximum value from a matrix (rerranged into 1 column) 

вы можете сделать то же самое для функции min.

Смежные вопросы