2016-11-11 91 views
1

我有我的PDB寻找一个字符串列表比较MATLAB - 有没有办法做一个字符串中使用多个字符串

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' 'this' 'is' 'a' 'test']找到这个数组['hello' 'world']

基本上我只是想知道,如果“你好”和“世界”是较大的阵列,而不是检查它是否包含在这两个“你好”和相同的行

+0

@Sardar_Usama我添加了一个更具体的例子 – Kevin

+0

请注意,'[“你好”“世界”]'不MATLAB中的字符串列表:它是一个单独的字符串“helloworld”。 –

+0

@AndrasDeak谢谢!我没有意识到这一点! – Kevin

回答

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'})) 
+1

并且我还建议使用'upper'将所有的AtomNames转换为大写,然后在进行比较时考虑下雨天Ca Cb爬入AtomName –

相关问题