假设我有两个数组:
a = [1, 2, 5, 7, 6, 9, 8, 3, 4, 7, 0];
b = [5, 9, 6];
我想找到 a 中 b 的值的索引(只有第一次命中)即:
c = [3, 6, 5];
有没有一种简单的 Matlab native 方法可以在不循环和搜索的情况下执行此操作。
我曾尝试将 find() 用于:
find(a == b)
如果你这样做,它会起作用:
for i = 1:length(b)
index = find(a == b(i));
c = [c, index(1)]
end
但如果它比这个更容易,那将是理想的选择。
最佳答案
您可以使用 arrayfun 轻松地将 for 循环压缩成一个简单的单行代码:
arrayfun(@(x) find(a == x,1,'first'), b )
另见 Scenia's answer对于较新的 matlab 版本 (>R2012b)。
关于arrays - 根据对另一个数组的搜索查找数组中元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11572034/