У меня есть вектор координат с именем x. Я хочу получить элемент(ы) с минимальной координатой y:
a = find(x(:,2)==min(x(:,2))); % Contains indices
Это возвращает индексы элементов с наименьшими координатами y. Я говорю element*s*, потому что иногда это возвращает более 1 значения (например, (10,2) и (24,2) оба имеют 2 в качестве координаты y, и если 2 является минимальной координатой y. ..).
В любом случае, мой следующий шаг — отсортировать (по возрастанию) элементы с минимальными координатами y в соответствии с их координатами x. Сначала я делаю:
b = sort(x(a,1));
Вышеупомянутая операция может переставить элементы с минимальными координатами y, поэтому я хочу применить эту перестановку и к a. Итак, я делаю:
[v i] = ismember(b, x(:, 1));
К сожалению, если есть элементы с одинаковым значением x, но разными значениями y, и один из этих элементов оказывается членом a (т.е. b), то матрица выше выбирает его. Например, если (10,2) и (24,2) являются элементами с наименьшими координатами y и есть третий элемент (24, 13), то это испортит описанную выше операцию. Есть ли способ лучше? Я написал свой скрипт, используя циклы, и все было хорошо, но в соответствии с методологией Matlab я переписал его, и я боюсь, что мое незнание Matlab вызывает эту ошибку.