根据计盒维数原理求一维曲线分形维数的 matlab 程序
function D=FractalDim(y,cellmax)
%求输入一维信号的计盒分形维数
%y 是一维信号
%cellmax:方格子的最大边长,可以取 2 的偶数次幂次(1,2,4,8...),取大于数据长度的偶数
%D 是 y 的计盒维数(一般情况下 D>=1),D=lim(log(N(e))/log(k/e)),
if cellmax
end
N(e)=Ne;%记录每 e 下的 N(e)
end
%对 log(N(e))和 log(k/e)进行最小二乘的一次曲线拟合,斜率就是 D
r=-diff(log2(N));%去掉 r 超过 2 和小于 1 的野点数据
id=find(r<=2&r>=1);%保留的数据点
Ne=N(id);
e=NumSeg(id);
P=polyfit(log2(e),log2(Ne),1);%一次曲线拟合返回斜率和截距
D=P(1);