Weierstrass-Mandelbrot 分形曲面MATLAB程序

Weierstrass-Mandelbrot 分形曲面MATLAB程序

Weierstrass-Mandelbrot (维斯特拉斯-曼德勃罗特)分形曲面的计算公式如下

image-20220316170432166

例如当Ds为2.3,lambda为1.5时

W-M fractal surface_Ds2.3_lambda1.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编辑  收藏  举报

导航