我有一个似乎很简单的问题,但也许我错过了一些东西。我们说我有:vector = [10:1:19];
。我有另一个向量,want = [11 16 19];
我只想要一个命令将为我返回的方式,即向量中出现11,16和19的指示。换句话说,我想要返回,2,7和10.什么命令可能会这样做?我不能使用find
,(因为维度不匹配),那么还有另一种方法吗?
实际上vector
和want
的长度会很长,因此for循环不会。
答案 0 :(得分:7)
使用intersect
:
[C, i_vector, i_want] = intersect(vector, want)
C是两个向量中的常见元素。 i_vector
中的公共集合索引vector
和i_want
中的want
是{{1}}向量中的匹配集索引。
答案 1 :(得分:1)
或者,您可以使用ismember
。
要获取vector
中的want
元素:
vector(ismember(vector,want))
ans =
11 16 19
获取他们的索引:
find(ismember(vector,want))
ans =
2 7 10
或只是:
[tf, loc] = ismember(vector,want)
tf =
0 1 0 0 0 0 1 0 0 1
loc =
0 1 0 0 0 0 2 0 0 3
其中tf表示vector
的每个元素是否存在于want
中,而loc
表示want
中的相应索引。