我想在MATLAB中实现DNA Tunstall压缩技术。例如:使用temp2更改右列中每个对应代码左侧列中的每个字符:
temp2 =
'C' [0.2500] [000]
'G' [0.2500] [001]
'T' [0.2500] [010]
'AA' [0.0625] [011]
'AC' [0.0625] [100]
'AG' [0.0625] [101]
'AT' [0.0625] [110]
我编写了这段代码,但是当我运行它时,MATLAB进入无限循环。我不知道为什么,我不知道如何避免这个问题。
这是我的代码
Sqnc="AAGCCCTAGACCG";
maxlength3=size(temp2{size(temp2,1),3},2);
compressedcode=2*ones(1,maxlength3*size(Sqnc,2));
compressedcodepart=0; maxlength=size(temp2{size(temp2,1),1},2); codestart=1;` `
codeend=codestart+maxlength-1;`
while codeend<=size(Sqnc,2)
code=Sqnc(codestart:codeend);
stepback=0;
while stepback<maxlength-1
code=code(1:end-stepback);
adress=0;
adress=find(ismember(temp2([1:end],1), code)==1);
if adress~=0
` compressedcode(compressedcodepart+1:maxlength3)=temp2{adress,3};` `
compressedcodepart=compressedcodepart+3;`
codestart=codestart+maxlength-stepback;
codeend=codestart+maxlength-1;
stepback=maxlength;
end
end
end