声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4210|回复: 8

[分形与混沌] 求助:关联维数计算问题

[复制链接]
发表于 2010-8-24 22:26 | 显示全部楼层 |阅读模式

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

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

x
我用计算关联维数的程序算了一组数,但是输出却是:
ans =

         0         0         0         0         0
         0         0         0         0         0
   -0.6296    0.0635    0.4690    0.7567    0.9798
   -0.6296    0.0635    0.4690    0.7567    0.9798
   -0.6296    0.0635    0.4690    0.7567    0.9798
   -0.6296    0.0635    0.4690    0.7567    0.9798
   -0.6296    0.0635    0.4690    0.7567    0.9798
   -0.6296    0.0635    0.4690    0.7567    0.9798


我看到前面有些帖子里写的计算结果都是两组矩阵,一组是ln_r,一组是ln_C。为什么和我的不一样啊?是不是修改了程序?

我用的程序为:
function [ln_r,ln_C]=G_P(data,N,tau,min_m,max_m,ss)
% the function is used to calculate correlation dimention with G-P algorithm
% 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
%skyhawk
load('D:\轴承数据\12k Drive End Bearing Fault Data\IR007_0.mat');
data=X105_DE_time(1:5000);
N=length(data);
tau=2;
min_m=3;
max_m=8;
ss=5;
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
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('D:\lnr.txt','w');
fprintf(fid,'%6.2f %6.2f\n',ln_r);
fclose(fid);
fid = fopen('D:\lnC.txt','w');
fprintf(fid,'%6.2f %6.2f\n',ln_C);
fclose(fid);


function X=reconstitution(data,N,m,tau)
%该函数用来重构相空间
% m 为嵌入空间维数
% tau 为时间延迟
% data 为输入时间序列
% N 为时间序列长度
% X 为输出,是m*n 维矩阵
M=N-(m-1)*tau;%相空间中点的个数
for j=1:M %相空间重构
for i=1:m
X(i,j)=data((i-1)*tau+j);
end
end

function C_I=correlation_integral(X,M,r)
%the function is used to calculate correlation integral
%C_I:the value of the correlation integral
%X:the reconstituted state space,M is a m*M matrix
%m:the embedding demention
%M:M is the number of embedded points in m-dimensional space
%r:the radius of the Heaviside function,sigma/2<r<2sigma
%calculate the sum of all the values of Heaviside
%skyhawk
sum_H=0;
for i=1:M
fprintf('%d/%d\n',i,M);
for j=i+1:M
d=norm((X(:,i)-X(:,j)),inf);%calculat the distances of each two points in matris M with sup-norm
sita=heaviside(r-d);%calculate the value of the heaviside function
sum_H=sum_H+sita;
end
end
C_I=2*sum_H/(M*(M-1));%the value of correlation integral


我将reconstitution和correlation_integral两个函数都写在一个.M文件里了,应该不会有影响吧。本人新手,刚开始学习分形和MATLAB,希望得到高手帮助。
回复
分享到:

使用道具 举报

发表于 2010-8-26 18:24 | 显示全部楼层
最好将函数写成独立的M文件,然后调用这些函数。至于这个程序的输出结果,一般是输出ln_c、ln_r,然后对其进行线性拟合,拟合直线的斜率趋于收敛(即可判断序列为混沌序列),找出拟合效果好的那条直线,它的斜率即为关联维数。
 楼主| 发表于 2010-8-26 18:41 | 显示全部楼层
非常感谢你的帮助,最近几天又研究了一下,多少有些明白了。还想问一个问题:为什么我的数据计算结果里会出现“NAN”??难道是我的数据有问题吗?还是我的参数设置有问题?
ln_C=
0        0        0        0        0
0        0        0        0        0
   NaN        -0.05        0        0           NaN
    NaN        -0.06        0        0            NaN
   NaN        -0.08        0        0           NaN
    NaN        -0.09        -0.01        0            NaN
   NaN        -0.1        -0.01        0           NaN
    NaN        -0.12        -0.01        0            NaN

   
发表于 2010-9-6 12:08 | 显示全部楼层
为什么我的一运行就出现
??? G_P试验
       |
Error: Missing variable or function.
发表于 2010-9-6 15:24 | 显示全部楼层
发表于 2010-9-6 16:49 | 显示全部楼层
程序和上面的一样
发表于 2011-2-24 20:14 | 显示全部楼层
回复 1 # hy19831025 的帖子

我最近在网上下了一个程序,也是G-p算法的,但是里面根本没有涉及ln_r 和ln_C,并且运行速度也很快,程序用的是lorenz吸引子做的例子,运行出来的结果和一些资料上介绍的是一致的,所以个人觉得这个程序可用

我现在的疑惑就是网上有很多程序,虽然名字是一样的,但是程序的实质却不一样,弄得我都无法去辨别哪些是对的,哪些是错的
发表于 2012-1-18 11:27 | 显示全部楼层
请问楼主GP算法中参数,最小嵌入维和最大嵌入维,以及ss是根据什么设置的?
发表于 2019-7-13 20:58 | 显示全部楼层
请问楼主GP算法中参数,最小嵌入维和最大嵌入维,以及ss是根据什么设置的?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-28 15:08 , Processed in 0.153812 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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