Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-04-27
帖子: 1
声望力: 0 ![]() |
![]()
因为最近的一个设计要用到计算最大lyapunov指数的程序;
所以在一本书上找了以下程序,并进行了部分修改,但运行后结果还是有错误; 由于本人是初次接触Matlab,可能有改的不对的地方,也有很多不懂的地方,特把程序拿出,请高手指正; 具体程序如下: x=[15,24,17,17,24,22,30,21,8,17,19,15,23,18,26,25,29,22,24,29,24,30,24,22,23,25,22,18,19,27,17,28,21,21,26,17,23,25,25,14,21,16,10,18,23,22,13,21,10,22,26,28,11,27,17,17,21,25,26,22]; N=length(x); tau=1; m=3; P=5; delt_t=1; M=N-(m-1)*tau; d=zeros(M,M); for j=1:M for i=1:m Y(i,j)=x((i-1)*tau+j); end end for j=1:M mmax=1e+100; mmin=mmax; for jj=1:M d=0; if abs(j-jj)>P for i=1:m d=d+(Y(i,j)-Y(i,jj))*(Y(i,j)-Y(i,jj)); end d=sqrt(d) if d<mmin mmin=d; idx=jj; end idxl(j)=idx; d0(j)=mmin end end max(j)=min((M-j),(M-idxl(j))); for k=1:max(j) dd=0; for kk=1:m dd=dd+(Y(kk,j+k)-Y(kk,idxl(j)+k))*(Y(kk,j+k)-Y(kk,idxl(j)+k)); end dd=sqrt(dd); d(k,j)=dd; end end for j=1:M-P-1 for i=1:j lnd=0; ee=0; for k=1:max(i) if d(k,i)>0 lnd=lnd+k*log(d(k,i)/d0(i)); ee=ee+k*k end lamda2(i)=lnd/ee end lamda22(j)=sum(lamda2)/j end end plot(lamda22) 在命令窗口执行后,会有如下错误信息: Warning: Divide by zero. lamda2 = NaN ??? Index exceeds matrix dimensions. 此帖于 2009-04-27 22:11 被 beatlesjohn 编辑。 原因: 问题已经解决了 |
![]() |
![]() |