Matlab - 如何逐个字母地比较两个字符串?

use*_*513 4 string matlab compare vectorization

基本上,我有两个相同长度的字符串,例如,为了举例,我们可以说'AGGTCT'和'AGGCCT'.我想按位置比较它们的位置,并获得它们不匹配时的读数.所以在这里我希望得到1,因为只有1个位置,他们在位置4不匹配.如果有人有位置比较代码的想法,这将有助于我开始很多.

谢谢!!

Sha*_*hai 11

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

sum( str1 ~= str2 )
Run Code Online (Sandbox Code Playgroud)

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

sum( lower(str1) ~= lower(str2) )
Run Code Online (Sandbox Code Playgroud)

该表达式str1 ~= str2对两个字符串执行char-by-char比较,产生与字符串大小相同的逻辑向量,以及true它们不匹配(使用~=)的位置以及false它们匹配的位置.要获得结果,只需将值的数量true(不匹配)相加.

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

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

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

    numel(str1) - sum( str1 ~= str2 )
    
    Run Code Online (Sandbox Code Playgroud)