基本上,我有两个相同长度的字符串,例如,为了示例,请说'AGGTCT'和'AGGCCT'。我想按位置比较它们的位置,并获得它们不匹配时的读数。所以在这里我希望得到1,因为只有1个位置,他们在位置4不匹配。如果有人有位置比较代码的想法,这将有助于我开始很多。
谢谢!
答案 0 :(得分:11)
使用以下语法获取相同大小的字符串的不相似字符数:
sum( str1 ~= str2 )
如果您想要不区分大小写,请使用:
sum( lower(str1) ~= lower(str2) )
表达式str1 ~= str2
执行两个字符串的char-by-char比较,产生与字符串大小相同的逻辑向量,其中true
不匹配(使用~=
)和false
匹配的地方。要获得结果,只需将true
值(不匹配)的数量相加。
编辑:如果您想计算匹配字符的数量,您可以:
使用“等于”==
运算符(而不是“不等于”~=
运算符):
sum( str1 == str2 )
从总数中减去不匹配的数量:
numel(str1) - sum( str1 ~= str2 )
答案 1 :(得分:1)
您可以比较字符串的所有元素:
r = all(seq1 == seq2)
这将通过char比较char,如果结果数组中的所有元素都为true,则返回true。如果字符串可以有不同的大小,您可能需要先比较大小。另一种选择是
r = any(seq1 ~= seq2)
另一种解决方案是使用strcmp
:
r = strcmp(seq1, seq2)
答案 2 :(得分:0)
只是想指出您要求计算hamming distance(因为您要求替代方案 - 该文章包含指向某些内容的链接)。这已经讨论过了here。简而言之,内置命令pdist可以做到。