假设我们有一个矢量

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

作为替代方案,一段时间前,我将一般的Interpoint距离计算工具放在文件交换上 (IPDM). 。它足够聪明,对于特殊情况很简单的问题,例如1D最远的问题问题。这个电话会为您做到:

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

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

嗯...很想在我的手上有一个matlab,它仍然在清晨,但是这样的事情:

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

我不知道这是否就是您要寻找的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top