1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab 绘花 【原创】使用matlab绘制菊花和玫瑰花

matlab 绘花 【原创】使用matlab绘制菊花和玫瑰花

时间:2018-09-13 23:53:22

相关推荐

matlab 绘花 【原创】使用matlab绘制菊花和玫瑰花

一,用matlab绘制菊花

在command窗口复制下列代码,按回车运行即可

%data base

t0=linspace(0,2*pi);

for i=1:100

if rem(i,4)==0

t1(i)=NaN

else t1(i)=t0(i)

end

if rem(i,4)==2

t2(i)=NaN

else t2(i)=t0(i)

end

end

p=linspace(0,0.25*pi);

[xx,yy]=meshgrid(-2:0.05:2);

[xxx,yyy]=meshgrid([0.01 0.01]);

%drawing process

for i=1:10

if rem(i,2)==0

a=t1

elseif rem(i,2)==1

a=t2

end

b=p

[a,b]=meshgrid(a,b)

q=i*cos(1.25*b).*sin(b)

[x,y,z]=sph2cart(a,b,q);

z=(7.5/i+0.25)*z

surf(x,y,z,31*ones(size(z)))

hold on

end

h=0.25*cos(2.5*(xx.^2+yy.^2).^0.5)+0.14;

surf(xx,yy,h,26*ones(size(h)));

hold on

c=zeros(size(xxx))

for i=1:50

surf(xxx,yyy,c,i*ones(size(c)))

hold on

end

axis equal

二,用matlab绘制玫瑰花

首先,新建m文件,复制以下代码

function y=hb(x)

[m n]=size(x);

for i=1:m

for j=1:n

if rem(x(i,j),2*pi)>=0&&rem(x(i,j),2*pi)<0.5*pi

y(i,j)=sin(2*x(i,j)-0.5*pi)+1

elseif rem(x(i,j),2*pi)>=0.5*pi&&rem(x(i,j),2*pi)<1.5*pi

y(i,j)=2

elseif rem(x(i,j),2*pi)>=1.5*pi&&rem(x(i,j),2*pi)<2*pi

y(i,j)=-cos(2*x(i,j))+1

end

end

end

end

保存后,将下列代码复制到command窗口中,按回车运行即可。

t=0:0.01*pi:2*pi

for i=1:5

r(i,:)=i-0.9:0.1:i+0.1;

end

%绘制花瓣

for i=1:5

a=r(i,:);

b=t;

[a,b]=meshgrid(a,b)

z=(log(a)+5).*hb(5*b+pi*i).*abs(sin(pi*a))

[x,y,z]=pol2cart(b,a,z)

surf(x,y,z,(40+i)*ones(size(z)))

hold on

end

%绘制花托

[xx,yy]=meshgrid(-5:0.1:5);

h=2*cos((xx.^2+yy.^2).^0.5)-0.64;

surf(xx,yy,h,27*ones(size(h)));

hold on

%绘制补色

xxx=[-0.1 0.1];

yyy=xxx;

[xxx,yyy]=meshgrid(xxx,yyy);

c=zeros(size(xxx))

for i=1:50

surf(xxx,yyy,c,i*ones(size(c)))

hold on

end

axis equal

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。