use*_*2pi 2 matlab cross-correlation
假设我有2个字符串:
AACCCGGAAATTTGGAATTTTCCCCAAATACG
CGATGATCGATGAATTTTAGCGGATACGATTC
Run Code Online (Sandbox Code Playgroud)
我想找到我应该多少移动第二个字符串,使其与第一个字符串最匹配.
有2例.第一个是我们假设字符串被缠绕,第二个是我们没有.
是否有一个matlab函数返回N个数组或2N + 1个值数组,以确定移位的字符串2与字符串1的相关程度?
如果没有,是否有更快/更简单的方法
result = zeroes(length, 1)
for i = 0:length-1
result(i+1) = sum (str1 == circshift(str2, i));
end
Run Code Online (Sandbox Code Playgroud)
您可以将每个char转换为大小为4的二进制列:
A -> [1;0;0;0]
C -> [0;1;0;0]
G -> [0;0;1;0]
T -> [0;0;0;1]
Run Code Online (Sandbox Code Playgroud)
结果,一串长度n变为大小为4-by- 的二进制矩阵n.
您现在可以交叉关联(仅限X轴)2 n-by-4和m-by-4以获得结果.