我有一个我在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'
答案 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'}))