在MATLAB中找到另一个向量中元素的位置

Sle*_*der 2 matlab

假设我有一个向量needle = [3 2 6];,我想在另一个向量中找到其元素的索引haystack = [0 1 2 3 4 5 6 7 8 9];.要返回的结果needle与此版本具有相同的维度[4 3 7].元素needle不一定是唯一的.我已经使用for循环使用函数文件实现了这一点.使用的实现ismember可以工作,但如果两个或多个元素needle相同,ismember则会遇到问题,因为对于所有元素都将返回单个"1" needle相同.

    find(haystack == needle)
Run Code Online (Sandbox Code Playgroud)

也不会像干草堆一样工作,针可能不是同一个维度.

是否有一个整洁的单线,我可以用来实现同样的事情?

Dan*_*Dan 6

ismember 确实有效,但你需要第二个输出:

[~, ind] = ismember(needle, haystack)
Run Code Online (Sandbox Code Playgroud)

例如

needle = [3 2 6 6];
haystack = [0 1 2 3 4 5 6 7 8 9];
[~, ind] = ismember(needle, haystack)

ind =

   4   3   7   7
Run Code Online (Sandbox Code Playgroud)