2012-09-03 46 views
0

它應該返回最低索引i,如果數x(i)和X之間的位於第(i + 1)。我知道這並不難寫這將做到這一點,但沒有任何內置的Matlab的功能這樣的功能?任何內置MATLAB函數找到,如果一定數量躺着一個向量的兩個成員之間?

假設向量元素進行排序這將是一個微不足道的搜索O(LOGN)我猜,但有沒有更好的方式來做到這一點,如果元素沒有經過分揀去排序?

在此先感謝!

+0

但它應該在此那裏有我的一個以上的特定值的情況下做條件成立? – mathematician1975

+0

已編輯。謝謝指出! – as3rdaccount

+1

我認爲你的要求還不夠清楚。如果要搜索的載體是'[6,2,6,2,6,2]',問題中的數量是'4'又該功能你尋求回報? –

回答

3

邏輯指數非常適合於這些類型的比較:

x = [6 2 6 7 3 5]; 
a = 4; 
find(a > x(1:end-1) & a < x(2:end), 1) 
ans = 2 
+0

非常優雅。直到現在還不知道邏輯索引,完全錯過了Matlab的一個強大的工具。謝謝! – as3rdaccount

0

嘗試

a=rand(1); 
    b=rand(1,10); 
    c=a-b; 
    find(c(2:end).*c(1:end-1)<0,1) 
相關問題