2010-03-16 145 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'); 

當然,它不會像簡單的代碼,我上面寫的那樣有效,因爲它是一個完全通用的工具。