生成一张康托尔地毯分形图,特点是在较大方块的四周生产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 ] |