Предположит, что у меня есть 2 строки символов:строка «кросс-корреляция» в MATLAB
AACCCGGAAATTTGGAATTTTCCCCAAATACG
CGATGATCGATGAATTTTAGCGGATACGATTC
Я хочу найти, сколько я должен переместить вторую строку таким образом, что она соответствует первой самой.
Имеются 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
Возможно, вам стоит взглянуть на Bioinformatics Toolbox, который содержит реализации алгоритмов выравнивания Smith-Waterman и Needleman-Wunsch. –