2010-03-16 133 views
3

矢量元素之间的最大距离让我们假设我们有像计算MATLAB

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

载体,我想计算一些惯用的方式x元素之间的最大距离。只需遍历所有可能的x元素的组合就很容易,但我觉得可能有一种方法可以用一些疯狂但惯用的方式使用MATLAB的内置函数来完成。

回答

7

什么

max_dist = max(x) - min(x) 

1

呃......很想有我的手一MATLAB和它的早晨,但对于像还早:

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

我不知道这是你在找什么对于。

+0

这将计算后续元素之间的最大距离。我宁愿拥有所有可能的组合。 – lhahne 2010-03-16 08:02:07

2

你的意思是你矢量中最大和最小元素的区别?如果你这样做,那么这样的事情会工作:

max(x) - min(x) 

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

2

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

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

作为替代,前一段时间我把一个普通INTERPOINT距离计算工具上来就文件交换(IPDM)。对于特殊情况下的简单问题,如1-d最远点问题,这足够聪明。该调用会为你做它:

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

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