arrays - 根据对另一个数组的搜索查找数组中元素的索引

标签 arrays matlab search matrix find

假设我有两个数组:

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/

相关文章:

javascript - 有什么方法可以在打印时从数组中删除 ","吗?

java - 跳过从 PDF 读取的字节

matlab - 嵌入式Matlab : Problem with persistent variables

search - 如何缓存搜索结果?

c++ - 二进制搜索 - 代码编译和运行后不显示输出

javascript - tensorflow.js 有没有办法输入一个以 -1 作为形状值之一的形状

对角检查二维数组?

matlab - 如何判断一个点是否在三角形内

matlab - 使用 matlab 计算图像中的圆形对象

algorithm - 如何实现在一组固定长度的字节数组中搜索前缀的有效方法?