Matlab 比较两个表中的字符串
我知道matlab可以方便地从表中获取所有行,这些行在“a”列中具有所需的字符串(在本例中),如下所示:Matlab 比较两个表中的字符串,matlab,string-comparison,strcmp,Matlab,String Comparison,Strcmp,我知道matlab可以方便地从表中获取所有行,这些行在“a”列中具有所需的字符串(在本例中),如下所示: refs_found = refs(strcmp(refs.a,desired_a),:); 但是,我希望在以下情况下执行此操作:所需的_a不是字符串,而是带有字符串的向量,并且找到的refs_返回refs.a中的字符串也在所需的_a中的所有行 当我尝试这样做时,我毫不奇怪地得到: 使用strcmp时出错 输入的大小必须相同,或者其中一个可以是标量。 有没有一种方法可以在不遍历每一行的情况
refs_found = refs(strcmp(refs.a,desired_a),:);
但是,我希望在以下情况下执行此操作:所需的_a不是字符串,而是带有字符串的向量,并且找到的refs_返回refs.a中的字符串也在所需的_a中的所有行
当我尝试这样做时,我毫不奇怪地得到:
使用strcmp时出错
输入的大小必须相同,或者其中一个可以是标量。
有没有一种方法可以在不遍历每一行的情况下执行此操作?您可以使用where输入字符串单元格数组,它将输出一个逻辑向量,告诉您字符串单元格数组中的哪些元素出现在源数组中
使用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), :);
您可以使用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), :);