我正在研究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
很高興! –