| 
			
			 初级会员 
			
			
			
			
				 
				注册日期: 2009-04-27 
				
				
				
					帖子: 1
				 
				
				
				声望力:  0 
				
				     
			 
	 | 
	
	
	
		
		
			
			
				 
				『谢谢大家关心,问题已解决』关于计算最大lyapunov指数的程序,请高手帮忙看下那里错了???
			 
			 
			
		
		
		
			
			因为最近的一个设计要用到计算最大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 编辑。
					
					
						原因: 问题已经解决了
					
				
			
		
		
	 |