3

假设我们有一个像

x = -1:0.05:1;
ids = randperm(length(x));
x = x(ids(1:20));

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

4

4 回答 4

7

关于什么

max_dist = max(x) - min(x)

?

于 2010-03-16T08:12:39.560 回答
2

你的意思是你的向量中最大和最小元素之间的区别吗?如果你这样做了,那么这样的事情将起作用:

max(x) - min(x)

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

于 2010-03-16T08:13:50.463 回答
2

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

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

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

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

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

于 2010-03-16T10:52:26.077 回答
1

呃......我很想有一个 MATLAB 在我的手上,它仍然是一大早,但是像这样的东西呢:

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

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

于 2010-03-16T07:48:04.550 回答