代码之家  ›  专栏  ›  技术社区  ›  Roger That

比较两个表中的字符串matlab

  •  2
  • Roger That  · 技术社区  · 7 年前

    我知道matlab可以方便地从表中获取所有行,这些行在“a”列中具有所需的字符串(在本例中),如下所示:

    refs_found = refs(strcmp(refs.a,desired_a),:);
    

    Error using strcmp Inputs must be the same size or either one can be a scalar.

    有没有一种方法可以在不迭代每一行的情况下做到这一点?

    1 回复  |  直到 7 年前
        1
  •  2
  •   rayryeng    7 年前

    您可以使用 ismember logical 向量,告诉您字符串单元格数组中的哪些元素出现在源数组中。

    使用MATLAB内置的示例,我们创建一个表:

    load patients
    refs = table(LastName,Gender,Age,Height,Weight,Smoker,Systolic,Diastolic)
    

    desired_a = {'Griffin', 'Jenkins'};
    refs_found = refs(ismember(refs.LastName, desired_a), :);
    

    伊斯梅尔 要访问表的行,请使用 调用时,第一个参数是您在表中引用的列,第二个参数是您要搜索的字符串。

    >> refs_found = refs(ismember(refs.LastName, desired_a), :)
    
    refs_found = 
    
        LastName     Gender    Age    Height    Weight    Smoker    Systolic    Diastolic
        _________    ______    ___    ______    ______    ______    ________    _________
    
        'Jenkins'    'Male'    28     69        189       true      134         82       
        'Griffin'    'Male'    49     70        186       false     119         74  
    

    通常,首先创建要搜索的字符串的单元格数组:

    desired_a = {'string_1', 'string_2', ...};
    

    之后,使用此索引到表中以获取所需内容:

    refs_found = refs(ismember(refs.a, desired_a), :);