24小时热门版块排行榜    

查看: 1188  |  回复: 1

smy1982

木虫 (正式写手)

[求助] 分形图康托尔地毯的matlab程序模拟

生成一张康托尔地毯分形图,特点是在较大方块的四周生产8个小方块,后者边长是前者的1/3,逐代繁衍,生产下图所示

-----matlab程序有错,请高手指点------------
程序如下
----------------------------------------------------------------
function [I]=Fractal_situoer(M,N,x0,y0,a,k)
% %M,N,像素数;x0,y0,中心位置;a正方形的边长的一半,k是迭代次数
% %例子:
% %Fractal_situoer(486,486,324,324,81,4);
% I0=FractalExm11(M,N,x0,y0,a,k);
I=zeros(M,N);
x=x0-a:1:x0+a-1;
y=y0-a:1:y0+a-1;
I(x,y)=1;
n=[-1 -1 -1 0 0 1 1 1];
m=[-1 0 1 -1 1 -1 0 1];
newa=a/3;
newx0=x0+2*a.*n;
newy0=y0++2*a.*m;
for i=1:8   
% x1=x0+2*a;y1=y0;
x=newx0(i)-newa:1:newx0(i)+newa-1;
y=newy0(i)-newa:1:newy0(i)+newa-1;
I(x,y)=1;
if k>1
I=Fractal_situoer(M,N,newx0(i),newy0(i),newa,k-1);%

end
end
——————————————————————————————
clear all
clc
N=486;M=486;k=2;
x0=243;y0=243;a=81;
% I0=zeros(M,N);
A=Fractal_situoer(M,N,x0,y0,a,k);
imshow(A)
--------------
程序中不加红色标注的语句时,可产生一代,加上就以后出错了。
感觉问题出在赋值上,但绞尽脑汁没弄出来。

[ Last edited by smy1982 on 2013-4-27 at 17:15 ]
回复此楼

» 猜你喜欢

如果你曾歌颂黎明,那么也请你拥抱黑夜。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xgh918

铜虫 (小有名气)


感谢参与,应助指数 +1
xiegangmai: 金币-1, 应助指数-1, 谢谢参与!非应助请勿选择“应助回帖” 2013-05-01 22:26:04
挺不错啊,呵呵,艺术大于科研哈
2楼2013-04-30 08:12:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 smy1982 的主题更新
信息提示
请填处理意见