jjcao 发表于 2015-5-15 19:53

计算时间序列数据点单一分形盒维数

我这有一个计算时间序列数据点单一分形盒维数的Matlab程序,分享一下。
T=0.5*mean(x);
p=11;%p即最终需要画的点的数目或划分盒子的次数
for j=1:(p-1)
      n(j+1)=round(10^(j*((log10(length(x)))/(p-1))));
end
n(1)=1;%n为每次划分的份数
L=n.\length(x);%每次的盒子长度
L=sort(L);%L为升序排列
n=fliplr(n);%n为降序排列
%以下部分求N值   

      for i=1:p
          N(i)=0;
          for j=1:n(i)
            m(j+1)=round(j*L(i));
          end
          m(1)=1;
          %m表示在每次划分盒子下,每个划分点在时间轴上的坐标值(即横轴值)
          for k=1:n(i)
          t=x(m(k):m(k+1));%对每个时间序列间隔构造一个新的时间序列
            if length(find(t>T))~=0
               N(i)=N(i)+1;
            else N(i)=N(i)
            end
          end
          N(i);
      end
   a=log10(L);b=log10(N);
plot(a,b,'*')
a
b

页: [1]
查看完整版本: 计算时间序列数据点单一分形盒维数