用matlab绘制的漂亮图形
十节MATLAB绘图ppt课件
%axis([0 10 0 1])
MATLAB绘图
画圆 theta=linspace(0,2*pi); plot(1+0.5*cos(theta),2+0.5*sin(theta)) axis equal %使图形对称
MATLAB绘图
图形注释和可视化提高 1. 使用坐标轴,图形标题,曲线标注,填充
区域和添加文本 2. 改变轴、曲线和文本的属性 3. 使用希腊字母、数学符号、上下标等
MATLAB绘图
例 x=0:0.05:6; plot(x,cos(x),'k',x,1./cosh(x),'k',[4.73 4.73],[-1
1],'k') xlabel('x') ylabel('value of function') title('visualizaton of two intersecting curves') text(4.8,-.5,'x=4.73') text(2.1,.3,'1/cosh(x)') text(1.2,-.4,'cos(x)')
MATLAB绘图
plot中属性设置 x=-pi:pi/10:pi; y=tan(sin(x))-sin(tan(x)); plot(x,y,'-- rs', 'LineWidth',2, … 'MarkerEdgeColor','k', … 'MarkerFaceColor','g', … 'MarkerSize',10)
陈泽灏 MATLAB巧绘七彩玫瑰线
-0.1
0 向日葵
0.1
0.2
0.3
0.4
0.5
荷花 2.5
2
1.5
1
0.5
0
-0.5
-1 -2
-1.5
-1
-0.5
0
0.5
1
1.5
2
狗尾巴草 2.5
2
1.5
1
0.5
0
-0.5
-1
0.6
-2
-1
0
1
2
0.3
0.4
0.2
0.2
0.1
0
0
-0.2ቤተ መጻሕፍቲ ባይዱ
-0.1
-0.4
-0.2
-0.6
-0.3
-0.8 -0.8
0.5
0.5
270 n=4
300
240
270 n=5
300
图2
对比图 1 和图 2,可以看出,当把 限制在 [0, ] 内时,玫瑰线就已经形成了 n 个花瓣,当 t 在 [ ,2 ] 内时,又新增了 n 个花瓣;只是若 n 为偶数,新增的 n 个花瓣不与原来的花瓣重合;若 n 为奇数,新增的 n 个花瓣与原来的花瓣重合罢 了。 进一步,令 n=3,我们在 [0, / 3],[ / 3,2 / 3],[2 / 3, ] 三个区间里分别用红、 绿、蓝三种颜色画玫瑰线,结果如图 3.
MATLAB 巧绘七彩玫瑰线
西工大附中高 2013 届 13 班 陈泽灏
摘要 研究了玫瑰线的性质及 matlab 的作图功能。 在认识玫瑰线性质的基础 上,以 matlab 为工具,用玫瑰线或其一部分作为基本线条,配以心形线以及直 线,画出了各种漂亮的图案,从而对数学的实用性有了更加深刻的认识。 关键词 玫瑰线;matlab;性质 先看看这些漂亮的图案吧!让我来告诉你,它们是用 matlab 画的,而且过 程非常简单!因为所有的这些图案虽然各不相同,但它们都是用一种线条画出来 的!它就是------ 玫瑰线。对,玫瑰线! 1.什么是玫瑰线 什么是玫瑰线呢?玫瑰线是一族平面曲线,又叫格拉金曲线,意大利数学 家格拉金是第一个研究玫瑰线的人(1728 年) 。玫瑰线的极坐标方程为
四讲Matlab绘图ppt课件精品文档
p l o t (. . ., s t r ) 使用字符串s t r指定的颜
色和线型进行绘图。表1 中列出了s t r可
以取的值。
2019/10/12
4
一、二维图形:表一
点
型
.
点
^
正三角
*
星号
v
倒三角
OO
s
正方形
++
d
菱形
X 乘号
p
五角星
<
左三角
h
六角星
>
右三角
none 无点
2019/10/12
5
2019/10/12
26
三、三维图形
m e s h ( X,Y,Z ) 将矩阵Z中的各个元素作 为矩形网格上的高度,对这些值绘图,
并且将相邻的点连接形成三维网格表面 图。颜色由高度,即Z中的元素指定。
s u r f ( X , Y , Z) 绘制出由坐标(Xi j, Yi j, Zi j)确定的表面图形。如果X和Y分别是长 度为m和n的向量,那么, Z必须为m×n 的矩阵,并且表面是由(Xj, Yi, Zi j)来定 义的。
一、二维图形:表一
线型
颜色
--. : none
实线 m 虚线 b 点划线 c 点线 w 无线 r
品红色 蓝色 灰色 白色 红色
颜色
k
g
绿色 y
黑色 黄色
2019/10/12
6
一、二维图形
1.2彗星图形
c o m e t ( x , y ) 绘制向量y对向量x的彗星 轨线。如果只给出一个向量,则用该向 量对其下标值绘图。
2019/10/12
10
第五章matlab绘图
2019/11/1
16
2. 坐标控制
axis函数的调用格式为:
axis([xmin xmax ymin ymax zmin zmax]) axis函数功能丰富,常用的格式还有: axis equal:纵、横坐标轴采用等长刻度。 axis square:产生正方形坐标系(缺省为矩形)。 axis auto:使用缺省设置。 axis off:取消坐标轴。 axis on:显示坐标轴。
2019/11/1
12
曲线的色彩、线型和数据点型参数定义
颜色 符号 b g r c
m y k
2019/11/1
含 义 数据 点型
蓝色 . 绿色 x 红色 + 篮绿色 h
紫红色 * 黄色 s 黑色 d
含 义线 型含 义
点
-
X符号 :
+号 -.
六 角 星 -形
星号 (空白)
方形
菱形
实线 点线 点划线 虚线
和-1.5-6i。
2019/11/1
26
5.3 隐函数绘图
MATLAB提供了一个ezplot函数绘制隐函
数图形,下面介绍其用法。
(1) 对于函数f = f(x),ezplot函数的调用格 式为:
ezplot(f):在默认区间-2π<x<2π绘制f = f(x) 的图形。
ezplot(f, [a,b]):在区间a<x<b绘制f = f(x)的 图形。
例5-11 应用上述函数作图。
2019/11/1
23
2. 极坐标图
polar函数用来绘制极坐标图,其调用格式 为: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标矢径, 选项的内容与plot函数相似。
matlab画立体蝴蝶的代码
matlab画立体蝴蝶的代码Matlab是一款强大的工具,可以帮助我们完成许多数据分析、数学建模和图像处理等工作。
在Matlab中,我们可以用简单的代码绘制出许多精美的图像,例如立体蝴蝶。
下面就来介绍一下如何使用Matlab绘制立体蝴蝶的代码。
1.准备工作我们需要在Matlab中打开一个新的文件,然后输入下面这句代码创建一个3D画布:figure('units','normalized','outerposition',[0 0 1 1])这句代码将创建一个全屏的3D画布,供我们后续用来绘制立体蝴蝶。
2.绘制蝴蝶的翅膀接下来,我们需要定义蝴蝶的两个翅膀,具体代码如下:t = 0:pi/10:2*pi;x = sin(t).*(exp(cos(t))-2*cos(4*t)-sin(t/12).^5);y = cos(t).*(exp(cos(t))-2*cos(4*t)-sin(t/12).^5);z = sin(t/2).^2.*cos(5*t+pi/2);plot3(x,y,z,'r','LineWidth',2)这段代码的意思是先设置一个参数t,然后用该参数计算出x、y、z坐标分别对应蝴蝶翅膀上的点的位置。
最后使用plot3函数将这些点连接起来,形成一个立体的蝴蝶翅膀。
这时我们已经完成了蝴蝶的一只翅膀的绘制。
接下来我们需要将另一只翅膀按照一定的规律旋转、平移后绘制出来。
代码如下:hold onfor i=1:3xx = x*cos(pi*i/3) + y*sin(pi*i/3) - 5*(cos(pi*i/3)+1)/2; yy = -x*sin(pi*i/3) + y*cos(pi*i/3);zz = z+2*i;plot3(xx,yy,zz,'r','LineWidth',2)end这段代码首先使用for循环来遍历翅膀的三个位置。
利用Matlab绘制有趣图像的示例代码
利⽤Matlab绘制有趣图像的⽰例代码⽬录1.随机樱花树2.苹果绘制3.南⽠绘制4.⼀堆三⾓形绘制5.⽉饼绘制6.⼤钻⽯绘制7.有趣曲线18.有趣曲线29.有趣曲线3——蝴蝶曲线10.有趣曲线4——⼼形曲线11.有趣曲线512.会害羞的含羞草13.随机雪景1.随机樱花树function sakura% @author:slandarer% 随机形状⼆叉树樱花树绘制hold on,axis equalaxis(0.5+[-10,50,0,50])set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w')set(gca,'color',[0.5020 0.5020 0.5020])length_trunk=6;width_trunk=4;k1=0.9;k2=0.8;number_branch=15;alp=pi/10;length_branch=k1*length_trunk;width_branch=k2*width_trunk;trunk=[12,0;12,length_trunk];plot(trunk(:,1),trunk(:,2),'color',[0 0 0],'Linewidth',width_trunk)begins=[trunk(2,:),pi/2,1];grow=begins;plotdata=[0 0 0 0 0 0 0 0];plotdata(1,:)=[];for i=1:number_branchcontrol=randi(25,[length(grow(:,1)),1])>=10;ag=grow(:,3);l=length(ag);parta=[length_branch.*k1.^grow(:,4).*cos(ag+ones(l,1)*alp),length_branch.*k1.^grow(:,4).*sin(ag+ones(l,1)*alp),ones(l,1)*alp,ones(l,1)]; partb=[length_branch.*k1.^grow(:,4).*cos(ag-ones(l,1)*alp),length_branch.*k1.^grow(:,4).*sin(ag-ones(l,1)*alp),-ones(l,1)*alp,ones(l,1)]; parta2=[0.8.*length_branch.*k1.^grow(:,4).*cos(ag),0.8.*length_branch.*k1.^grow(:,4).*sin(ag),zeros(l,1),ones(l,1)];partb2=[0.8.*length_branch.*k1.^grow(:,4).*cos(ag),0.8.*length_branch.*k1.^grow(:,4).*sin(ag),zeros(l,1),ones(l,1)];parta=control.*parta+(1-control).*parta2;partb=control.*partb+(1-control).*partb2;parta=parta+grow;partb=partb+grow;congress=[parta;partb];grow=[grow;grow];judge=[grow,congress];judge=unique(judge,'rows');grow=judge(:,5:end);plotdata=[plotdata;judge];endfor i=1:number_branchtemp_w=width_branch*0.8^i;temp_branch=plotdata(plotdata(:,4)==i,:);plx=[temp_branch(:,1),temp_branch(:,5)];ply=[temp_branch(:,2),temp_branch(:,6)];plx=plx';ply=ply';plot(plx,ply,'color',[0 0 0]+i*[0.3020 0.3020 0.3020]./number_branch,'Linewidth',temp_w)endbloom_pos=plotdata(plotdata(:,8)==number_branch+1,[5,6]);scatter(bloom_pos(:,1),bloom_pos(:,2),10,'CData',[0.8549 0.6824 0.6824]) bloom_pos=plotdata(plotdata(:,8)==number_branch,[5,6]);scatter(bloom_pos(:,1),bloom_pos(:,2),8,'CData',[0.7451 0.5961 0.5961].*0.97) end2.苹果绘制function appleG[u,v]=meshgrid(linspace(-pi,pi,100));XMesh=(1+cos(v)).*cos(u)+0.085.*cos(5.*u)+(0.994.*v./pi).^100;YMesh=(1+cos(v)).*sin(u);ZMesh=(6.*sin(v)+2.*cos(v)-2.9.*log(1-v./pi))./4.2;ax=gca;ax.DataAspectRatio=[1 1 1];hold on;grid onsurf(XMesh,YMesh,ZMesh,'FaceColor',[140,192,30]./255,'EdgeColor','none')view(45,25)h=light;h.Color=[1 1 1];h.Style='infinite';end3.南⽠绘制% 构造⽹格[t,p]=meshgrid(linspace(0,2*pi,200),linspace(0,pi-.05,200));% ⼆元分段函数foutline=@(t,p)(p<=.14).*90.*cos(7.*p)+(p>.14).*(cos(20.*t)+70).*(p.*(pi-p+.1)).^.2; % 球⾯坐标转化为X,Y,Zh=cos(p).*foutline(t,p);R=sin(p).*foutline(t,p);R=R;X=cos(t).*R;Y=sin(t).*R;% 颜⾊矩阵构造CMap=ones([size(t),3]);tMap=ones(size(t));c1=[253,158,3]./255;c2=[76,103,86]./255;for i=1:3tMap(:,:)=c1(i);tMap(p<=.14)=c2(i);CMap(:,:,i)=tMap;endfigure()surf(X,Y,h,'CData',CMap,'EdgeColor',[0,0,0],'EdgeAlpha',.2)4.⼀堆三⾓形绘制function tritritri% @author:slandarerhold on,axis equalaxis([-10,10,-10,10])set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w')set(gca,'color','w')for N=1:5drawTri([0,0],[cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*5,...[cos(pi/2+pi/5+2*N*pi/5),sin(pi/2+pi/5+2*N*pi/5)].*5,10)drawTri([0,0],[cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*5,...[cos(pi/2-pi/5+2*N*pi/5),sin(pi/2-pi/5+2*N*pi/5)].*5,10)endL5=5/sin(pi/2-pi/10)*sin(pi/5);L5s=(5+L5)/sin(3*pi/10)*sin(3*pi/5);for N=1:5drawPent([cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*5,...[cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*(5+L5),...[cos(pi/2+pi/10+2*N*pi/5),sin(pi/2+pi/10+2*N*pi/5)].*L5s,...[cos(pi/2+pi/5+2*N*pi/5),sin(pi/2+pi/5+2*N*pi/5)].*(5+L5),...[cos(pi/2+pi/5+2*N*pi/5),sin(pi/2+pi/5+2*N*pi/5)].*5,15)drawPent([cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*5,...[cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*(5+L5),...[cos(pi/2-pi/10+2*N*pi/5),sin(pi/2-pi/10+2*N*pi/5)].*L5s,...[cos(pi/2-pi/5+2*N*pi/5),sin(pi/2-pi/5+2*N*pi/5)].*(5+L5),...[cos(pi/2-pi/5+2*N*pi/5),sin(pi/2-pi/5+2*N*pi/5)].*5,15)end% 功能函数================================================================= function drawTri(A,B,C,times)LW=1.2;COLOR=[0 0 0];k=1/6;k2=0.8;plot([A(1);B(1)],[A(2);B(2)],'color',COLOR,'Linewidth',LW)plot([B(1);C(1)],[B(2);C(2)],'color',COLOR,'Linewidth',LW)plot([C(1);A(1)],[C(2);A(2)],'color',COLOR,'Linewidth',LW)for i=1:timesb=k*(C-B)+B;plot([A(1);b(1)],[A(2);b(2)],'color',COLOR,'Linewidth',LW);B=b;pause(0.01)c=k*(A-C)+C;plot([B(1);c(1)],[B(2);c(2)],'color',COLOR,'Linewidth',LW);C=c;pause(0.01)a=k*(B-A)+A;plot([C(1);a(1)],[C(2);a(2)],'color',COLOR,'Linewidth',LW);A=a;pause(0.01)LW=LW*k2;endendfunction drawPent(A,B,C,D,E,times)LW=1.2;COLOR=[0 0 0];k=1/4;k2=0.9;plot([A(1);B(1)],[A(2);B(2)],'color',COLOR,'Linewidth',LW)plot([B(1);C(1)],[B(2);C(2)],'color',COLOR,'Linewidth',LW)plot([C(1);D(1)],[C(2);D(2)],'color',COLOR,'Linewidth',LW)plot([D(1);E(1)],[D(2);E(2)],'color',COLOR,'Linewidth',LW)plot([E(1);A(1)],[E(2);A(2)],'color',COLOR,'Linewidth',LW)for i=1:timesb=k*(C-B)+B;plot([A(1);b(1)],[A(2);b(2)],'color',COLOR,'Linewidth',LW);B=b;pause(0.01)c=k*(D-C)+C;plot([B(1);c(1)],[B(2);c(2)],'color',COLOR,'Linewidth',LW);C=c;pause(0.01)d=k*(E-D)+D;plot([C(1);d(1)],[C(2);d(2)],'color',COLOR,'Linewidth',LW);D=d;pause(0.01)e=k*(A-E)+E;plot([D(1);e(1)],[D(2);e(2)],'color',COLOR,'Linewidth',LW);E=e;pause(0.01)a=k*(B-A)+A;plot([E(1);a(1)],[E(2);a(2)],'color',COLOR,'Linewidth',LW);A=a;pause(0.01)LW=LW*k2;endendend5.⽉饼绘制function moonCake% @author:slandarerax=gca;hold(ax,'on');axis equalax.XLim=[-15,15];ax.YLim=[-15,15];CSet=[0.92 0.51 0.11;1 0.7 0.09;0.87 0.41 0.05];for i=[1:7,9,8]if i==1tt=linspace(0,-pi/16,100);elseif i==9tt=linspace(-pi+pi/16,-pi,100);elsett=linspace(-pi/16-(i-2)*pi/8,-pi/16-(i-1)*pi/8,100);endxSet=cos(tt).*(10+abs(cos(tt.*8)));xMin=find(xSet==min(xSet));tt(xMin)xMax=find(xSet==max(xSet));t1=min([xMin(1),xMax(1)]);t2=max([xMin(1),xMax(1)]);xSet=cos(tt(t1:t2)).*(10+abs(cos(tt(t1:t2).*8)));ySet=sin(tt(t1:t2)).*(10+abs(cos(tt(t1:t2).*8)))-3;fill([xSet(1),xSet,xSet(end)],[ySet(1)+3,ySet,ySet(end)+3],CSet(mod(i,2)+1,:),'EdgeColor','none') endt=linspace(0,2*pi,640);fill(cos(t).*(10+abs(cos(t.*8))),sin(t).*(10+abs(cos(t.*8))),CSet(1,:),'EdgeColor','none')plot(cos(t).*(9+abs(cos(t.*8))),sin(t).*(9+abs(cos(t.*8)))-0.3,'Color',CSet(3,:),'LineWidth',6)plot(cos(t).*8.7,sin(t).*8.7-0.3,'Color',CSet(3,:),'LineWidth',4)plot(cos(t).*(9+abs(cos(t.*8))),sin(t).*(9+abs(cos(t.*8))),'Color',CSet(2,:),'LineWidth',6)plot(cos(t).*8.7,sin(t).*8.7,'Color',CSet(2,:),'LineWidth',4)plot([0 0],[-7 7]-0.3,'Color',CSet(3,:),'LineWidth',4)plot([-7 7],[0 0]-0.3,'Color',CSet(3,:),'LineWidth',4)plot([0 0],[-7 7],'Color',CSet(2,:),'LineWidth',4)plot([-7 7],[0 0],'Color',CSet(2,:),'LineWidth',4)t4=linspace(0,pi/2,100);xSet4=[cos(t4).*6+1,1,6,cos(t4(1:end-12)).*5+1,2,4.8,cos(t4(17:end-40)).*3.9+1];ySet4=[sin(t4).*6+1,1,1,sin(t4(1:end-12)).*5+1,2,2,sin(t4(17:end-40)).*3.9+1];plot(xSet4,ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)plot(-xSet4,ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)plot(xSet4,-ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)plot(-xSet4,-ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)plot(xSet4,ySet4,'Color',CSet(2,:),'LineWidth',4)plot(-xSet4,ySet4,'Color',CSet(2,:),'LineWidth',4)plot(xSet4,-ySet4,'Color',CSet(2,:),'LineWidth',4)plot(-xSet4,-ySet4,'Color',CSet(2,:),'LineWidth',4)end6.⼤钻⽯绘制function diamondx2% @author:slandarerhold onax=gca;axis equalgrid onax.GridLineStyle='--';ax.LineWidth=1.2;ax.XLim=[-2,2];ax.YLim=[-2,2];ax.ZLim=[-1.8,1.5];ax.XColor=[1,1,1].*0.4;ax.YColor=[1,1,1].*0.4;ax.ZColor=[1,1,1].*0.4;ax.DataAspectRatio=[1,1,1];ax.DataAspectRatioMode='manual';ax.CameraPosition=[-67.6287 -204.5276 82.7879];light('Position',[5,6,5])light('Position',[5,6,5])faceColor=[0 71 177];facePara={faceColor./255,'FaceAlpha',0.4,'EdgeColor',faceColor./255.*0.8,'EdgeAlpha',0.2,...'FaceLighting','gouraud','EdgeLighting','gouraud',...'SpecularStrength',0.9,'DiffuseStrength',0.8,'AmbientStrength',0.7}; % ⾯参数drawDiamond(facePara)faceColor=[237 64 153];facePara={faceColor./255,'FaceAlpha',0.4,'EdgeColor',faceColor./255.*0.8,'EdgeAlpha',0.2,... 'FaceLighting','gouraud','EdgeLighting','gouraud',...'SpecularStrength',0.9,'DiffuseStrength',0.8,'AmbientStrength',0.7}; % ⾯参数drawDiamond(facePara)function drawDiamond(facePara)thetaSet8=linspace(0,2*pi-pi/4,8)';thetaSet16=linspace(0,2*pi-pi/8,16)';% 绘制最上⽅⼋边形pntSet1=[cos(thetaSet8),sin(thetaSet8),ones(8,1)];fill3(pntSet1(:,1),pntSet1(:,2),pntSet1(:,3),facePara{:})% ⼀圈8个三⾓形pntSet2=[cos(thetaSet8+pi/8).*1.3,sin(thetaSet8+pi/8).*1.3,ones(8,1).*0.7];for i=1:8p1=i;p2=mod(i,8)+1;p3=i;fill3([pntSet1([p1,p2],1);pntSet2(p3,1)],...[pntSet1([p1,p2],2);pntSet2(p3,2)],...[pntSet1([p1,p2],3);pntSet2(p3,3)],facePara{:})end% ⼀圈8个四边形pntSet3=[cos(thetaSet8).*1.7,sin(thetaSet8).*1.7,ones(8,1).*0.3];for i=1:8p1=mod(i,8)+1;p2=i;p3=p1;p4=p1;fill3([pntSet1(p1,1);pntSet2(p2,1);pntSet3(p3,1);pntSet2(p4,1)],...[pntSet1(p1,2);pntSet2(p2,2);pntSet3(p3,2);pntSet2(p4,2)],...[pntSet1(p1,3);pntSet2(p2,3);pntSet3(p3,3);pntSet2(p4,3)],facePara{:})end% ⼀圈16个三⾓形pntSet4=[cos(thetaSet16).*1.7,sin(thetaSet16).*1.7,ones(16,1).*0.3];for i=1:8p1=i;p2=2*i-1;p3=2*i;fill3([pntSet2(p1,1);pntSet4([p2,p3],1)],...[pntSet2(p1,2);pntSet4([p2,p3],2)],...[pntSet2(p1,3);pntSet4([p2,p3],3)],facePara{:})p2=2*i;p3=mod(2*i,16)+1;fill3([pntSet2(p1,1);pntSet4([p2,p3],1)],...[pntSet2(p1,2);pntSet4([p2,p3],2)],...[pntSet2(p1,3);pntSet4([p2,p3],3)],facePara{:})end% ⼀圈16个四边⾓形pntSet5=[cos(thetaSet16).*1.7,sin(thetaSet16).*1.7,ones(16,1).*0.15];for i=1:16p1=i;p2=mod(i,16)+1;p3=mod(i,16)+1;p4=i;fill3([pntSet4(p1,1);pntSet4(p2,1);pntSet5(p3,1);pntSet5(p4,1)],...[pntSet4(p1,2);pntSet4(p2,2);pntSet5(p3,2);pntSet5(p4,2)],...[pntSet4(p1,3);pntSet4(p2,3);pntSet5(p3,3);pntSet5(p4,3)],facePara{:})endpntSet6=[cos(thetaSet8+pi/8).*0.4,sin(thetaSet8+pi/8).*0.4,ones(8,1).*(-1.15)];% ⼀圈16个长三⾓形for i=1:8p1=i;p2=2*i-1;p3=2*i;fill3([pntSet6(p1,1);pntSet5([p2,p3],1)],...[pntSet6(p1,2);pntSet5([p2,p3],2)],...[pntSet6(p1,3);pntSet5([p2,p3],3)],facePara{:})p2=2*i;p3=mod(2*i,16)+1;fill3([pntSet6(p1,1);pntSet5([p2,p3],1)],...[pntSet6(p1,2);pntSet5([p2,p3],2)],...[pntSet6(p1,3);pntSet5([p2,p3],3)],facePara{:})end% ⼀圈8个长四边形pntSet7=[cos(thetaSet8).*1.7,sin(thetaSet8).*1.7,ones(8,1).*0.15];for i=1:8p1=mod(i,8)+1;p2=i;p4=mod(i,8)+1;fill3([pntSet7(p1,1);pntSet6(p2,1);0;pntSet6(p4,1)],...[pntSet7(p1,2);pntSet6(p2,2);0;pntSet6(p4,2)],...[pntSet7(p1,3);pntSet6(p2,3);-1.5;pntSet6(p4,3)],facePara{:})endendend7.有趣曲线1% 鱼形曲线hold onaxis equalgrid onX=0:1:1023;Y=0:1:1023;[gridX,gridY]=meshgrid(X,Y);FishPatternFcn=@(x,y)mod(abs(x.*sin(sqrt(x))+y.*sin(sqrt(y))).*pi./1024,1);contour(gridX,gridY,FishPatternFcn(gridX,gridY),[0.7,0.7])8.有趣曲线2% ⽣成⼀个40x40 DFT矩阵% 并在复平⾯将点连接起来plot(fft(eye(40)));axis equal9.有趣曲线3——蝴蝶曲线x=linspace(0,2*pi,1000);hdl=polarplot(x,sin(x)+sin(3.5.*x).^3,'LineWidth',1.5);ax=gca;ax.RTick=[];10.有趣曲线4——⼼形曲线function loveFunc% @author:slandarerLoveFunchdl=@(x,a)(x.^2).^(1/3)+0.9.*((3.3-x.^2).^(1/2)).*sin(a.*pi.*x);hold ongrid onaxis([-3 3,-2 4])x=-1.8:0.01:1.8;text(0,3.3,'$f(x)=x^{\frac{2}{3}}+0.9(3.3-x^2)^{\frac{1}{2}}\sin(\alpha\pi x)$',...'FontSize',13,'HorizontalAlignment','center','Interpreter','latex');txt2=text(-0.35,2.9,'','FontSize',13,'HorizontalAlignment','left','Interpreter','latex','tag','alphadata'); hdl=plot(x,LoveFunchdl(x,1),'color',[0.2118 0.4667 0.9961],'LineWidth',1.5);for a=1:0.01:20AlphaString=['$\alpha=',num2str(a),'$'];Color=([1.0000 0.4902 0.6627]-[0.2118 0.4667 0.9961]).*(a/20)+[0.2118 0.4667 0.9961];set(txt2,'string',AlphaString)hdl.YData=LoveFunchdl(x,a);hdl.Color=Color;drawnowendend11.有趣曲线5[x,y]=meshgrid(-10:.01:10,-10:.01:10);cm=cos(cos(min(sin(x)+y,x+sin(y))))-cos(sin(max(sin(y)+x,y+sin(x))))>0;imshow(cm)12.会害羞的含羞草function mimose% @author:slandarer% ========================================================================= % <构造含羞草叶⼦轮廓曲线>% ⼤体是画⼀个⼀个压扁倾斜的半圆弧拼在⼀起% 然后乘以⼀个类似弧形曲线让每⽚⼩叶⼦不⼀样长% 计算⼀个压扁倾斜的半圆弧曲线t1=0:pi/100:pi+2*pi/100;y=5*abs(sin(t1).^(1/2));y(t1>pi)=-y(t1>pi);t1=t1.*cos(pi/9)-y.*sin(pi/9);y=t1.*sin(pi/9)+y.*cos(pi/9);% 将多个压扁倾斜的半圆弧曲线拼接T=[];Y=[];for i=1:20T=[T,(i-1)*(pi+2*pi/100)+t1];Y=[Y,y];end% 乘以⼀个类似弧形曲线让每⽚⼩叶⼦不⼀样长L=length(T);t2=linspace(pi/8,pi-2*pi/5,L);Y=Y.*sin(t2);% 旋转并调整⽐例X=T.*cos(pi)-Y.*sin(pi);Y=T.*sin(pi)+Y.*cos(pi);X=X-min(X);X=X.*0.8;Y=Y.*1.5;% 创建figure及axes=========================================================fig=figure('units','pixels',...'position',[500 100 500 500],...'Numbertitle','off',...'Color',[1 1 1],...'resize','off',...'visible','on',...'name','mimose',...'menubar','none');ax=axes('Units','pixels',...'parent',fig,...'Color',[0.2667 0.4039 0.2745],...'Position',[0 0 500 500],...'XLim',[0 100],...'YLim',[0 100],...'XColor',[1 1 1],...'YColor',[1 1 1]);hold(ax,'on')%plot(ax,X+20,Y+50)% 调⽤后⾯定义的函数绘图===================================================% 绘制树枝drawBranch([20,0],[50,10])drawBranch([20,0],[35,12])drawBranch([0,0],[15,45])drawBranch([4,0],[0,20])% 绘制树叶leaf.l1=drawLeaf([50,10]+1.*[cos(pi/1.7),sin(pi/1.7)],pi/1.7,X,Y,0.8,1);leaf.l2=drawLeaf([50,10]+1.*[cos(-pi/8),sin(-pi/8)],-pi/8,X,Y,0.8,1);leaf.l3=drawLeaf([50,10]+1.*[cos(pi/12),sin(pi/12)],pi/12,X,Y,1,1);leaf.l4=drawLeaf([50,10]+1.*[cos(pi/3),sin(pi/3)],pi/3,X,Y,1,1);leaf.l5=drawLeaf([0,45]+1.*[cos(pi/3),sin(pi/3)],pi/3,X,Y,1,1);leaf.l6=drawLeaf([0,30]+1.*[cos(pi/5),sin(pi/5)],pi/5,X,Y,1,1);% 绘制花朵flower.fl1=drawFlower([35,12]);flower.fl2=drawFlower([20,5]);% ⿏标移动回调============================================================= fps=25;mitimer=timer('ExecutionMode', 'fixedRate', 'Period',1/fps, 'TimerFcn', @miMove);start(mitimer)% 花朵树叶回缩函数function miMove(~,~)for ii=1:6if leaf.(['l',num2str(ii)]).ratio<1 %如果收缩率⼩于1则每隔⼀段时间+0.05,以下同理leaf.(['l',num2str(ii)]).ratio=leaf.(['l',num2str(ii)]).ratio+0.05;endresetH(leaf.(['l',num2str(ii)]),X,Y); % 依据收缩率重新绘制叶⼦endfor ii=1:2if flower.(['fl',num2str(ii)]).ratio<1flower.(['fl',num2str(ii)]).ratio=flower.(['fl',num2str(ii)]).ratio+0.05;endresetL(flower.(['fl',num2str(ii)]));endendset(gcf,'WindowButtonMotionFcn',@whilemovefcn)% ⿏标移动调⽤的函数function whilemovefcn(~,~)% 检测⿏标位置xy=get(gca,'CurrentPoint');xw=xy(1,1);yw=xy(1,2);pos=[xw,yw];% ⿏标附近的叶⼦收缩率-0.2for ii=1:6LF=leaf.(['l',num2str(ii)]);if closeLeaf(LF.pos1,LF.pos2,pos)% 如果距离叶⼦距离⾜够近if leaf.(['l',num2str(ii)]).ratio>0.2leaf.(['l',num2str(ii)]).ratio=leaf.(['l',num2str(ii)]).ratio-0.2;endendend% ⿏标附近的花收缩率-0.2for ii=1:2FL=flower.(['fl',num2str(ii)]);if closeFlower(FL.pos,pos)% 如果距离花距离⾜够近if flower.(['fl',num2str(ii)]).ratio>0.6flower.(['fl',num2str(ii)]).ratio=flower.(['fl',num2str(ii)]).ratio-0.2;endendendend% 距离检测函数,叶⼦形状近乎于椭圆,当距离俩焦点和⼩于⼀定值认为⾜够近% 若⾜够近返回TRUE 否则返回FALSEfunction bool=closeLeaf(pos1,pos2,pos3)pL=pos1+(pos2-pos1).*0.1;pR=pos1+(pos2-pos1).*0.9;lTotal=norm(pL-pos3)+norm(pR-pos3);bool=lTotal<=norm(pos1-pos2);end% 距离检测函数,花形状近乎于圆,当距离圆⼼⼩于⼀定值认为⾜够近% 若⾜够近返回TRUE 否则返回FALSEfunction bool=closeFlower(pos1,pos2)bool=norm(pos1-pos2)<=5;end% 依据收缩率重新计算并绘制叶⼦function resetH(lf,X,Y)X=X.*lf.Len;Y=Y.*lf.h.*lf.ratio;xl1=X.*cos(lf.alf)-Y.*sin(lf.alf)+lf.pos1(1);yl1=X.*sin(lf.alf)+Y.*cos(lf.alf)+lf.pos1(2);xl2=X.*cos(lf.alf)+Y.*sin(lf.alf)+lf.pos1(1);yl2=X.*sin(lf.alf)-Y.*cos(lf.alf)+lf.pos1(2);XL=[xl1,xl2(end:-1:1)];YL=[yl1,yl2(end:-1:1)];set(lf.LHdl,'XData',XL,'YData',YL);end% 依据收缩率重新计算并绘制花朵function resetL(fl)xf=fl.x.*fl.ratio+fl.pos(1);yf=fl.y.*fl.ratio+fl.pos(2);xxf(2:2:2*length(xf))=xf;yyf(2:2:2*length(yf))=yf;xxf(1:2:2*length(xf))=fl.pos(1);yyf(1:2:2*length(yf))=fl.pos(2);%set(fl.plHdl,'XData',xxf,'YData',yyf);set(fl.scHdl,'XData',xf,'YData',yf);set(fl.plHdl,'XData',xxf,'YData',yyf);end% 绘制花朵(圆⼼)function fl=drawFlower(pos)% 随机⽣成⼀些点作为花蕊并绘图theta=rand([1,120]).*2.*pi;r=rand([1,120]).*3+5;xf=r.*cos(theta)+pos(1);yf=r.*sin(theta)+pos(2);xxf(2:2:2*length(xf))=xf;yyf(2:2:2*length(yf))=yf;xxf(1:2:2*length(xf))=pos(1);yyf(1:2:2*length(yf))=pos(2);plHdl=plot(ax,xxf,yyf,'Color',[0.7608 0.4863 0.7216],'LineWidth',1);scHdl=scatter(ax,xf,yf,3,'filled','CData',[0.9569 0.9804 0.9333]);% 存储基础信息到实类fl.x=xf-pos(1);fl.y=yf-pos(2);fl.pos=pos;fl.scHdl=scHdl;fl.plHdl=plHdl;fl.ratio=1;% 计算可伸缩部分花蕊坐标,绘图,存储信息theta2=rand([1,80]).*2.*pi;r2=rand([1,80]).*1+3;xf2=r2.*cos(theta2)+pos(1);yf2=r2.*sin(theta2)+pos(2);xxf2=[ones([1,length(xf2)]).*pos(1);xf2];yyf2=[ones([1,length(yf2)]).*pos(2);yf2];plot(ax,xxf2,yyf2,'Color',[0.7804 0.6078 0.5020],'LineWidth',1)end% 绘制树枝(端点1,端点2)function drawBranch(pos1,pos2)% 依据起始及末尾两点计算⼀个⼀头宽⼀头窄四边形坐标数据并绘图dir=(pos2-pos1)./norm(pos2-pos1);len=norm(pos2-pos1);xb=[0 1 1 0].*len;yb=[len.*0.02,len.*0.012,-len.*0.012,-len.*0.02];xxb=xb.*dir(1)-yb.*dir(2)+pos1(1);yyb=xb.*dir(2)+yb.*dir(1)+pos1(2);fill(ax,xxb,yyb,[0.8157 0.6431 0.6078],'EdgeColor',[0.6157 0.5529 0.4510],'LineWidth',1.5)end% 绘制叶⼦(起始位置,叶⼦⽅向,轮廓x数据,轮廓y数据,轮廓x⽅向放缩⽐例,轮廓y⽅向放缩⽐例) function lf=drawLeaf(pos,alf,X,Y,l,h)X=X.*l; % 放缩叶⼦长度Y=Y.*h; % 放缩叶⼦宽窄% 叶⼦数据旋转并把两个叶⼦数据并在⼀起xl1=X.*cos(alf)-Y.*sin(alf)+pos(1);yl1=X.*sin(alf)+Y.*cos(alf)+pos(2);xl2=X.*cos(alf)+Y.*sin(alf)+pos(1);yl2=X.*sin(alf)-Y.*cos(alf)+pos(2);XL=[xl1,xl2(end:-1:1)];YL=[yl1,yl2(end:-1:1)];% 绘图lf.LHdl=fill(XL,YL,[0.4980 0.7216 0.3176]);% 基础数据存到实类⾥lf.pos1=pos;lf.pos2=[pos(1)+l*51*cos(alf),pos(2)+l*51*sin(alf)];lf.alf=alf;lf.Len=l;lf.h=h;lf.ratio=1;% 绘制⼀下叶⼦中线plot(ax,[pos(1),pos(1)+l*51*cos(alf)],[pos(2),pos(2)+l*51*sin(alf)],'Color',[0.6627 0.6980 0.4431],'LineWidth',3); endend13.随机雪景function snowCover% @author:slandarerMainFig=figure('units','pixels','position',[300 80 500 500],...'Numbertitle','off','menubar','none','resize','off',...'name','snow covered landscape');axes('parent',MainFig,'position',[0 0 1 1],...'XLim', [0 500],...'YLim', [0 500],...'NextPlot','add',...'layer','bottom',...'Visible','on',...'Color',[0 59 129]./255,...'XTick',[], ...'YTick',[]);hold on%画雪地==================================================================== layerBEPos=[150;140;100;90];layerColor=[146 210 245;101 183 231;0 101 181;0 59 129];excursion=15;interval=10;xSep=25;layerPos=zeros(size(layerBEPos,1),length(xSep:xSep:500));layerPos(:,1)=layerBEPos(:,1);for i=1:size(layerBEPos,1)for j=xSep:xSep:500listPos=round(j./xSep+1);tempRandi=randi([-excursion,excursion]);yPos=tempRandi+layerPos(i,listPos-1);if i>1&&yPos>=layerPos(i-1,listPos)-5yPos=layerPos(i-1,listPos)-interval;endyPos(yPos<0)=0;layerPos(i,listPos)=yPos;endendfor i=1:size(layerBEPos,1)XData=0:xSep:500;YData=layerPos(i,:);Yq=interp1(XData,YData,0:1:500,'spline');Xq=[0,0:1:500,500];Yq=[0 Yq 0];fill(Xq,Yq,layerColor(i,:)./255,'EdgeColor','none')end%画星星==================================================================== XRandiS=randi([50 450],[1,15]);YRandiS=randi([300 460],[1,15]);scatter(XRandiS,YRandiS,10,'o','filled','CData',[252 241 0]./255)XRandiB=randi([50 450],[1,15]);YRandiB=randi([300 460],[1,15]);scatter(XRandiB,YRandiB,18,'o','filled','CData',[252 241 0]./255)%画雪花====================================================================snowXpos=[randi([0,30],[1,6]),randi([470,500],[1,6]),randi([0,500],[1,12])];snowYpos=[randi([220,470],[1,6]),randi([220,470],[1,6]),randi([470,500],[1,12])];snowSize=randi([25,50],[1,24]);snowAngle=2*pi*rand([1,24]);snowWidth=1+0.6*rand([1,24]);for i=1:24drawSnow(snowXpos(i),snowYpos(i),snowSize(i),snowAngle(i),snowWidth(i))end%画⽉亮====================================================================moonPos=[320 300]+[randi([0 50]),randi([0 80])];moonSize=randi([28 32]);blankPos=randi([floor(0.3*moonSize) ceil(0.5*moonSize)],[1,2]);drawMoon(moonPos(1),moonPos(2),moonSize,moonPos(1)-blankPos(1),moonPos(2)+blankPos(2))%相关函数==================================================================function drawMoon(x,y,R,bx,by)t=0:pi/50:2*pi;X=x+cos(t).*R;Y=y+sin(t).*R;BX=bx+cos(t).*R;BY=by+sin(t).*R;fill(X,Y,[255 251 219]./255,'EdgeColor','none')fill(BX,BY,[0 59 129]./255,'EdgeColor','none')endfunction drawSnow(x,y,len,angle,width)for theta=0:pi/3:2*pi-pi/3xTail=cos(theta+angle)*len+x;yTail=sin(theta+angle)*len+y;plot([x,xTail],[y,yTail],'color',[0 134 207]./255,'lineWidth',width)for branchRatio=[0.4 0.55 0.7]BX=x+cos(theta+angle)*len*branchRatio;BY=y+sin(theta+angle)*len*branchRatio;LX=BX+cos(theta+angle+pi/3).*len.*0.4;LY=BY+sin(theta+angle+pi/3).*len.*0.4;RX=BX+cos(theta+angle-pi/3).*len.*0.4;RY=BY+sin(theta+angle-pi/3).*len.*0.4;plot([BX,LX],[BY,LY],'color',[0 134 207]./255,'lineWidth',width.*0.8)plot([BX,RX],[BY,RY],'color',[0 134 207]./255,'lineWidth',width.*0.8)endendendend以上就是利⽤Matlab绘制有趣图像的⽰例代码的详细内容,更多关于Matlab绘制图像的资料请关注其它相关⽂章!。
Matlab中的图形绘制技巧
MATLAB中的图形绘制技巧概述:MATLAB是一种用于科学计算和数据可视化的强大工具,它提供了丰富的图形绘制功能,使用户能够清晰地展示和分析数据。
本文将介绍一些MATLAB中的图形绘制技巧,帮助读者更加熟悉和灵活运用这些功能。
一、基本图形绘制1.折线图(Line Plot):折线图是用于显示随时间、变量或其他条件变化而变化的数据的理想选择。
例如,假设我们想要展示一段时间内气温的变化趋势,可以使用MATLAB中的plot 函数来生成折线图。
通过在X轴上放置时间(日期)或变量,将温度值绘制在Y 轴上,我们可以清晰地看到气温的变化。
2.散点图(Scatter Plot):散点图用于观察两个连续变量之间的关系。
在MATLAB中,可以使用scatter 函数生成散点图。
例如,我们可以绘制一个散点图来观察身高和体重之间的关系,每个点代表一个人,x轴表示身高,y轴表示体重。
通过观察图形,我们可以直观地看到身高和体重之间是否存在某种关联。
3.柱状图(Bar Plot):柱状图适用于对各个组或类别之间的数值进行比较。
使用bar函数可以在MATLAB中绘制柱状图。
例如,如果我们想要比较不同地区的人口数量,可以使用柱状图将不同地区的人口数量以柱状图的形式展示出来。
不同地区的柱状图高度不同,可以直观地看到不同地区的人口数量差异。
4.饼图(Pie Chart):饼图用于表示不同类别之间的比例关系,MATLAB中的pie函数可以用来生成饼图。
例如,我们可以使用饼图展示一份问卷调查中各个选项的比例,饼图的每个扇区表示一个选项,扇区的面积大小代表该选项占总数的比例。
通过观察饼图,我们可以更加直观地了解各个选项之间的比例关系。
二、高级图形绘制技巧1.子图(Subplot):在MATLAB中,我们可以使用subplot函数创建一个包含多个子图的大图。
通过在subplot函数中指定行数和列数,可以将图形划分为不同的区域,并在每个区域中绘制不同的图形。
使用Matlab进行图像配色与调整的技巧与实例
使用Matlab进行图像配色与调整的技巧与实例一、引言图像处理是计算机视觉和图形学中的一个重要领域。
在这个数字时代,我们面临着大量的图像内容,因此需要通过技术手段对这些图像进行优化和调整,以满足用户需求。
本文将介绍如何使用Matlab对图像进行配色和调整的技巧,并通过实例进行说明。
二、Matlab在图像处理中的作用Matlab是一种功能强大的高级编程语言和交互式环境,广泛应用于科学和工程领域。
它提供了丰富的图像处理工具箱,以及各种函数和算法,可以方便地进行图像的加载、处理和保存等操作。
借助Matlab强大的功能,我们可以在图像处理中更加高效和便捷地实现我们的目标。
三、图像色彩空间的基本概念在进行图像配色和调整之前,我们首先需要了解色彩空间的基本概念。
色彩空间是描述图像颜色的一种数学模型。
常见的色彩空间有RGB、HSV、Lab等。
其中,RGB是最常用的色彩空间,它是通过红、绿、蓝三个通道的强度值来描述颜色的。
HSV色彩空间则将颜色分为色调(Hue)、饱和度(Saturation)和明度(Value)三个分量,更符合人类对颜色的感知。
Lab色彩空间则将颜色分为亮度(Lightness)、a 和b两个颜色分量,可以准确地描述颜色的特征。
四、图像配色的技巧1. 色调映射色调映射是一种常用的图像配色技巧,它可以改变图像的整体色调,从而产生不同的视觉效果。
在Matlab中,可以使用imadjust函数来实现该技巧。
通过调整色调映射函数的参数,我们可以改变图像的对比度和亮度,从而达到所需的效果。
例如,如果想要增强图像的对比度,可以使用imadjust函数提高图像的对比度参数。
2. 色彩转换色彩转换是将图像从一种色彩空间转换到另一种色彩空间的过程。
在Matlab中,可以使用rgb2hsv和hsv2rgb函数来实现RGB和HSV色彩空间之间的相互转换。
通过进行色彩转换,我们可以更加方便地对图像的色调、饱和度和明度等属性进行调整。
四讲Matlab绘图ppt课件
p l o t (. . ., s t r ) 使用字符串s t r指定的颜
色和线型进行绘图。表1 中列出了s t r可
以取的值。
2019/9/17
4
一、二维图形:表一
点
型
.
点
^
正三角
*
星号
v
倒三角
OO
s
正方形
++
d
菱形
X 乘号
p
五角星
<
左三角
h
六角星
>
右三角
none 无点
2019/9/17
5
一、二维图形:表一
2019/9/17
13
一、二维图形
• 5.i j 翻转y轴,使得正数在下,负数在上。 • 6.x y 复位y轴,使正数在上。 • 7.off 坐标轴消隐。 • 8.on 绘制坐标轴。
2019/9/17
14
一、二维图形
grid on 在图形窗口中画出网格。如果前面 的图形是比如用极坐标绘制的, 则网格也 将采用极坐标绘制。
线型
颜色
--. : none
实线 m 虚线 b 点划线 c 点线 w 无线 r
品红色 蓝色 灰色 白色 红色
颜色
k
g
绿色 y
黑色 黄色
2019/9/17
6
一、二维图形
1.2彗星图形
c o m e t ( x , y ) 绘制向量y对向量x的彗星 轨线。如果只给出一个向量,则用该向 量对其下标值绘图。
2019/9/17
26
三、三维图形
m e s h ( X,Y,Z ) 将矩阵Z中的各个元素作 为矩形网格上的高度,对这些值绘图,
matlab三维绘图ppt课件
xx
1
三维曲线绘图 三维曲面绘图
2
xx
二、MATLAB三维曲线绘图
plot3——三维曲线绘制指令 plot3的调用格式:
plot3(X,Y,Z) plot3(X,Y,Z,’String’) plot3(X1,Y1,Z1,’ String1’,X2,Y2,Z2,’ String2’,…) plot3与plot的 用法相同
➢ shading faceted
以平面为单位进行着色,在flat用色基础上,在贴片的 四周勾出黑色网线。
23
subplot(131),surf(peaks(40)); subplot(132),surf(peaks(40));shading flat subplot(133),surf(peaks(40));shading interp
subplot(122),h = surf(ones(10,10));rotate(h,[0 0 1],i,[1 0 0]) end
➢ rotate3d
动态旋转命令,可以让用户使用鼠标来旋转视角
19
背景颜色控制命令colordef
➢ colordef white 将图形的背景颜色设置为白色 ➢ colordef black ➢ colordef none 将图形背景和图形窗口的颜色设置
28
对象和句柄
MATLAB把构成图形的各个基本要素称为图形对象, 包括图形窗口、坐标轴、线条、曲面、文本和其它对 象。
每一个对象都有一个数字来标识,叫做句柄。当每次 创建一个对象时,MATLAB就为它建立一个唯一的句 柄。
29
作业ห้องสมุดไป่ตู้P79
5,7,8,9
30
22
Matlab的图形绘制基础教程
Matlab的图形绘制基础教程近年来,数据可视化越来越受到人们的关注。
图形绘制成为展示数据的一种重要手段。
而在众多图形绘制工具中,Matlab作为一种独特的科学计算和数据可视化软件,广泛应用于各个领域。
本文将介绍Matlab的图形绘制基础,帮助读者了解如何使用Matlab绘制各种类型的图形。
首先,我们需要了解Matlab中的基本图形对象。
Matlab中最基本的图形对象是“figure”。
通过创建“figure”,我们可以在Matlab界面上建立一个空白的图形窗口。
在这个图形窗口上,我们可以创建各种图形对象,如直线、曲线、散点图等。
要创建一个新的图形窗口,可以使用命令“figure”或者在Matlab界面点击“新建图形”按钮。
绘制图形之前,我们需要了解坐标系的概念。
Matlab中使用的是笛卡尔坐标系,横轴表示自变量,纵轴表示因变量。
通过设置坐标轴的范围和刻度,我们可以更好地展示数据。
要设置坐标轴的范围,可以使用命令“xlim”和“ylim”;要设置坐标轴的刻度,可以使用命令“xticks”和“yticks”。
接下来,我们将介绍如何在Matlab中绘制不同类型的图形。
首先是绘制线条。
Matlab提供了多种绘制线条的函数,如“plot”函数、“line”函数和“plot3”函数等。
其中,“plot”函数在二维平面上绘制折线图,而“plot3”函数在三维空间中绘制曲线图。
通过设置线条的样式、颜色和宽度,我们可以让图形更加美观。
要设置线条的样式,可以使用命令“LineStyle”;要设置线条的颜色,可以使用命令“Color”;要设置线条的宽度,可以使用命令“LineWidth”。
除了线条,我们还可以使用Matlab绘制散点图。
散点图可以直观地展示数据的分布情况。
在Matlab中,可以使用命令“scatter”绘制散点图。
通过设置散点的大小、颜色和形状,我们可以更好地展示数据的特征。
要设置散点的大小,可以使用命令“SizeData”;要设置散点的颜色,可以使用命令“CData”;要设置散点的形状,可以使用命令“Marker”。
matlab实现油画,浮雕,伪色彩,底片,单线条效果程序。
谢谢观看
单线条效果
handles.pic=rgb2gray(handles.pic); bw=edge(handles.pic,‘canny’);%数字图像轮廓提取 se = strel(‘line’,3,0);%创建直线长度3角度为0形态学元素 bwd=imdilate(bw,se);%对图像实施膨胀操作 figure,imshow(bwd);title(‘单线条效果');
clear intensity_counter R G B max_instance index intensity_counter=uint8(zeros(1,intensity_level+1)); R=uint8(zeros(1,intensity_level+1)); G=uint8(zeros(1,intensity_level+1)); B=uint8(zeros(1,intensity_level+1)); for i = (x-radius):(x+radius) for j = (y-radius):(y+radius) if i>0 && i<=width && j>0 && j<=height intensity = I(i,j)+1; intensity_counter(intensity)=intensity_counter(intensity)+1; R(intensity) = handles.pic(i,j,1); G(intensity) = handles.pic(i,j,2); B(intensity) = handles.pic(i,j,3); end end end
Matlab绘图系列之高级绘图
Matlab绘图系列之高级绘图Matlab绘图系列之高级绘图一、目录1.彗星图二维彗星图三维彗星图2.帧动画3.程序动画4.色图变换5.V oronoi图和三角剖分V oronoi图三角剖分6.四面体7.彩带图彩带图三维流彩带图8.伪彩图9.切片图切片图切片轮廓线图10.轮廓图显示轮廓线显示围裙瀑布效果带光照模式的阴影图11.函数绘图轮廓线、网格图、曲面图、轮廓网格图轮廓曲面图、二维曲线、极坐标曲线图、自定义函数12.三维图形控制视点灯光效果色彩控制二、图形示例1.彗星图二维彗星图t=0:.01:2*pi;x=cos(2*t).*(cos(t).^2);y=sin(2*t).*(sin(t).^2);comet(x,y);title('二维彗星轨迹图')hold onplot(x,y)三维彗星图a=12;b=9;T0=2*pi;%T0是轨道的周期T=5*T0;dt=pi/100;t=[0:dt:T]';f=sqrt(a^2-b^2);%地球与另一焦点的距离th=12.5*pi/180;%未经轨道与x-y平面的倾角E=exp(-t/20);%轨道收缩率x=E.*(a*cos(t)-f);y=E.*(b*cos(th)*sin(t));z=E.*(b*sin(th)*sin(t));plot3(x,y,z,'g')%画全程轨线hold on,sphere(20);%画地球axis offtitle('卫星返回地球示例')x1=-18*T0;x2=6*T0;y1=-12*T0;y2=12*T0;z1=-6*T0;z2=6*T0;axis([x1 x2 y1 y2 z1 z2])% axis([-15 10 -15 10 -10 10])axis equalcomet3(x,y,z,0.02);%画运动轨线hold off2.帧动画Z=peaks;surf(Z)%绘制网格表面图axis tightset(gca,'nextplot','replacechildren');%设定axis覆盖重画模式title('帧动画播放示例')for j=1:20surf(sin(2*pi*j/20)*Z,Z)%重新绘制网格表面图,这里后面一个Z 当成了颜色矩阵F(j)=getframe;%创建帧endmovie(F,20)%播放动画20次3.程序动画t=0:pi/50:10*pii=1;h=plot3(sin(t(i)),cos(t(i)),t(i),'*','erasemode','none');%设定擦除模式grid onaxis([-2 2 -2 2 -1 10*pi])title('程序动画示例')for i=2:length(t)set(h,'xdata',sin(t(i)),'ydata',cos(t(i)),'zdata',t(i));drawnowpause(0.01)end4.色图变换load spineimage(X)colormap coolspinmap(10)5.V oronoi图和三角剖分V oronoi图rand('state',5)x=rand(1,10);y=rand(1,10);subplot(131)voronoi(x,y);%绘制voronoi图形axis equalaxis([-0.2 1.6 -0.5 2.5])subplot(132)[vx,vy]=voronoi(x,y);plot(x,y,'r+',vx,vy,'b-');%应用返回值绘制axis equalaxis([-0.2 1.6 -0.5 2.5])subplot(133)rand('state',5);x=rand(10,2);[v,c]=voronoin(x);%返回值v参数维voronoi顶点矩阵,返回值c参数为voronoi元胞数组for i=1:length(c)if all(c{i}~=1)patch(v(c{i},1),v(c{i},2),i);%应用色图iendendaxis equalaxis([-0.2 1.6 -0.5 2.5])box on三角剖分[x,y]=meshgrid(1:15,1:15);tri=delaunay(x,y);z=peaks(15);trimesh(tri,x,y,z)6.四面体d=[-1 1];[x,y,z]=meshgrid(d,d,d);%定义一个立方体x=[x(:);0];y=[y(:);0];z=[z(:);0];%[x,y,z]分别为加上中心的立方体顶点X=[x(:) y(:) z(:)];Tes=delaunayn(X);%返回m×n的数组值tetramesh(Tes,X);%绘制四面体图camorbit(20,0);%旋转摄像目标位置7.彩带图彩带图[x,y]=meshgrid(-3:.5:3,-3:.1:3);z=peaks(x,y);ribbon(y,z)三维流彩带图load wind%打开保存的数据lims=[100.64 116.67 17.25 28.75 -0.02 6.86];%定义坐标轴范围[x,y,z,u,v,w]=subvolume(x,y,z,u,v,w,lims);%lims来定义数据子集[sx sy sz]=meshgrid(110,20:5:30,1:5);%定义网格点verts=stream3(x,y,z,u,v,w,sx,sy,sz,.5);%计算彩带顶点cav=curl(x,y,z,u,v,w);%计算卷曲角速度wind_speed=sqrt(u.^2+v.^2+w.^2);%计算流速h=streamribbon(verts,x,y,z,cav,wind_speed,2);%绘制流彩带图view(3)8.伪彩图n=6%定义轮数r=(0:n)'/n;%定义轮的半径theta=pi*(-n:n)/n;%定义轮的扇区角X=r*cos(theta);Y=r*sin(theta);%定义网格顶点C=r*cos(2*theta);%定义色图pcolor(X,Y,C)%绘制伪彩图axis equal tight 9.切片图切片图[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);v = x.*exp(-x.^2-y.^2-z.^2);xslice = [-1.2,.8,2]; yslice = 2; zslice = [-2,0];slice(x,y,z,v,xslice,yslice,zslice)colormap hsv切片轮廓线图[x y z v]=flow;%打开水流数据h=contourslice(x,y,z,v,[1:9],[],[0],linspace(-8,2,10));%切片轮廓线view([-12 30])10.轮廓图显示轮廓线[x,y,z]=peaks;subplot(1,2,1)meshc(x,y,z);%同时画出网格图与轮廓线title('meshc 网格图与轮廓线')axis([-inf inf -inf inf -inf inf]);subplot(1,2,2)surfc(x,y,z);%同时画出曲面图与轮廓线title('surfc 曲面图与轮廓线')axis([-inf inf -inf inf -inf inf]);显示围裙[x y z]=peaks;meshz(x,y,z);瀑布效果[X,Y,Z]=peaks(30);waterfall(X,Y,Z)带光照模式的阴影图[x,y]=meshgrid(-3:1/8:3);z=peaks(x,y);surfl(x,y,z);shading interp%着色处理colormap(gray);%灰度处理axis([-3 3 -3 3 -8 8])11.函数绘图轮廓线、网格图、曲面图、轮廓网格图%图1绘制轮廓线、网格图、曲面图、轮廓网格图subplot(221)f=['3*(1-x)^2*exp(-(x^2)-(y+1)^2)-10*(x/5-x^3-y^5)*exp(-x^2-y^2)-1/3*exp(-(x+1)^2-y^2)'];%定义双变量x、y的函数式ezcontour(f,[-3,3],49)%x、y为[-3 3],网格为49×49 subplot(222) ezmesh('sqrt(x^2+y^2)');subplot(223)ezsurf('real(atan(x+i*y))')%经过滤波,如果相同数据surf绘图没有滤波subplot(224)ezmeshc('y/(1+x^2+y^2)',[-5,5,-2*pi,2*pi])%x、y的数值范围分别为[-5 5]、[-2*pi 2*pi]轮廓曲面图、二维曲线、极坐标曲线图、自定义函数%图2绘制轮廓曲面图、二维曲线、极坐标曲线图、自定义函数figure(2)subplot(221)ezsurfc('sin(u)*sin(v)')subplot(222)ezplot('x^2-y^4');subplot(223)ezpolar('1+cos(t)')subplot(224)fplot('myfun',[-20 20])function Y=myfun(x)Y(:,1)=200*sin(x(:))./x(:);Y(:,2)=x(:).^2;三维曲线图%绘制三维曲线图figure(3)ezplot3('sin(t)','cos(t)','t',[0,6*pi])12.三维图形控制视点View图形旋转subplot(121)surf(peaks);title('旋转前图形');subplot(122)h=surf(peaks);rotate(h,[1 0 1],180)title('旋转后图形');灯光效果%灯光效果(1)camlight(2)light(3)lightangle(4)lighting(5)materialsphere;camlight色彩控制%色彩控制(1)缺省设置colordef、whitebg(2)色图colormap(3)浓淡处理shadingload flujetimage(X)colormap(jet)subplot(131)sphere(16)axis squareshading flattitle('Flat Shading')subplot(132)sphere(16)axis squareshading facetedtitle('Faceted Shading')subplot(133)sphere(16)axis squareshading interptitle('Interpolated Shading')。
Matlab中的3D图形绘制方法
Matlab中的3D图形绘制方法Matlab是一种常用于科学计算和数据可视化的高级编程语言和开发环境。
它的强大功能使得它成为工程师、科学家和研究人员的首选工具之一。
其中一个引人注目的特点是它对3D图形的支持。
在本文中,我们将探讨Matlab中的一些3D图形绘制方法。
Matlab提供了多种绘制3D图形的函数和工具。
最基本的方法是使用“plot3”函数绘制三维数据。
这个函数接受x、y和z三个参数,分别表示三维坐标系上的数据点。
通过给定一系列的数据点,我们可以在三维空间中绘制出线条或散点图。
这种方法适用于简单的数据展示和初步的分析。
除了基本的线条和散点图,Matlab还提供了一些更高级的3D图形绘制函数,如“surface”和“mesh”。
这些函数可以用来绘制三维曲面和网格图。
例如,我们可以使用“surface”函数绘制一个三维山丘的图像,其中x和y轴表示地面上的位置,z轴表示地面的高度。
通过调整x、y和z的数值,我们可以创建出各种形状和复杂度的三维表面。
Matlab还在其图形库中提供了许多其他类型的3D图形绘制函数。
例如,“bar3”函数可以用来绘制三维柱状图,其中x和y轴表示不同的类别,z轴表示各类别的数值。
这种图形可以更直观地展示不同类别之间的关系和差异。
类似地,“contour”函数可以用来绘制三维的等值线图,用于可视化函数的等值线和等高面。
另一个值得一提的技术是使用Matlab的“patch”函数绘制复杂的三维图形。
这个函数可以用来创建和修改三维物体的表面,例如绘制球体、立方体和多面体等。
我们可以通过更改物体的属性和位置来构建各种形状和几何体。
这种灵活性使得“patch”函数在计算机图形学和动画领域中得到广泛应用。
除了这些函数和工具,Matlab还允许用户通过编写自定义的脚本和函数来实现更高级的3D图形绘制。
例如,我们可以使用Matlab的3D绘图工具箱中的一些高级函数和方法来创建特定类型的三维图形,如体积渲染、光线追踪和动画效果等。
用Matlab进行画图PPT课件
感谢您的观看!
第7页/共7页
表示在区间xmin<x<xmax和ymin<y<ymax绘制隐函数f(x,y)=0的函数图
ezplot(x, y,[t min,t max])
表示在区间tmin<t<tmax绘制参数方程x=x(t) ,y=y(t)的函数图
第3页/共7页
例3:求在区间[0,2*pi]画sin(x)的图形
解 symsx
plot(x,y,'r')
')
第2页/共7页
符号函数画图:
ezplot( f )
表示在默认区间-2*pi<x<2*pi绘制f=f(x)的函数图
ezplot( f ,[a, b]) 表示在a<x<b绘制显函数f=f(x)的函数图
ezplot( f ,[x min, x max y min, y max])
例1:求在区间[0,10*pi]画出参数曲线x=sin(t),
y=cos(t),z=t.
解 t 0 : pi / 50 : 10 * pi;
plot3(sin(t),cos(t),t)
第5页/共7页
习题
1、求在区间[-2*pi,2*pi]画出tanx,用红色表示 2、求在 [-2,0.5],[0,2上]画出隐函数e^x+sinxy=0的图形 3、P47
例1:求在区间[0,2*pi]画sin(x)
解 x linspace(0,2 * pi,30) y sin(x )
plot(x,y)
第1页/共7页
例2:求在区间[0,2*pi]用红线画sin(x),用绿 线画cos(x)
解 x linspace(0,2 * pi,30) y sin(x )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用matlab绘制的漂亮图形1.不同坐标系下的图形对比theta=0:pi/20:4*pi;phi= theta.^2- theta;[t,p]=meshgrid(theta,phi);r=t.*p;subplot(1,2,1);mesh(t,p,r);ylabel('x');xlabel('y');zlabel('z');[x,y,z]=sph2cart(t,p,r);subplot(1,2,2);mesh(x,y,z);ylabel('x');xlabel('y');zlabel('z');2.球曲面的法线[x,y,z]=sphere;Surfnorm(x,y,z)3.x=rand(100,1)*16-8;y=rand(100,1)*16-8;r=sqrt(x.^2+y.^2)+eps;z=sin(r)./r;xlin=linspace(min(x),max(x),33);ylin=linspace(min(y),max(y),33); [X,Y]= meshgrid(xlin,ylin);Z=griddata(x,y,z,X,Y);mesh(X,Y,Z);axis tight;hold on;ylabel('x');xlabel('y');zlabel('z'); plot3(x,y,z,’r’,’MarkerSize’,15)x=rand(1000,1)*16-8;y=rand(1000,1)*16-8;r=sqrt(x.^2+y.^2)+eps;z=sin(r)./r;xlin=linspace(min(x),max(x),99);ylin=linspace(min(y),max(y),99); [X,Y]= meshgrid(xlin,ylin);Z=griddata(x,y,z,X,Y);mesh(X,Y,Z);axis tight;hold on;ylabel('x');xlabel('y');zlabel('z'); plot3(x,y,z,'r','MarkerSize',30);去掉网格后:4.圆通fnplt(fncmb(rsmak(‘cylinder’,1,2),[0 0 -1;0 1 0;1 0 0])); axis equal,axis off;shading interp5.c=8.01*10^(-6);T=9.8*0.940*10^(-7);for m=1:100a=m/10000000;for n=1:100b=n/10000000;omiga(m,n)=sqrt((10.6667*a^3*b^5+10.6667*a^5*b^3)/(2.3112*a^5*b^5*c)* T)/(2*pi);endendmesh((1:100)/10000000,(1:100)/10000000,omiga);ylabel('半短轴b');xlabel('半长轴a');zlabel('频率f');6.马鞍面x=-8:8; y=-8:8;[X,Y]= meshgrid(x,y);Z=(X.^2./4.^2-Y.^2./5.^2);meshz(X,Y,Z);ylabel('x');xlabel('y');zlabel('z');x=-8:8;y=-8:8;[X,Y]= meshgrid(x,y);Z=X.^2./4.^2-Y.^2./5.^2;surfc(X,Y,Z);ylabel('x');xlabel('y');zlabel('z');7.螺旋线t=0:pi/60:10*pi;x=sin(t);y=cos(t);plot3(x,y,t,'*-b');ylabel('x');xlabel('y');zlabel('z');t=0:pi/60:10*pi;x=sin(t);y=cos(t);fill3(x,y,t,'*-b');ylabel('x');xlabel('y');zlabel('z');8.[x,y]= meshgrid([-2:0.2:2]); f=x.^2+y.^2;[fx,fy]= gradient(f,0.2,0.2); quiver(x,y,fx,fy);hold oncontour(x,y,f);9.[x,y]= meshgrid([-4:0.1:4]); z=x.*exp(-x.^2-y.^2);plot3(x,y,z);10. [x,y]= meshgrid([-2:0.05:2]); z=x.*exp(-x.^2-y.^2);surf(x,y,z);11.牛顿环(动态的)clearR=1;N=400;lamda=200e-9;rr=0.0017; [x,y]= meshgrid(linspace(-rr,rr,N)); r=sqrt(x.^2+y.^2);phi=r.^2/R./lamda.*pi.*2+pi;I=4.*cos(phi./2).^2;H=imshow(I);t=0;k=1;while k;s=get(gcf,'currentkey');if strcmp(s,'space');clc;k=0;endt=t+0.01;pause(0.2);phi=phi+t;I=4.*cos(phi./2).^2;set(H,'CData',I);end12.衍射调制下的双孔干涉条纹clear alllambda=500e-9;D=1;d=1e-6;a=3.5*d;ymax=10*lambda*D/a;xmax=ymax;N=101;xs=linspace(-xmax,xmax,N);ys=linspace(-ymax,ymax,N);for i=1:N;for j=1:N;r1(i,j)=sqrt(D.^2+(ys(i)-a./2).^2+xs(i).^2);r2(i,j)=sqrt(D.^2+(ys(j)-a./2).^2+xs(j).^2);Dr=r2-r1;phi(i,j)=Dr(i,j)./lambda.*pi.*2;m(i,j)=pi.*d.*sin(phi(i,j))./lambda;I(i,j)=(4.*cos(phi(i,j)./2).^2).*real((2.*besselj(1,m(i,j))./m(i,j)). ^2);endendNC=225;Ir=I*NC;subplot(1,2,1);image(xs,ys,Ir);axis equalcolormap(gray(NC));subplot(1,2,2);plot(I,m),hold onlambda=600e-9;D=1;d=1e-6;a=2.5*d;ymax=10*lambda*D/a;xmax=ymax;N=101;xs=linspace(-xmax,xmax,N);ys=linspace(-ymax,ymax,N);for i=1:N;for j=1:N;r1(i,j)=sqrt(D.^2+(ys(i)-a./2).^2+xs(i).^2);r2(i,j)=sqrt(D.^2+(ys(j)-a./2).^2+xs(j).^2);Dr=r2-r1;phi(i,j)=Dr(i,j)./lambda.*pi.*2;m(i,j)=pi.*d.*sin(phi(i,j))./lambda;I(i,j)=(4.*cos(phi(i,j)./2).^2).*real((2.*besselj(1,m(i,j))./m(i,j)). ^2);endendNC=225;Ir=I*NC;colormap(gray(NC));plot(m,I),hold on13.lambda=500e-9;D=1;d=1e-6;a=3.5*d;ymax=10*lambda*D/a;xmax=ymax;N=101;xs=linspace(-xmax,xmax,N);ys=linspace(-10000*ymax,10000*ymax,N);for i=1:N;for j=1:N;r1(i,j)=sqrt(D.^2+(ys(i)-a./2).^2+xs(i).^2);r2(i,j)=sqrt(D.^2+(ys(j)-a./2).^2+xs(j).^2);Dr=r2-r1;phi(i,j)=Dr(i,j)./lambda.*pi.*2;I(i,j)=real(4.*cos(phi(i,j)./2).^2);endendNC=225;Ir=I/3.*NC;image(xs,ys,Ir);colormap(gray(NC));hold on14.沙丘figure( 'Position',[200 31 700 696],'color','w'); hold on ;axis equal ; axis offtitle('沙丘','fontsize',16,'color','k');text(180,480,'——万祎龙 ','fontsize',12,'color','k');i=1;for py=1:2:360c=py*4*pi/360;b=pi*cos(c);a=0:pi/30:6*pi;x=100*a/pi+20;y=10*sin(a+cos(a)*pi-b)*cos(c)+py;plot(x,y,'color','k');Z(i,:)=sin(a+cos(a)*pi-b)*cos(c);i=i+1;end15.%存脚本文件heart.m%%一个半径为R的圆周等分成N份,然后一等分点为圆心,以等分点到该圆垂直直径%%的距离为半径画圆。
N=90;R=1;t0=(1:N)*2*pi/N; %%中央圆x0=R*cos(t0);y0=R*sin(t0);t1=linspace(0,2*pi,100); %运动圆X=cos(t1);Y=sin(t1);figure('color','k');hold onfor i=1:Nx=x0(i)+x0(i)*X;y=y0(i)+x0(i)*Y;plot(x,y,'g');endaxis equalaxis off16.figure('color','k','Position',[1 31 1280 696]);axes1=axes('position',[0.2 0.6 0.3 0.3]);axis( axes1,'equal');axis(axes1,'off');hold onrl=1;rs=0.5;N=30;t1=linspace(0,2*pi,N); xl=rl*cos(t1); yl=rl*sin(t1); t2=linspace(0,2*pi,100); xs=rs*cos(t2); ys=rs*sin(t2);for i=1:Nplot(xl(i)+xs,yl(i)+ys);endaxes2=axes('position',[0.5 0.6 0.3 0.3]);axis( axes2,'equal');axis(axes2,'off');hold onrl=1;rs=1;N=30;t1=linspace(0,2*pi,N); xl=rl*cos(t1); yl=rl*sin(t1);t2=linspace(0,2*pi,100); xs=rs*cos(t2); ys=rs*sin(t2);for i=1:Nplot(xl(i)+xs,yl(i)+ys);endaxes3=axes('position',[0.35 0.20 0.3 0.3]);axis( axes3,'equal');axis(axes3,'off');hold onrl=1;rs=1.5;N=30;t1=linspace(0,2*pi,N); xl=rl*cos(t1); yl=rl*sin(t1);t2=linspace(0,2*pi,100); xs=rs*cos(t2); ys=rs*sin(t2);for i=1:Nplot(xl(i)+xs,yl(i)+ys);end17. %%一个半径为R的圆周等分成N份,然后一等分点为圆心,以等分点到定点%%的距离为半径画圆。