• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-05
  • 语言: Matlab
  • 标签: wolf  

资源简介

计算出一个四维超混沌系统的最大Lypunov指数

资源截图

代码片段和文件信息

function lambda_1=lyapunov_wolf(dataNmtauP)
% 该函数用来计算时间序列的最大Lyapunov 指数--Wolf 方法
% m: 嵌入维数
% tau:时间延迟
% data:时间序列
% N:时间序列长度
% :时间序列的平均周期选择演化相点距当前点的位置差,即若当前相点为I,则演化相点只能在|I-J|>的相点中搜寻
% lambda_1:返回最大lyapunov指数值
min_point=1 ; %&&要求最少搜索到的点数
MAX_CISHU=5 ; %&&最大增加搜索范围次数
%FLYINGHAWK
delt_t1 = 0.001;
t1 = 0:delt_t1:60;
[tt1y1]=ode45(‘D‘t1[-1010]);
xx1 = y1(:1)‘;
x1 = spline(tt1 xx1 t1);
data= x1(20000:10:60000);%采样
N=length(data);
m=4;
tau=11;
%*****************************************************
% FFT计算平均周期
%**********************************************************
x=data;
xPower=abs(fft(x)).^2;
NN=length(xPower);
xPower(1)=[];%去除直流分量
NN=floor(NN/2);
xPower=xPower(1:NN);
freq=(1:NN)/NN*0.5;
[mPindex]=max(xPower);
P=index;
% 求最大、最小和平均相点距离
max_d = 0; %最大相点距离
min_d = 1.0e+100; %最小相点距离
avg_dd = 0;
Y=reconstitution(dataNmtau); %相空间重构
M=N-(m-1)*tau; %重构相空间中相点的个数
for i = 1 : (M-1)
for j = i+1 : M
d = 0;
for k = 1 : m
d = d + (Y(ki)-Y(kj))*(Y(ki)-Y(kj));
end
d = sqrt(d);
if max_d < d
max_d = d;
end
if min_d > d
min_d = d;
end
avg_dd = avg_dd + d;
end
end
avg_d = 2*avg_dd/(M*(M-1)); %平均相点距离

dlt_eps = (avg_d - min_d) * 0.02 ; %若在min_eps~max_eps中找不到演化相点时,对max_eps的放宽幅度
min_eps = min_d + dlt_eps / 2 ; %演化相点与当前相点距离的最小限
max_eps = min_d + 2 * dlt_eps ; %&&演化相点与当前相点距离的最大限

% 从P+1~M-1个相点中找与第一个相点最近的相点位置(Loc_DK)及其最短距离DK
DK = 1.0e+100; %第i个相点到其最近距离点的距离
Loc_DK = 2; %第i个相点对应的最近距离点的下标
for i = (P+1):(M-1) %限制短暂分离,从点P+1开始搜索
d = 0;
for k = 1 : m
d = d + (Y(ki)-Y(k1))*(Y(ki)-Y(k1));
end
d = sqrt(d);
if (d < DK) & (d > min_eps)
DK = d;
Loc_DK = i;
end
end
% 以下计算各相点对应的李氏数保存到lmd()数组中
% i 为相点序号,从1到(M-1),也是i-1点的演化点;Loc_DK为相

评论

共有 条评论