matlab - 比较两个表中的字符串matlab

标签 matlab string-comparison strcmp

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

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

但是,我想在desired_a不是字符串而是带有字符串的向量的情况下执行此操作,并且refs_found返回refs.a中的字符串也在desired_a中的所有行。

当我尝试这样做时,我毫不奇怪地得到: 使用 strcmp 时出错 输入的大小必须相同,或者其中之一可以是标量。

有没有办法在不迭代每一行的情况下做到这一点?

最佳答案

您可以使用ismember您可以在其中输入字符串元胞数组,它将输出一个逻辑向量,该向量告诉您字符串元胞数组中的哪些元素出现在源数组中。

使用 MATLAB 中内置的示例来创建一个表:

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

现在假设我想查找姓氏为 Jenkins 和 Griffin 的患者。因此:

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

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

我们终于得到:

>> 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), :); 

关于matlab - 比较两个表中的字符串matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45595456/

相关文章:

插值

matlab - 使工作区中的matlab变量成为全局变量

C 中的大小写敏感性 (scanf) (if/else)

c# - StringComparison,为什么 "TH"不是以 "T"开头

使用 strcmp 函数时出现转换错误

c - 为什么密码中的 strcmp() 不起作用?

c - 在 C 中比较字符串的最快方法

python - Python 的标准库中是否有 linspace 函数?

java - Matlab 看不到 .jar 文件

iOS Swift - 如何匹配另一个字符串为 "like"的字符串?即 "http"就像 "http://"