Получить значение ближе всего к нулю из массива в MatLAB? - PullRequest
3 голосов
/ 06 апреля 2011

Интересная (и, вероятно, простая) проблема для всех вас, у меня есть два массива, и мне нужно определить реальный минимум (т.е. значение, ближайшее к нулю) и реальный максимум (то есть значение, наиболее удаленное от нуля) независимо от того,значение положительное или отрицательное.

Для этого я вычислил Positive_max и Positive_min, а также негативные_макс и отрицательные_мин, как показано ниже ...

test = [3, 4, -2, -7, 6];

positive_min = min(test(test>=0)); %Should be 3
positive_max = max(test(test>=0)); %Should be 6

negative_max = min(test(test<=0)); %Should be -7
negative_min = max(test(test<=0)); %Should be -2

ПроблемаТеперь мне нужно сравнить Positive_min с негативным_мином, чтобы увидеть, какой из них ближе всего к нулю, а также сравнить положительный_макс с отрицательным_максом, чтобы определить, который находится дальше всего от нуля.Кажется, я не могу понять, как это сделать ...

Буду признателен за любую помощь!

Ответы [ 2 ]

9 голосов
/ 06 апреля 2011

Вы можете попробовать использовать функцию abs

min(abs(test))

дает 2 и

max(abs(test))

дает 7. Если вы хотите найти фактическое значение со знаком каждого из них, вы можете использовать второй параметр вывода из min и max :

[~, inx] = min(abs(test));
test(inx)

ans =

    -2


[~, inx] = max(abs(test));
test(inx)

ans =

    -7
0 голосов
/ 05 декабря 2013

Matlab уже принимает абсолютное значение для max () или min () для комплексных чисел.Так что еще один быстрый способ сделать это будет min(test+1i)-1i или max(test+1i)-1i

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...