我有我要在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'
您的问题的前半部分让我不确定,但是第二种表述很容易回答:
>> 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)
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |