MATLAB - 有没有办法做一个字符串中使用多个字符串
问题描述:
我有我的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']
。
基本上我只是想知道,如果“你好”和“世界”是较大的阵列,而不是检查它是否包含在这两个“你好”和相同的行
答
上半年在“世界”的问题让我不确定,但第二制剂是容易回答的:
>> 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 –
@Sardar_Usama我添加了一个更具体的例子 – Kevin
请注意,'[“你好”“世界”]'不MATLAB中的字符串列表:它是一个单独的字符串“helloworld”。 –
@AndrasDeak谢谢!我没有意识到这一点! – Kevin