计算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);
作为替代方案,一段时间前,我将一般的Interpoint距离计算工具放在文件交换上 (IPDM). 。它足够聪明,对于特殊情况很简单的问题,例如1D最远的问题问题。这个电话会为您做到:
D = ipdm(x,'subset','farthest','result','struct');
当然,它不会像我上面写的简单代码那样高效,因为它是一个完全一般的工具。
嗯...很想在我的手上有一个matlab,它仍然在清晨,但是这样的事情:
max_dist = max(x(2:end) - x(1:end-1));
我不知道这是否就是您要寻找的。
不隶属于 StackOverflow