匹配基于字符串的向量

时间:2014-04-14 15:29:46

标签: matlab

我正在尝试习惯于在向量中做事而不是循环。我的问题是我有两个向量。向量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行来解决。

1 个答案:

答案 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]