我正在研究MATLAB中的一个函数,该函数比较两个基因序列并确定它们的相似性。为此,我通过使用for循环遍历它们,将两个序列分割成更小的子串,一次移动一个核苷酸,并将子串添加到单元阵列中。在MATLAB中将长字符串拆分为子字符串的最有效方法
因此,例如,为4子长度字符串ATGCAAAT不会被分割
ATGC,AAAT
而是作为
ATCG,TGCA,GCAA,CAAA,AAAT
我试图让这个函数的执行速度更快,而且因为这两个for循环提供了将近90%的执行时间,所以我想知道是否在MATLAB中有更快的方法来执行此操作。
这里是代码我目前正在使用:
SubstrSequence1 = {};
SubstrSequence2 = {};
for i = 1:length(Sequence1)-(SubstringLength-1)
SubstrSequence1 = [SubstrSequence1, Sequence1(i:i+SubstringLength-1)];
end
for i = 1:length(Sequence2)-(SubstringLength-1)
SubstrSequence2 = [SubstrSequence2, Sequence2(i:i+SubstringLength-1)];
end
非常感谢,这个伟大的工程。它比我的循环快了约3倍,并且比这里的其他建议稍微快一点。 – dacm
很高兴! –