在MATLAB中计算向量元素之间的最大距离

时间:2010-03-16 07:31:43

标签: matlab permutation distance max

我们假设我们有一个像

这样的向量
x = -1:0.05:1;
ids = randperm(length(x));
x = x(ids(1:20));

我想以某种惯用的方式计算x元素之间的最大距离。迭代x元素的所有可能组合会很容易,但我觉得有一种方法可以用一些疯狂但惯用的方式用MATLAB的内置函数来实现它。

4 个答案:

答案 0 :(得分:7)

怎么样?
max_dist = max(x) - min(x)

答案 1 :(得分:2)

你的意思是矢量中最大和最小元素之间的差异?如果你这样做,那么这样的事情就可以了:

max(x) - min(x)

如果你不这样做,那我就误解了这个问题。

答案 2 :(得分:2)

这是一个点间距离计算,虽然很简单,因为你在一个维度上工作。实际上,在一个维度上落在最大距离处的点始终是两个可能点之一。所以你需要做的就是从列表中获取最小值和最大值,并查看哪个距离相关点更远。因此,假设x中的数字是实数,这将起作用:

xmin = min(x);
xmax = max(x);
maxdistance = max(x - xmin,xmax - x);

作为替代方案,前段时间我在文件交换(IPDM)上放置了一般的点间距离计算工具。对于像1维最远点问题这样的特殊情况简单问题,它足够聪明。这个电话会为你做这件事:

D = ipdm(x,'subset','farthest','result','struct');

当然,它不如我上面编写的简单代码那么高效,因为它是一个完全通用的工具。

答案 3 :(得分:1)

呃......我很想在我手上拿一个MATLAB,但仍然很早,但是这样的事情呢:

max_dist = max(x(2:end) - x(1:end-1));

我不知道这是否是您正在寻找的。

相关问题