![]() |
[求助]请高手帮忙解决错误Subscript indices must either be real positive integers or logicals.
%化简序列,当多个H相连时,将其看作一个H,并把H中间的的C去掉;
%多个C相连时,将其看作一个C %E和H之间的C也可以去掉 clear; clc; fprintf('input the sequence:\n'); sequ=input(' ','s'); k=length(sequ); %把H中间的C去掉,H和E之间的C去掉,E和H之间的C去掉 while i<=k if i==1&sequ(i)=='C' for j=1:k-i if sequ(i+j)=='C' continue; else break; end end i=i+j; elseif sequ(i)=='H'%----------------------------------------------------第19行 for j=1:k-i if sequ(i+j)=='C' continue; else break; end end if i+j>k sequ=sequ; else sequ=strcat(substring(sequ,0,i-1),substring(sequ,i+j-1)); i=i+1; k=length(sequ); end elseif sequ(i)=='E' for j=1:k-i if sequ(i+j)=='C' continue; elseif sequ(i+j)=='H' break; end end if i+j>k sequ=sequ; else sequ=strcat(substring(sequ,0,i-1),substring(sequ,i+j-1)); i=i+1; k=length(sequ); end elseif sequ(i)==' ' break; end end %把多个H相连和多个C相连分别看作成一个H和一个C while i<=k if sequ(i)=='C' for j=1:(k-j) if sequ(i)=='C' continue; else break; end end if i+j>k sequ=strcat(substring(sequ,0,i-1),'C'); break; else sequ=strcat(substring(sequ,0,i-1),'C',substring(sequ,i+j-1)); i=i+2; k=length(sequ); end else sequ(i)=='H' for j=1:(k-j) if sequ(i)=='H' continue; else break; end end if i+j>k sequ=strcat(substring(sequ,0,i-1),'H'); break; else sequ=strcat(substring(sequ,0,i-1),'H',substring(sequ,i+j-1)); i=i+2; k=length(sequ); end end end 运行结果发生错误为: (错误已标出 ) ??? Subscript indices must either be real positive integers or logicals. Error in ==> totalprogram at 19 elseif sequ(i)=='H'%----------------------------------------------------第19行 |
打断点 检查19行里的那个下标是不是 int or logical
|
所有时间均为北京时间。现在的时间是 05:08。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.