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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM