📄 boxcounting.txt
字号:
%本程序只能计算时间序列的盒维数
%box11
clear
data1; %存放时间序列的数据文件,共6列
c=0;
n=2^10;
ll=1:1383-1220+1;
b(:,1)=ll';
b(:,2)=aaa(1220:1383,6)*100; %aaa是data1中的函数,里面是6列时间序列
%划分不同大小的格子,并统计不同量级格子中含有数据的格子数
k=2;
for p=1:9
...k=2^p
...stepx=(max(b(:,1))-min(b(:,1))+1)/k;
...stepy=(max(b(:,2))-min(b(:,2))+1)/k;
...mm(p)=0;
...for i=1:k
......i
......for j=1:k
.........lowx=stepx*(i-1)+min(b(:,1))-0.5;
.........upx =stepx*i+min(b(:,1))-0.5;
.........lowy=stepy*(j-1)+min(b(:,2))-0.5;
.........upy =stepy*j+min(b(:,2))-0.5;
.........aa=find(b(:,1)>=lowx & b(:,1)<upx & b(:,2)>=lowy & b(:,2)<upy);
.........if ~isempty(aa)
............mm(p)=mm(p)+1;
.........end
......end
...end
end
%在双对数坐标系中画点和曲线
x(1)=1;
for i=2:9
x(i)=2*x(i-1);
end
x=log(x);
y=log(mm);
plot(x,y,'*')
hold on;
v=polyfit(x(1:6),y(1:6),1);
yy=polyval(v,x);
plot(x,yy);
hold off;
title(v(1));
关联维数程序:
% estimation of the correlation dimension
% Grassberger and Procaccia algorithm
r=0.50;
m=22;
t=5;
dr=0.10;
keyboard; % input r,m,t,dr
n=length(fname);
mm=n-(m-1)*t;
eeaa=zeros(mm,m);
for i=1:mm
for j=1:m
eeaa(i,j)=fname(i+(j-1)*t);
end;
end;
fenmu=mm*(mm-1);
mmm=250/r;
eebb=zeros(mmm,4);
h=1;
for ij=r:r:250
k=0;
for i=1:mm-1
for j=i+1:mm
hh=norm(eeaa(i,-eeaa(j,,inf); %(eeaa(i,:)-eeaa(j,:),inf);
if hh<ij
k=k+2;
end;
end;
end;
crm=k/fenmu;
eebb(h,1)=k;
eebb(h,2)=crm;
eebb(h,3)=log2(crm);
eebb(h,4)=log2(ij);
h=h+1;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -