Расчет максимального расстояния между элементами вектора в MATLAB

StackOverflow https://stackoverflow.com/questions/2452705

Вопрос

Давайте предположим, что у нас есть вектор

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));

Я не знаю, это то, что вы ищете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top