怎样用matlab计算分形盒维数呢!?

怎样用matlab计算分形盒维数呢!?,第1张

根据计盒维数原理求一维曲线分形维数的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<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的支持。

1、构造迭代关系;

2、进行数据整理,上一次迭代分形线长度L(n),本次迭代分形线总长度L(n+1),及网格r的大小;

3、计算分形维数fractal dimension=logr(L(n+1))/logr(L(n));

如有需要,编制过分形维数二维计算程序,发过EI文章,分形,挺有意思的数学分之之一,好好学加油。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11051512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存