function tree(n,a,b) % tree(8,pi/8,pi/8),n为分形树迭代次数 %a,b为分枝与竖直方向夹角 %x1,y1,x2,y2为初始线段两端点坐标,nn为迭代次数 n=8;a=pi/6;b=pi/6; x1=0;y1=0; x2=0;y2=1; plot([x1,x2],[y1,y2]) hold on [X,Y]=tree1(x1,y1,x2,y2,a,b); hold on W=tree2(X,Y); w1=W(:,1:4); w2=W(:,5:8); % w为2^k*4维矩阵,存储第k次迭代产生的分枝两端点的坐标, % w的第i(i=1,2,…,2^k)行数字对应第i个分枝两端点的坐标 w=[w1;w2]; for k=1:n          for i=1:2^k          [X,Y]=tree1(w(i,1),w(i,2),w(i,3),w(i,4),a,b);          W(i,:)=tree2(X,Y);           end       w1=W(:,1:4);    w2=W(:,5:8);    w=[w1;w2]; end  %由每个分枝两端点坐标(x1,y1),(x2,y2)产生两新点的坐标(x3,y3),(x4,y4),画两分枝图形,并把%(x2,y2)连同新点横、纵坐标分别存储在数组X,Y中 function [X,Y]=tree1(x1,y1,x2,y2,a,b) L=sqrt((x2-x1)^2+(y2-y1)^2); if (x2-x1)==0     a=pi/2;    else if (x2-x1)<0    a=pi+atan((y2-y1)/(x2-x1));    else    a=atan((y2-y1)/(x2-x1));     end end x3=x2+L*2/3*cos(a+b); y3=y2+L*2/3*sin(a+b); x4=x2+L*2/3*cos(a-b); y4=y2+L*2/3*sin(a-b); a=[x3,x2,x4]; b=[y3,y2,y4]; plot(a,b) axis equal hold on X=[x2,x3,x4]; Y=[y2,y3,y4];  %把由函数tree1生成的X,Y顺次划分为两组,分别对应两分枝两个端点的坐标,并存储在一维%数组w中 function w=tree2(X,Y) a1=X(1);b1=Y(1); a2=X(2);b2=Y(2); a3=X(1);b3=Y(1); a4=X(3);b4=Y(3); w=[a1,b1,a2,b2,a3,b3,a4,b4];