求助:计算关联维数的G-P算法
在下列的G_P算法中:function =G_P(data,N,tau,min_m,max_m,ss)
% the function is used to calculate correlation dimention with G-P algorithm
% 计算关联维数的G-P算法
% data:the time series 时间序列
% N: the length of the time series 时间序列长度
% tau: the time delay 时间延迟
% min_m:the least embedded dimention m 最小的嵌入维数
% max_m:the largest embedded dimention m 最大的嵌入维数
% ss:the stepsize of r r的步长
%skyhawk
for m=min_m:max_m
Y=reconstitution(data,N,m,tau);%reconstitute state space
M=N-(m-1)*tau;%the number of points in state space
for i=1:M-1
for j=i+1:M
d(i,j)=max(abs(Y(:,i)-Y(:,j)));%calculate the distance of each two
end %points in state space计算状态空间中每两点之间的距离
end
max_d=max(max(d));%the max distance of all points 得到所有点之间的最大距离
d(1,1)=max_d;
min_d=min(min(d));%the min distance of all points 得到所有点间的最短距离
delt=(max_d-min_d)/ss;%the stepsize of r 得到r的步长
for k=1:ss
r=min_d+k*delt;
C(k)=correlation_integral(Y,M,r);%calculate the correlation integral
ln_C(m,k)=log(C(k));%lnC(r)
ln_r(m,k)=log(r);%lnr
fprintf('%d/%d/%d/%d\n',k,ss,m,max_m);
end
plot(ln_r(m,:),ln_C(m,:));
hold on;
end
fid=fopen('lnr.txt','w');
fprintf(fid,'%6.2f %6.2f\n',ln_r);
fclose(fid);
fid = fopen('lnC.txt','w');
fprintf(fid,'%6.2f %6.2f\n',ln_C);
fclose(fid);
运行不成
提示错误:Strings passed to EVAL cannot contain function declarations
俺是新手,刚刚学习分形与混沌,请大家多多帮助!!谢谢了!! 首先,请给出你所用的参数定义,你给出的这个代码就是论坛里面现成的,对你所说的问题没有任何的参考价值!还请把问题说的清楚点哦! tau=9
min_m=2
max_m=12
ss=6 请将错误提示完整贴出,最好能够给出数据组,这样可以帮你分析! 现在运行不了
tau=9;ss=6
data=[193
96
324
333
3310
2240
2970
2490
3260
846
343
471
225
96
252
632
983
571
942
857
476
964
871
1350
1150
1410
258
174
99
163
32
1230
228
1480
646
3500
2080
613
4380
3020
2040
4730
1048
807
146
51
152
227
160
346
345
760
292
252
381
384
825
282
330
612
492
504
854
5650
1010
594
2400
1704
865
725
374
1956
406
353
1308
2610
2720
1063
133
197
132
128
121
134
1105
856
4164
2928
3210
3920
3480
3030
2180
2370
2870
2460
5050
2530
2840
1990
2590
2860
3120
4860]
N=length(data)
min_m=2;max_m=9
for m=min_m:max_m
Y=reconstitution(data,N,m,tau);%reconstitute state space
M=N-(m-1)*tau;%the number of points in state space
for i=1:M-1
for j=i+1:M
d(i,j)=max(abs(Y(:,i)-Y(:,j)));%calculate the distance of each two
end %points in state space计算状态空间中每两点之间的距离
end
max_d=max(max(d));%the max distance of all points 得到所有点之间的最大距离
d(1,1)=max_d;
min_d=min(min(d));%the min distance of all points 得到所有点间的最短距离
delt=(max_d-min_d)/ss;%the stepsize of r 得到r的步长
for k=1:ss
r=min_d+k*delt;
C(k)=correlation_integral(Y,M,r);%calculate the correlation integral
ln_C(m,k)=log(C(k));%lnC(r)
ln_r(m,k)=log(r);%lnr
fprintf('%d/%d/%d/%d\n',k,ss,m,max_m);
end
plot(ln_r(m,:),ln_C(m,:));
hold on;
end
fid=fopen('lnr.txt','w');
fprintf(fid,'%6.2f %6.2f\n',ln_r);
fclose(fid);
fid=fopen('lnC.txt','w');
fprintf(fid,'%6.2f %6.2f\n',ln_C);
fclose(fid)
谢谢了!! 我帮你试过了,是可以算的,结果如下:
ln_r =
0 0 0 0 0 0
6.8420 7.5351 7.9406 8.2283 8.4514 8.6337
6.8420 7.5351 7.9406 8.2283 8.4514 8.6337
6.8420 7.5351 7.9406 8.2283 8.4514 8.6337
6.8420 7.5351 7.9406 8.2283 8.4514 8.6337
6.8420 7.5351 7.9406 8.2283 8.4514 8.6337
6.8420 7.5351 7.9406 8.2283 8.4514 8.6337
6.8420 7.5351 7.9406 8.2283 8.4514 8.6337
6.8420 7.5351 7.9406 8.2283 8.4514 8.6337
ln_C =
0 0 0 0 0 0
-1.3106 -0.7425 -0.3090 -0.1297 -0.0353 0
-1.8723 -1.0207 -0.4231 -0.1892 -0.0542 0
-2.4842 -1.3415 -0.5572 -0.2685 -0.0796 0
-3.0963 -1.7371 -0.7235 -0.3735 -0.1089 0
-3.5530 -2.0742 -0.8642 -0.4427 -0.1283 0
-3.9326 -2.4379 -1.0081 -0.5108 -0.1428 0
-4.4067 -2.8381 -1.1563 -0.5673 -0.1683 0
-5.1080 -3.2108 -1.2793 -0.6156 -0.1953 0
计算结果你可以自己用最小二乘拟合做的,就不给你算了
图示如下 非常感谢!!我在试试。 不好意思还我算不出,不知什么地方出错了,上面程序运行的结果是:
ss =
6
data =
193
96
324
333
3310
2240
2970
2490
3260
846
343
471
225
96
252
632
983
571
942
857
476
964
871
1350
1150
1410
258
174
99
163
32
1230
228
1480
646
3500
2080
613
4380
3020
2040
4730
1048
807
146
51
152
227
160
346
345
760
292
252
381
384
825
282
330
612
492
504
854
5650
1010
594
2400
1704
865
725
374
1956
406
353
1308
2610
2720
1063
133
197
132
128
121
134
1105
856
4164
2928
3210
3920
3480
3030
2180
2370
2870
2460
5050
2530
2840
1990
2590
2860
3120
4860
N =
104
max_m =
9
??? Undefined function or variable 'reconstitution'. 你没有reconstitution.m这个函数,可以在论坛搜索的到的,
另外,建议你去matlab主页下载混沌研究的工具箱,即Chaos toolbox V2.0,里面这些工具比较全面!
回复 #8 kingsir 的帖子
这样的数据是不是要想办法处理一下,再发上来,看起来比较麻烦的 回octopussheng :非常感谢!!回无水1324 :以后注意
回复 #11 kingsir 的帖子
你做的时候最好不要直接修改源程序,可以在命令行里面用命令的方式输入,源码其实都是一样的,直接调用就可以了,呵呵! 主任:我在论坛没有搜到Chaos toolbox V2.0,beidu和google搜到的不能下载,能否发给我一个?email:ytht1210◎21cn.com
谢谢你的无私帮助
?? 昨天好像给你发了,可能我的邮箱有问题吧,刚给你发了,查收一下吧! 收到!谢谢了!有问题再向你请教!