我给你找个好的:
功能[ data ]=square diamond (n,initvalue ) )。
%输入n是方阵的维数2 ̄n1,放置在方阵四角顶点的初始值,
%这里设定为与4个初始值相同
% Example:
% tic;
% d=square diamond (8,5 );
%colormap(gray ); %设置渲染的颜色
%surf(d; 绘制%三维曲面
% shading flat; %每个小曲面之间不包含网格
% toc %测试执行时间
n=2^N;
DATA=Zeros(n1;
data (1,1 )=initvalue;
数据(1,n 1 )=initvalue;
data (n1,1 )=initvalue;
data(n 1,n1 )=initvalue;
数据=my try (数据,n,0.3,n );
功能[ x ]=rnd (ABS value )
%扩展的随机函数生成器。 生成绝对值小于absvalue的随机实数
x=(rand(1)-0.5 ) *2*absvalue;
功能[ data ]=my try (data,m,r,n ) )。
%square
----x----
%-----
%x- 0 -x由4个x决定中间的0
------------
%----x---
%金刚石台阶的横向部分
%line No.1
for j=1 m/2:m:n
DATA(1,j )=) DATA(1,j m/2 ) data ) 1m/2,j ) data ) 1,j-m/2 ) data (j-m/2,j ) ) )4rnd ) r );
结束
%middle
for i=1 m:m:n
for j=1 m/2:m:n
DATA(I,j )=) DATA(I,j m/2 ) data ) Im/2,j ) data(I-m/2,j ) )/4 rnd(r )
结束
结束
%line last
for j=1 m/2:m:n
DATA(n1,j )=) DATA(n1,j m/2 ) data ) 1m/2,j ) DATA(n1,j-m/2 ) data (j-m/2,j ) ) )4rnd(r
结束
%金刚石台阶的纵向部分
%line No.1
for i=1 m/2:m:n
数据(I,1 )=)数据(I,1 m/2 )数据(im/2,1 )数据(I,n 1-m/2 )数据(I-m/2,1 ) ) )4rnd ) )
结束
%middle
for i=1 m/2:m:n
for j=1 m:m:n
DATA(I,j )=) DATA(I,j m/2 ) data ) Im/2,j ) data(I-m/2,j ) )/4 rnd(r )
结束
结束
% line last
for i=1 m/2:m:n
数据(I,n 1 )=)数据(I,1 m/2 )数据(1 m/2,n 1 )数据(I,n 1-m/2 )数据(1 m/2,n 1 ) )/4rnd(r );
结束
是if(m2 )
数据=my try (数据,m/2,r/2,n ); %递归
结束