4

本质上,我有两个长度相等的字符串,例如“AGGTCT”和“AGGCCT”。我想逐个位置比较它们并读取它们何时不匹配。所以在这里我希望得到 1,因为只有 1 个位置与位置 4 不匹配。如果有人对位置比较代码有想法,这将有助于我开始。

谢谢!!

4

3 回答 3

11

使用以下语法获取相同大小字符串的不同字符数:

sum( str1 ~= str2 )

如果您想不区分大小写,请使用:

sum( lower(str1) ~= lower(str2) )

该表达式str1 ~= str2对两个字符串进行逐字符比较,生成与字符串大小相同的逻辑向量,true其中包含不匹配的位置(使用~=)和false匹配的位置。要获得结果,只需将true值(不匹配)的数量相加。

编辑:如果你想计算匹配字符的数量,你可以:

  1. 使用“等于”==运算符(而不是“不等于”~=运算符):

    sum( str1 == str2 )
    
  2. 从总数中减去不匹配的数量:

    numel(str1) - sum( str1 ~= str2 )
    
于 2013-05-16T12:23:08.040 回答
1

您可以比较字符串的所有元素:

r = all(seq1 == seq2)

如果结果数组中的所有元素都为真,这将逐个字符比较并返回真。如果字符串可以有不同的大小,您可能需要先比较大小。另一种选择是

r = any(seq1 ~= seq2)

另一种解决方案是使用strcmp

r = strcmp(seq1, seq2)
于 2013-05-16T12:53:56.833 回答
0

只是想指出您要求计算汉明距离(当您要求替代方案时 - 文章包含一些链接)。这已经在这里讨论过了。简而言之,内置命令pdist可以做到。

于 2013-05-28T07:45:32.840 回答