我有一个看起来很简单的问题,但也许我遗漏了一些东西。假设我有:vector = [10:1:19];
。我有另一个向量,want = [11 16 19];
我只是想要一种命令为我返回的方式,即向量中出现 11、16 和 19 的索引。换句话说,我想返回 2、7 和 10。什么命令可以做到这一点?我不能使用find
, (因为尺寸不匹配),那么还有其他方法吗?
实际上,vector
and的长度want
会很长,所以 for 循环是行不通的。
我有一个看起来很简单的问题,但也许我遗漏了一些东西。假设我有:vector = [10:1:19];
。我有另一个向量,want = [11 16 19];
我只是想要一种命令为我返回的方式,即向量中出现 11、16 和 19 的索引。换句话说,我想返回 2、7 和 10。什么命令可以做到这一点?我不能使用find
, (因为尺寸不匹配),那么还有其他方法吗?
实际上,vector
and的长度want
会很长,所以 for 循环是行不通的。
使用intersect
:
[C, i_vector, i_want] = intersect(vector, want)
C 是两个向量中的公共元素。i_vector
将是公共集索引,vector
并且i_want
是want
向量中的匹配集索引。
或者,您可以使用ismember
.
要获取vector
present in的元素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
。