Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2009-09-17
帖子: 1
声望力: 0 ![]() |
![]()
遇到一个新问题,先描述如下:
自定义了一个函数,其功能是可以对输入的序列求出其拐点,然后以拐点为界,将序列一分为二。该部分代码已正确写出了。 问题是在主函数中,我需要判断分成的这两部分的长度是否小于一个已给定的值,若不小于,将调用上面自定义的函数继续分裂数据,直到所有的序列的长度都小于这个已给定的值,问题就出现在这个循环中,有兴趣的话我可以把自己写的代码发出来,希望热心人可以指出我的错误,或者提出更好的解决办法,先谢过了。 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数组第一行存小于分裂阈值的序列,第二行存需要再次分裂的序列。问题就出在这个循环上了 |
![]() |
![]() |