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<length(y)
error('cellmax must be larger than input signal!')
end
L=length(y)%输入样点的个数
y_min=min(y)
%移位 *** 作,将y_min移到坐标0点
y_shift=y-y_min
%重采样,使总点数等于cellmax+1
x_ord=[0:L-1]./(L-1)
xx_ord=[0:cellmax]./(cellmax)
y_interp=interp1(x_ord,y_shift,xx_ord)
%按比例缩放y,使最大值为2^^c
ys_max=max(y_interp)
factory=cellmax/ys_max
yy=abs(y_interp*factory)
t=log2(cellmax)+1%叠代次数
for e=1:t
Ne=0%累积覆盖信号的格子的总数
cellsize=2^(e-1)%每次的格子大小
NumSeg(e)=cellmax/cellsize%横轴划分成的段数
for j=1:NumSeg(e) %由横轴第一个段起通过计算纵轴跨越的格子数累积N(e) begin=cellsize*(j-1)+1%每一段的起始
tail=cellsize*j+1
seg=[begin:tail]%段坐标
yy_max=max(yy(seg))
yy_min=min(yy(seg))
up=ceil(yy_max/cellsize)
down=floor(yy_min/cellsize)
Ns=up-down% 本段曲线占有的格子数
Ne=Ne+Ns%累加每一段覆盖曲线的格子数
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究亏脊枝、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中销敏在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用野磨C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
我最近也在研究图形分形维数。这个可以在matlab中用Fractlab这个工具箱氏渗,这个工具箱可以在网上下载。网上也有fraclab的使用说明,打开界面后把图导进去,选择维数计算,宴裂然后选择网格数之类的就可以了,我已经试过了。但感觉算法有点粗糙。希望能帮歼祥脊到你。另外还有一个方法,用ARCGIS软件,我还没有尝试,只能算出一种维数,类似线路覆盖维数。算维数一般有两种方法,一种是网格法,一种是尺度变换法。前者针对方形图形,后者主要是圆形。
采用MATLAB,编写过分形维数计算程序,发过册厅历两篇文章州搜,《压头作用下岩石破碎过程分形特性研究》及《非均质岩石单轴压缩试验破坏伏枝过程细观模拟及分形特性》,已经成功运行,如需要,可联系。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)