⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mountain.m

📁 用来生成分形山的matlab程序
💻 M
字号:
n=128;%设置初始矩阵大小
m=4;%设置迭代次数
for i=1:n
    for j=1:n
        a(i,j)=0;
    end
end
a(1,1)=unidrnd(100,1,1);
a(n,1)=unidrnd(100,1,1);
a(n,n)=unidrnd(100,1,1);
a(1,n)=unidrnd(100,1,1);%对四个角点赋随机z轴值

for k=0:m;
    d=n/(2.^k);
    for i=d/2+1:d:(n-d/2);
        for j=d/2+1:d:(n-d/2);
            a(i,j)=(a(i-d/2,j-d/2)+a(i+d/2,j-d/2)+a(i+d/2,j+d/2)+a(i-d/2,j+d/2))/4+unidrnd(100,1,1);
            if(a(i-d/2,j)==0)a(i-d/2,j)=(a(i,j)+a(i-d/2,j+d/2)+a(i-d/2,j-d/2))/4+unidrnd(100,1,1);
                if(a(i+d/2,j)==0)a(i+d/2,j)=(a(i,j)+a(i+d/2,j+d/2)+a(i+d/2,j-d/2))/4+unidrnd(100,1,1);
                    if(a(i,j-d/2)==0)a(i,j-d/2)=(a(i,j)+a(i-d/2,j-d/2)+a(i+d/2,j-d/2))/4+unidrnd(100,1,1);
                        if(a(i,j+d/2)==0)a(i,j+d/2)=(a(i,j)+a(i-d/2,j+d/2)+a(i+d/2,j+d/2)/4)+unidrnd(100,1,1);
                        end
                    end
                end
            end
        end
    end
end%利用角点产生中心点,而后产生边中点,进行迭代
c=0;
for i=1:n
    for j=1:n
        if(a(i,j)~=0)c=c+1;
        end
    end
end%统计生成点数
d=round(sqrt(c)+0.5);
z=zeros(d,d);
l=1;k=1;
for i=1:n
   for j=1:n
       if(a(i,j)~=0)
          if(k==d)z(l,k)=a(i,j);l=l+1;k=1;
          else z(l,k)=a(i,j);k=k+1;
          end
       end
   end
end%利用数据点生成满值矩阵

x=[1:1:d];
y=x;
surf(x,y,z)
x1=1:0.025:d;
y1=1:0.025:d;
[x2,y2]=meshgrid(x1,y1);
t=interp2(x,y,z,x2,y2,'cubic');
mesh(x1,y1,t)%利用插值生成分形山



    
           

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -