请教如何判断嵌入维数和关联维数!
求助:下面为论坛上的一份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 = ;
F = polyfit(ln_r(LinearZone),ln_Cr(i,LinearZone),1);
D(i) = F(1);
end
plot(D,'+:'); grid;
回复 楼主 的帖子
m不同的时候,曲线最好用不同的线形和颜色,这样我们根本就看不明白哈 谢谢你的提醒,对于这部分内容刚刚接触,最近一直在浏览论坛上关于求LE的帖子,希望能够得到大家的帮助!上面发的程序是我在论坛里找到的,直接运行时"X = normalize_1(x);"一直出错,后来无意发现运行本程序时,若先安装了论坛里路博士的那个混沌计算工具箱,则整个程序就可以运行了,不知道大家遇到过没有。而且运行该程序时输入的X应该为列向量,在运行
“ln_Cr(i,j) = log(correlation_integral(X',m,r)); % 缺省用法”
时,论坛里提供的correlation_integral函数中X又是按照行向量编辑程序的,所以我在此进行了转换,希望能给我一样的新手有帮助。
另外一个关于程序的问题还想请教大家:原程序中拟合线性区域时,“ LinearZone = ; ”中的7是怎么确定的??我曾换过别的值,但不知道原理,虽然也能算。
当然我还是非常想知道怎么利用计算的图形获得我想要的结果!
下面图形采用的是max_m=40,LinearZone = ;
[ 本帖最后由 xjtuluo 于 2008-5-6 21:27 编辑 ] 关联维数需要对各条曲线的数据进行拟合,拟合直线的斜率即使关联维数了! 底下的图形就是程序提供的拟合结果,那么底下蓝线线性增加部分的斜率就是我要得到的关联维数吗?
还是希望大家能对我上面的结果给予点拨!
[ 本帖最后由 eight 于 2008-5-7 18:31 编辑 ] 下面的那个图就是拟合出的关联维数随嵌入维数的变化图。在图中可以看出当嵌入维数增加到一定的时候,关联维数已经不再增加了,此时的关联维数和对应的嵌入维数就是你想要的结果。
LinearZone = ;里面的7是确定拟合时选取的线形区。比如当t =2时,就取ln(r)坐标轴中第2个到第7个点进行拟合。但是具体这个线形区如何选取,现在还没有什么可行的理论,要根据非线性系统的混沌特性来确定线形区。 那是不是图形中当横坐标取25时,拟合曲线几乎不增加了,就可得到关联维数为d=25,则嵌入维数m>=2d+1=51,是这样理解的吗? 不是,应该是嵌入维数是25,关联维数为对应的纵坐标值。
页:
[1]