Weierstrass-Mandelbrot 分形曲面MATLAB程序
Weierstrass-Mandelbrot 分形曲面MATLAB程序
Weierstrass-Mandelbrot (维斯特拉斯-曼德勃罗特)分形曲面的计算公式如下
例如当Ds为2.3,lambda为1.5时
生成该随机曲面的函数代码如下,对无穷级数,取前nmax项作为近似。
function genWM(Ds,lambda,nmax)
%GENWM 生成W-M 随机曲面
% 此处显示详细说明
% lambda
% Ds 分形维数
if nargin < 3
nmax = 10;
if nargin < 2
lambda = 1.5;
if nargin < 1
Ds = 2.3;
end
end
end
% nmax = 10;
An = 2*pi*rand(nmax,1);
Bn = 2*pi*rand(nmax,1);
Cn = randn(nmax,1);
x = 0:0.1:6;
y = 0:0.1:6;
[X,Y] = meshgrid(x,y);
% lambda = 1.5;
% Ds = 2.05;
Z= zeros(length(x),length(y));
for ni = 1:nmax
t = -(3-Ds)*ni;
temp1 = X.*cos(Bn(ni)) + Y.*sin(Bn(ni));
zn = Cn(ni)*lambda^t.*sin(lambda^ni.*temp1+An(ni));
Z = zn + Z;
end
surf(X,Y,Z);
xlabel('X');
ylabel('Y');
zlabel('Z');
filename = ['W-M fractal surface','_Ds',num2str(Ds),'_lambda',num2str(lambda),'.bmp'];
saveas(gcf,filename,'bmp');
end
posted on 2022-03-16 17:29 MultiSimOpt 阅读(2765) 评论(9) 编辑 收藏 举报