MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]请高手帮忙解决错误Subscript indices must either be real positive integers or logicals. (https://www.labfans.com/bbs/showthread.php?t=2903)

闫世军 neu 2008-05-07 16:34

[求助]请高手帮忙解决错误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行

lincong999 2008-05-08 08:52

打断点 检查19行里的那个下标是不是 int or logical


所有时间均为北京时间。现在的时间是 05:08

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.