马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
求助:下面为论坛上的一份matlab程序,我做了一点点输入参数的修改,附件为计算图形,但对计算出来的结果,不知如何判断,请大家指教!
从附件图形中如何判断我的关联维数和嵌入维数呢?
% GP算法求关联维和嵌入维
%clc
% %--------------------------------------------------------------------------
%下面为自己定义的时间序列;
load DataXYZ
data=DataXYZ(4,1:10000);
x=data';
%--------------------------------------------------------------------------
X = normalize_1(x);
max_m=20
tau=4;
%---------------------------------------------------'
disp('----- GP算法求关联维和嵌入维 -----');
% t = 1;
m_vector = 1:max_m;
r_vector = exp(-5:0.25:1);
num_m = length(m_vector);
num_r = length(r_vector);
ln_Cr = zeros(num_m,num_r);
%------------------------------------------------------
% tic
type_norm = 2; % 使用范数类型 (缺省值为2)
% type_norm = 0,1,2时,分别对应无穷范数、1范数和2范数
block = 1; % 分块计计算关联积分 - 分块数 (缺省值为1)
% t越大速度越快,但有误差
for i = 1:num_m
i
for j = 1:num_r
% 计算关联积分S(m,N,r,t), 参见 <<混沌时间序列分析及应用>> P35 式(2.29)
m = m_vector(i);
r = r_vector(j);
ln_Cr(i,j) = log(correlation_integral(X',m,r)); % 缺省用法
% ln_Cr(i,j) = log(correlation_integral(m,X,r,tau,type_norm,block));
end
end
% t = toc
figure(3)
subplot(211)
ln_r = log(r_vector);
plot(ln_r,ln_Cr','+:');grid;
xlabel('ln(r)'); ylabel('ln(C(r))');
title(['norm = ',num2str(type_norm),', block = ',num2str(block),', t = ',num2str(tau)]);
legend('m=2','m=3','m=4','m=5',4)
subplot(212)
%------------------------------------------------------
% 拟合线性区域
for i=1:num_m
A=find(ln_Cr(i,:)~=-inf);
t=A(1);
LinearZone = [t:t+20];
F = polyfit(ln_r(LinearZone),ln_Cr(i,LinearZone),1);
D(i) = F(1);
end
plot(D,'+:'); grid;
|