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