![]() |
遇到一个新问题,是循环方面的,急待解决
遇到一个新问题,先描述如下:
自定义了一个函数,其功能是可以对输入的序列求出其拐点,然后以拐点为界,将序列一分为二。该部分代码已正确写出了。 问题是在主函数中,我需要判断分成的这两部分的长度是否小于一个已给定的值,若不小于,将调用上面自定义的函数继续分裂数据,直到所有的序列的长度都小于这个已给定的值,问题就出现在这个循环中,有兴趣的话我可以把自己写的代码发出来,希望热心人可以指出我的错误,或者提出更好的解决办法,先谢过了。 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数组第一行存小于分裂阈值的序列,第二行存需要再次分裂的序列。问题就出在这个循环上了 |
所有时间均为北京时间。现在的时间是 06:25。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.