声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3324|回复: 7

[分形与混沌] 请教如何判断嵌入维数和关联维数!

[复制链接]
发表于 2008-5-6 17:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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;

G-P.bmp
回复
分享到:

使用道具 举报

发表于 2008-5-6 19:24 | 显示全部楼层

回复 楼主 的帖子

m不同的时候,曲线最好用不同的线形和颜色,这样我们根本就看不明白哈
 楼主| 发表于 2008-5-6 21:24 | 显示全部楼层
谢谢你的提醒,对于这部分内容刚刚接触,最近一直在浏览论坛上关于求LE的帖子,希望能够得到大家的帮助!

上面发的程序是我在论坛里找到的,直接运行时"X = normalize_1(x);"一直出错,后来无意发现运行本程序时,若先安装了论坛里路博士的那个混沌计算工具箱,则整个程序就可以运行了,不知道大家遇到过没有。而且运行该程序时输入的X应该为列向量,在运行

“ln_Cr(i,j) = log(correlation_integral(X',m,r)); % 缺省用法”

时,论坛里提供的correlation_integral函数中X又是按照行向量编辑程序的,所以我在此进行了转换,希望能给我一样的新手有帮助。

另外一个关于程序的问题还想请教大家:原程序中拟合线性区域时,“    LinearZone = [t:t+7]; ”中的7是怎么确定的??我曾换过别的值,但不知道原理,虽然也能算。

当然我还是非常想知道怎么利用计算的图形获得我想要的结果!
下面图形采用的是max_m=40,LinearZone = [t:t+7];
g-p1.GIF

[ 本帖最后由 xjtuluo 于 2008-5-6 21:27 编辑 ]
发表于 2008-5-6 22:02 | 显示全部楼层
关联维数需要对各条曲线的数据进行拟合,拟合直线的斜率即使关联维数了!
 楼主| 发表于 2008-5-7 09:39 | 显示全部楼层
底下的图形就是程序提供的拟合结果,那么底下蓝线线性增加部分的斜率就是我要得到的关联维数吗?

还是希望大家能对我上面的结果给予点拨!

[ 本帖最后由 eight 于 2008-5-7 18:31 编辑 ]
发表于 2008-5-7 10:19 | 显示全部楼层
下面的那个图就是拟合出的关联维数随嵌入维数的变化图。在图中可以看出当嵌入维数增加到一定的时候,关联维数已经不再增加了,此时的关联维数和对应的嵌入维数就是你想要的结果。
LinearZone = [t:t+7];里面的7是确定拟合时选取的线形区。比如当t =2时,就取ln(r)坐标轴中第2个到第7个点进行拟合。但是具体这个线形区如何选取,现在还没有什么可行的理论,要根据非线性系统的混沌特性来确定线形区。

评分

1

查看全部评分

 楼主| 发表于 2008-5-7 14:02 | 显示全部楼层
那是不是图形中当横坐标取25时,拟合曲线几乎不增加了,就可得到关联维数为d=25,则嵌入维数m>=2d+1=51,是这样理解的吗?
发表于 2008-5-7 14:41 | 显示全部楼层
不是,应该是嵌入维数是25,关联维数为对应的纵坐标值。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-24 00:45 , Processed in 0.062972 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表