MATLAB - 有没有办法使用多个字符串进行字符串比较

时间:2016-11-11 19:16:50

标签: matlab

我有一个我在pdb中寻找的字符串列表

X1 = ['N' 'CA' 'CB' 'CG1']%Isoleucine

我想将这些字符串与原子进行比较:

atoms = find(strcmp({pdb.Model.Atom(:).resName}, 'ILE') & ...
               (strcmp({pdb.Model.Atom(:).AtomName}, 'N') |...
                strcmp({pdb.Model.Atom(:).AtomName}, 'CA') | ...
                strcmp({pdb.Model.Atom(:).AtomName}, 'CB') | ...
                strcmp({pdb.Model.Atom(:).AtomName}, 'CG1')))

有更简洁的方法吗?还有一种方法让strcmp完全匹配吗?不只是它包含字符串?

编辑:

更具体的例子:

我希望能够做到这一点:

strcmp(['hello' 'world'], ['hello' 'world' 'this' 'is' 'a' 'test'])

并返回它是否与hello或world匹配。而是返回零,表示它无法在['hello' 'world']中找到此数组['hello' 'world' 'this' 'is' 'a' 'test']

基本上我只是想知道'hello'和'world'是否在更大的数组中,而不是检查它是否包含同一行中的'hello'和'world'

1 个答案:

答案 0 :(得分:4)

你问题的前半部分让我不确定,但第二个表述很容易回答:

>> ismember({'hello' 'world'}, {'hello' 'world' 'this' 'is' 'a' 'test'})

ans =

     1     1

如您所见,ismember适用于单元格数组( 字符串的通用容器)。因此,您可以使用all来检查较大集合中每个字符串的存在性:

all(ismember({pdb.Model.Atom(:).AtomName},{'N','CA','CB','CG1'}))