Расчет максимального расстояния между элементами вектора в MATLAB
-
20-09-2019 - |
Вопрос
Давайте предположим, что у нас есть вектор
x = -1:0.05:1;
ids = randperm(length(x));
x = x(ids(1:20));
Я хотел бы рассчитать максимальное расстояние между элементами x
каким -то идиоматическим образом. Было бы легко просто перечислить по всем возможным комбинациям x
Элементы, но я чувствую, что может быть способ сделать это со встроенными функциями Matlab каким-то сумасшедшим, но идиоматическим образом.
Решение
Как насчет
max_dist = max(x) - min(x)
?
Другие советы
Вы имеете в виду разницу между самыми большими и наименьшими элементами в вашем векторе? Если вы это сделаете, то будет что -то подобное:
max(x) - min(x)
Если вы этого не сделаете, то я неправильно понял вопрос.
Это интервальное расстояние расстояния, хотя и простое, так как вы работаете в одном измерении. На самом деле эта точка, которая падает на максимальное расстояние в одном измерении, всегда является одной из двух возможных точек. Таким образом, все, что вам нужно сделать, это получить минимальное значение и максимальное значение из списка и посмотреть, что дальше от этой точки. Так что предполагая, что цифры в X являются реальными числами, это будет работать:
xmin = min(x);
xmax = max(x);
maxdistance = max(x - xmin,xmax - x);
В качестве альтернативы, некоторое время назад я поместил общий инструмент расстояния расстояния на обмен файлами. (IPDM). Анкет Это достаточно умно, чтобы особые простые проблемы, такие как самая дальняя проблема с 1-D. Этот звонок сделает это для вас:
D = ipdm(x,'subset','farthest','result','struct');
Конечно, это не будет таким эффективным, как простой код, который я написал выше, так как это полностью общий инструмент.
Эээ ... хотел бы иметь матлаб в моих руках, и это еще рано утром, но как насчет чего -то вроде:
max_dist = max(x(2:end) - x(1:end-1));
Я не знаю, это то, что вы ищете.