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

Kev*_*vin 1 matlab

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

X1 = ['N' 'CA' 'CB' 'CG1']%Isoleucine
Run Code Online (Sandbox Code Playgroud)

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

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')))
Run Code Online (Sandbox Code Playgroud)

有更简洁的方法吗?还有没有办法让strcmp进行精确匹配?不只是它包含字符串吗?

编辑:

一个更具体的例子:

我希望能够做到这一点:

strcmp(['hello' 'world'], ['hello' 'world' 'this' 'is' 'a' 'test'])
Run Code Online (Sandbox Code Playgroud)

并返回它是否与hello或world匹配。这不是返回零说,它无法找到这个阵['hello' 'world']['hello' 'world' 'this' 'is' 'a' 'test']

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

And*_*eak 5

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

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

ans =

     1     1
Run Code Online (Sandbox Code Playgroud)

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

all(ismember({pdb.Model.Atom(:).AtomName},{'N','CA','CB','CG1'}))
Run Code Online (Sandbox Code Playgroud)