2013-03-31 85 views
0

尋找一種有效的方式進行矢量搜索矢量化的搜索功能的matlab

說,A是2×4陣列

x  y  z  a 
.2  0.97 34.2 4.5 

,B是1通過1000陣列

a x x x x y y y z z a ......... 

如何獲得陣列B的相應第2行A值。尋找一個矢量化的高效解決方案,我有一個可以工作但效率不高的if循環。

感謝

我現在有

A(2,A(1,:)==B(:)) 

但作爲兩個數組的大小不同,這並不工作。 感謝

回答

1

可以使用第二輸出從ismember功能,像這樣:

%Setup 
A = [24 25 26 1; 0.2 0.97 34.2 4.5] 
B = [1 24 24 24 24 25 25 25 26 26 1]; 

%Use ismember to get matching indexes 
[~, ixs] = ismember(B, A(1,:)) 

%Use indexes to get desired result 
out = A(2,ixs) 
+0

謝謝,這個工作,只是想知道如果我能得到一個更快的實現。這個數組的順序是10^6。 – Mia