ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:553.37KB ,
资源ID:7028049      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7028049.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(经典图形的Matlab.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

经典图形的Matlab.docx

1、经典图形的Matlab分形几何中一些经典图形的Matlab画法 来源: 杨昊的日志 (1)Koch曲线程序koch.mfunction koch(a1,b1,a2,b2,n)%koch(0,0,9,0,3)%a1,b1,a2,b2为初始线段两端点坐标,n为迭代次数a1=0;b1=0;a2=9;b2=0;n=3;%第i-1次迭代时由各条线段产生的新四条线段的五点横、纵坐标存储在数组A、B中A,B=sub_koch1(a1,b1,a2,b2);for i=1:n for j=1:length(A)/5; w=sub_koch2(A(1+5*(j-1):5*j),B(1+5*(j-1):5*j);

2、for k=1:4 AA(5*4*(j-1)+5*(k-1)+1:5*4*(j-1)+5*(k-1)+5),BB(5*4*(j-1)+5*(k-1)+1:5*4*(j-1)+5*(k-1)+5)=sub_koch1(w(k,1),w(k,2),w(k,3),w(k,4); end end A=AA; B=BB;endplot(A,B)hold onaxis equal%由以(ax,ay),(bx,by)为端点的线段生成新的中间三点坐标并把这五点横、纵坐标依次分别存%储在数组A,B中function A,B=sub_koch1(ax,ay,bx,by)cx=ax+(bx-ax)/3;cy=ay+

3、(by-ay)/3;ex=bx-(bx-ax)/3;ey=by-(by-ay)/3;L=sqrt(ex-cx).2+(ey-cy).2);alpha=atan(ey-cy)./(ex-cx);if (ex-cx)0 alpha=alpha+pi;enddx=cx+cos(alpha+pi/3)*L;dy=cy+sin(alpha+pi/3)*L;A=ax,cx,dx,ex,bx;B=ay,cy,dy,ey,by;%把由函数sub_koch1生成的五点横、纵坐标A,B顺次划分为四组,分别对应四条折线段中%每条线段两端点的坐标,并依次分别存储在4*4阶矩阵k中,k中第i(i=1,2,3,4)行数字

4、代表第%i条线段两端点的坐标function w=sub_koch2(A,B)a11=A(1);b11=B(1);a12=A(2);b12=B(2);a21=A(2);b21=B(2);a22=A(3);b22=B(3);a31=A(3);b31=B(3);a32=A(4);b32=B(4);a41=A(4);b41=B(4);a42=A(5);b42=B(5);w=a11,b11,a12,b12;a21,b21,a22,b22;a31,b31,a32,b32;a41,b41,a42,b42;(2)Levy 曲线程序levy.mfunction levy(n)% levy(16),n为levy

5、曲线迭代次数%x1,y1,x2,y2为初始线段两端点坐标,nn为迭代次数n=16;x1=0;y1=0;x2=1;y2=0;%第i-1次迭代时由各条线段产生的新两条线段的三端点横、纵坐标存储在数组X、Y中X,Y=levy1(x1,y1,x2,y2);for i=1:n for j=1:length(X)/3 w=levy2(X(1+3*(j-1):3*j),Y(1+3*(j-1):3*j); XX(3*2*(j-1)+1:3*2*(j-1)+3),YY(3*2*(j-1)+1:3*2*(j-1)+3)=levy1(w(1,1),w(1,2),w(1,3),w(1,4); XX(3*2*(j-1)

6、+3+1:3*2*(j-1)+3+3),YY(3*2*(j-1)+3+1:3*2*(j-1)+3+3)=levy1(w(2,1),w(2,2),w(2,3),w(2,4); end X=XX; Y=YY;endplot(X,Y)hold onaxis equal%由以(x1,y1),(x2,y2)为端点的线段生成新的中间点坐标并把(x1,y1),(x2,y2)连同新点横、纵坐%标依次分别存储在数组X,Y中function X,Y=levy1(x1,y1,x2,y2)x3=1/2*(x1+x2+y1-y2);y3=1/2*(-x1+x2+y1+y2);X=x1,x3,x2;Y=y1,y3,y2;

7、%把由函数levy1生成的三点横、纵坐标X,Y顺次划分为两组,分别对应两条折线段中每条线%段两端点的坐标,并依次分别存储在2*4阶矩阵w中,w中第i(i=1,2)行数字代表第i条线段%两端点的坐标function w=levy2(X,Y)a11=X(1);b11=Y(1);a12=X(2);b12=Y(2);a21=X(2);b21=Y(2);a22=X(3);b22=Y(3);w=a11,b11,a12,b12;a21,b21,a22,b22;(3) 分形树程序tree.hfunction tree(n,a,b)% tree(8,pi/8,pi/8),n为分形树迭代次数%a,b为分枝与竖直方

8、向夹角%x1,y1,x2,y2为初始线段两端点坐标,nn为迭代次数n=8;a=pi/8;b=pi/8;x1=0;y1=0;x2=0;y2=1;plot(x1,x2,y1,y2)hold onX,Y=tree1(x1,y1,x2,y2,a,b);hold onW=tree2(X,Y);w1=W(:,1:4);w2=W(:,5:8);% w为2k*4维矩阵,存储第k次迭代产生的分枝两端点的坐标,% w的第i(i=1,2,2k)行数字对应第i个分枝两端点的坐标w=w1;w2;for k=1:n for i=1:2k X,Y=tree1(w(i,1),w(i,2),w(i,3),w(i,4),a,b)

9、; 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);

10、 endendx3=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 equalhold onX=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

11、,b1,a2,b2,a3,b3,a4,b4;(4)IFS算法画Sierpinski三角形程序sierpinski_ifs.hfunction sierpinski_ifs(n,w1,w2,w3)%sierpinski_ifs(10000,1/3,1/3,1/3)%w1,w2,w3出现频率n=10000;w1=1/3;w2=1/3;w3=1/3;M1=0.5 0 0 0 0.5 0;M2=0.5 0 0.5 0 0.5 0;M3=0.5 0 0.25 0 0.5 0.5;x=0;y=0;% r为0,1区间内产生的n维随机数组r=rand(1,n);B=zeros(2,n);k=1;% 当0r(i

12、)1/3时,进行M1对应的压缩映射;% 当1/3=r(i)2/3时,进行M2对应的压缩映射;% 当2/3=r(i)1时,进行M3对应的压缩映射;for i=1:n if r(i)w1 a=M1(1);b=M1(2);e=M1(3);c=M1(4);d=M1(5);f=M1(6); else if r(i)w1+w2 a=M2(1);b=M2(2);e=M2(3);c=M2(4);d=M2(5);f=M2(6); else if r(i)0 alpha=atan(wy/wx); end if wx0 alpha=pi+atan(wy/wx); end if wx=0 alpha=pi/2; en

13、d alpha=alpha/2; r=sqrt(wx2+wy2); if A(i)0.5 x=2*x; y=2*y-1; else if x=0.5 x=2*x-1; y=2*y; else x=2*x; y=2*y; end if x2+y2r break; end end if k=n B(1,w)=i; B(2,w)=j; w=w+1; end endendplot(B(1,:),B(2,:),.,markersize,0.1) (7) 元胞自动机算法画Sierpinski三角形程序 一维元胞自动机sierpinski_ca1.hfunction sierpinski_ca1(m,n)%

14、sierpinski_ca1(1000,3000)m=1000;n=3000;x=1;y=1;t=1;w=zeros(2,m*n);s=zeros(m,n);s(1,fix(n/3)=1;for i=1:m-1 for j=2:n-1 if (s(i,j-1)=1&s(i,j)=0&s(i,j+1)=0)|(s(i,j-1)=0&s(i,j)=0&s(i,j+1)=1) s(i+1,j)=1; w(1,t)=x+3+3*j; w(2,t)=y+5*i; t=t+1; end endendplot(w(1,:),w(2,:),.,markersize,1) 二维元胞自动机sierpinski_c

15、a2.hfunction sierpinski_ca2(m,n)%sierpinski_ca2(400,400)m=400;n=400;t=1;w=zeros(2,m*n);s=zeros(m,n);s(m/2,n/2)=1;for i=m/2:-1:2,m/2:m-1 for j=n/2:-1:2,n/2:n-1 if mod(s(i-1,j-1)+s(i,j-1)+s(i+1,j-1)+s(i-1,j)+s(i+1,j)+s(i-1,j+1)+s(i,j+1)+s(i+1,j+1),2)=1 s(i,j)=1; w(1,t)=i; w(2,t)=j; t=t+1; end endendpl

16、ot(w(1,:),w(2,:),.,markersize,0.1)(8) IFS算法画Helix曲线程序helix_ifs.hfunction helix_ifs(n,w1,w2,w3)%helix_ifs(20000,0.9,0.05,0.05)%w1,w2,w3为出现频率n=20000;w1=0.9;w2=0.05;w3=0.05;M1=0.787879 -0.424242 1.758647 0.242424 0.859848 1.408065;M2=-0.121212 0.257576 -6.721654 0.05303 0.05303 1.377236;M3=0.181818 -0.

17、136364 6.086107 0.090909 0.181818 1.568035;x=0;y=0;% r为0,1区间内产生的n维随机数组r=rand(1,n);B=zeros(2,n);k=1;% 当0r(i)1/3时,进行M1对应的压缩映射;% 当1/3=r(i)2/3时,进行M2对应的压缩映射;% 当2/3=r(i)1时,进行M3对应的压缩映射;for i=1:n if r(i)w1 a=M1(1);b=M1(2);e=M1(3);c=M1(4);d=M1(5);f=M1(6); else if r(i)w1+w2 a=M2(1);b=M2(2);e=M2(3);c=M2(4);d=M2(5);f=M2(6); else if r(i)w1+w2+w3 a=M3(1);b=M3(2);e=M3(3);c=M3(4);d=M3(5);f=M3(6); end end endx=a*x+b*y+e;y=c*x+d*y+f;B(1,k)=x; B(2,k)=y; k=k+1;endplot(B(1,:),B(2,:),.,markersize,0.1)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1