2013-03-31 88 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