Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2009-04-27, 05:03   #1
beatlesjohn
初级会员
 
注册日期: 2009-04-27
帖子: 1
声望力: 0
beatlesjohn 正向着好的方向发展
问题 『谢谢大家关心,问题已解决』关于计算最大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 编辑。 原因: 问题已经解决了
beatlesjohn 当前离线   回复时引用此帖
 

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 12:37


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.