我正在尝试习惯于在向量中做事而不是循环。我的问题是我有两个向量。向量2是64x2单元格第一列包含字符串,第二列包含数字。我想匹配Vector 1&如果可能的话,2在字符串值上并将数值复制到Vector 1中的新字段中?
Vector 1 Vector 2
GHJ ABC 352
LMN GHJ 62
OPQ LMN 3698
OPQ 12
我希望Vector 1看起来如下,
Vector 1
GHJ 62
LMN 3698
OPQ 12
实际上我猜这个问题也可以通过从向量2中删除ABC行来解决。
答案 0 :(得分:3)
您可以使用ismember
来比较两个数组。要在一个数组中包含字符串和数字,您必须使用单元格数组。
A = {'ABC', 352; 'GHJ', 62; 'LMN', 3698; 'OPQ', 12}
B = {'GHJ'; 'LMN'; 'OPQ'};
matchIndex = ismember(A(:,1), B) %put your vector 2 first
matchIndex =
0
1
1
1
这将返回一个逻辑向量,其长度为A,包含1(真),其中A中的数据在B中找到。在其他地方,它返回0(false)。有关更多示例,请查看ismember
的文档!
您可以使用此逻辑数组进行逻辑索引到A
C = A(matchIndex,:);
C =
'GHJ' [ 62]
'LMN' [3698]
'OPQ' [ 12]