求助循环方面的问题,有代码
遇到一个新问题,先描述如下:自定义了一个函数,其功能是可以对输入的序列求出其拐点,然后以拐点为界,将序列一分为二。该部分代码已正确写出了。
问题是在主函数中,我需要判断分成的这两部分的长度是否小于一个已给定的值,若不小于,将调用上面自定义的函数继续分裂数据,直到所有的序列的长度都小于这个已给定的值,问题就出现在这个循环中,有兴趣的话我可以把自己写的代码发出来,希望热心人可以指出我的错误,或者提出更好的解决办法,先谢过了。
MinLength=4;%时间序列的最小分裂长度阈值。
S=[ 2 3 2 4 6 7 9 2 1 3]
D=Segment(S,MinLength)
D{1,:}
D{2,:}%查看一下D中的元素具体内容。
w=1;
Q=cell(2,1000);
for k=1:4
if(length(D{1,k})>0)%把非零元素即不需要再分裂的序列存入D的第三行。
Q{1,w}=D{1,k};%Q第1行用来存不需要再分裂的序列,每次的都按顺序加到后面。能实现吗????、、
D{1,k}=[];%把D的第1行元素清空。方便下次循环时继续用,而不至于重复造成混乱。
w=w+1;
end
end
for m=1:4
if(length(D{2,m})>0)
Q{2,m}=D{2,m};
D{2,m}=[];%把D的第2行元素清空。方便下次循环时继续用,而不至于重复造成混乱。
for k=1:4
if(length(D{1,k})>0)%把非零元素即不需要再分裂的序列存入D的第三行。
Q{1,w}=D{1,k};%Q第1行用来存不需要再分裂的序列,每次的都按顺序加到后面。能实现吗????、、
D{1,k}=[];%把D的第1行元素清空。方便下次循环时继续用,而不至于重复造成混乱。
w=w+1;
end
end
[D Sd t]=Segment(Q{2,m},MinLength)
end
end
%错误了,主要是length(D{2,m}),一次循环后会冲掉以前的,想办法解决啊??????????????
可以第一次调用自定义的函数,但以后循环就不行了。
[D Sd t]=Segment(S,MinLength)是我自定义的函数,已经编写正常了,其中D是cell数组第一行存小于分裂阈值的序列,第二行存需要再次分裂的序列。问题就出在这个循环上了