第四讲-matlab数学建模之图像处理、程序设计_第1页
第四讲-matlab数学建模之图像处理、程序设计_第2页
第四讲-matlab数学建模之图像处理、程序设计_第3页
第四讲-matlab数学建模之图像处理、程序设计_第4页
第四讲-matlab数学建模之图像处理、程序设计_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第四讲图形处理MATLAB7程序设计21.基本的绘图命令基本的绘图命令绘图的一般步骤绘制二维曲线图极坐标图形的绘制多个图形的绘制方法曲线的色彩、线型和数据点型3(1)基本的绘图命令

绘制基本线性图的函数表函

名功

述plot在x轴和y轴都按线性比例绘制二维图形plot3在x轴、y轴和z轴都按线性比例绘制三维图形loglog在x轴和y轴按对数比例绘制二维图形semilogx在x轴按对数比例,y轴按线性比例绘制二维图形semilogy在y轴按对数比例,x轴按线性比例绘制二维图形plotyy绘制双y轴图形图形的标注

为清晰表达图形和图中曲线的意义,应在图形中加入适当的标注,包括图形标题、X轴、Y轴名称等。

4图形标注命令含义title图形标题xlabel对x轴标注名称ylabel对y轴标注名称text通过程序在图形指定位置放入文本字符串gtext点击鼠标指定位置放入文本字符串legend在图形中添加注解grid网格线axis坐标轴调整hold图形保持zoom图形缩放5(2)绘图的一般步骤基本的绘图步骤步

骤典

码1.准备绘图数据x=0:0.2:12;y1=bessel(1,x);2.选择一个窗口并在窗口中给图形定位figure(1),subplot(2,2,1)3.调用基本的绘图函数h=plot(x,y1,x,y2,x,y3);4.选择线型和标记特性set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})5.设置坐标轴的极限值、标记符号和网格线axis([012-0.51])6.使用坐标轴标签、图例和文本对图形进行注释xlabel('Time')ylabel('Amplitude')6(3)绘制二维曲线图二维曲线图在MATLAB7中的绘制是最为简便的。如果将X轴和Y轴的数据分别保存在两个向量中,同时向量的长度完全相等,那么可以直接调用函数进行二维图形的绘制。在MATLAB7中,使用plot函数进行二维曲线图的绘制。7A、二维平面图形与坐标系1.几个基本的绘图命令

a.线性坐标曲线

plot

函数命令

plot是

MATLAB二维曲线绘图中最简单、最重要、使用最广泛的一个线性绘图函数。它可以生成线段、曲线和参数方程曲线的函数图形。

命令格式:plot(X,Y)plot(x1,y1,x2,y2,…):综合调用方式

8用命令plot(x,y)绘制函数

y=cos(x)在两个周期内的图形。

x=0:0.01:2*pi;y=cos(x);plot(x,y)在同一图形窗口中用命令plot(x,y)绘出正弦余弦函数的图形。

x=0:0.01:2*pi;y=[sin(x);cos(x)];plot(x,y)9调用格式:plot(x,y,s),s为类型说明参数,是字符串。s字符串可以是三种类型的符号之一,也可以是线型与颜色和定点标记与颜色的组合;如果没有s参数,plot将使用缺省设置(实线,前七种颜色顺序着色)绘制曲线;在当前坐标系中绘图时,每调入一次绘图函数,MATLAB将擦掉坐标系中已有的图形对象。可以用holdon命令在一个坐标系中增加新的图形对象。注意MATLAB会根据新图形的大小,重新改变坐标系的比例。用不同的线型和标注来绘制两条曲线。t1=0:0.1:2*pi;t2=0:0.1:6;y1=sin(t1);y2=sqrt(t2);plot(t1,y1,':hb',t2,y2,'--g')

10绘制二维曲线图>>x=0:0.01:10;>>y=tan(x);>>plot(x,y)>>11(4)极坐标图形的绘制MATLAB提供了polar函数来在极坐标下绘制图形:>>x=0:0.01:10;>>y1=sin(x);>>y2=cos(x-2.5);>>polar(y1,y2,'-r+')>>2.极坐标图

polar(theta,rho)绘制以theta为角度,rho为半径的极坐标曲线。例

:绘制以y=sin(2t)*cos(2t)的极坐标曲线。

>>t=0:2*pi/100:2*pi;>>sin2t=sin(2*t);>>cos2t=cos(2*t);>>polar(t,sin2t.*cos2t)13(5)多个图形的绘制方法subplot函数可以实现多个图形的绘制:>>x=0:.1:20;>>subplot(2,2,1)>>plot(x,sin(x));>>14多个图形的绘制方法>>x=0:.1:20;>>subplot(2,2,2)>>plot(x,cos(x));>>15多个图形的绘制方法>>subplot(2,2,3)>>x=0:.1:2;>>y1=tan(x);>>plot(x,y1,'--b*');>>16(6)曲线的色彩、线型和数据点型

曲线的色彩、线型和数据点型参数定义

颜色符号含义数据点型含义线型含义b蓝色.点-实线g绿色xX符号:点线r红色++号-.点划线c篮绿色h六角星形--虚线m紫红色*星号(空白)不画线y黄色s方形

k黑色d菱形

17(1)图题的标注在MATLAB中,通常可以使用3种方式给图形添加图题:使用Insert菜单中的Title命令;使用属性编辑器(PropertyEditor);使用title函数。18图题的标注>>x=0:.1:2;>>y1=sin(x);>>y2=sin(x-0.25);>>y3=sin(x-0.5);>>plot(x,y1,'-.b',x,y2,'--r*',x,y3,'-.gh')>>title('Therethreelines')>>19文本标注举例>>x=linspace(-3,5,100);>>y=cos(x);>>z=sin(x);>>plot(x,y,x,z)>>title('一条正弦曲线和一条余弦曲线')>>xlabel('x的取值范围')>>ylabel('Y和Z的值')>>20(4)图例的添加为了更好地区分所绘制的多条曲线,可以使用图例加以说明,对它们表示的数据进行更准确的区分。可以使用如下3种方法生成图例:打开Insert菜单中并选择Legend命令;单击工具栏中的legend图标;使用legend函数。21图例的添加举例22(5)坐标网格的添加在图形绘制过程中,为了精确地知道图形上某点的坐标,需要绘制坐标网格来定位,MATLAB7语言中提供了grid函数来实现这一功能:gridoff命令关闭坐标网格;gridon命令打开坐标网格gridmirror命令使用更细化的网格;grid(AX,…)命令使用AX坐标系代替当前坐标系。23坐标网格的添加举例>>x=linspace(-5,5,100);>>y=x.^4+22*x.^2-6*x+10;>>plot(x,y)>>gridon>>24(6)使用矩形或是椭圆在图形中圈出重要部分

用户可以使用矩形或是椭圆在图形中圈出特别的区域,从而使得该区域能引起特别的注意。当其中的一个矩形或是椭圆被选中时,用户可以移动并改变它的大小,或是右击它,在弹出的快捷菜单中用户可以选择改变它的属性和外观。25应用举例当右击矩形或是椭圆时,将弹出一个菜单263.三维图形的绘制MATLAB语言提供了三维图形的处理功能。与二维图形相似,绘制三维图形时可以使用MATLAB语言提供的相关函数:三维线图指令plot3三维网线图和曲面图三维网线图三维曲面图27(1)三维线图指令plot3>>%该程序用于绘制三维的螺旋曲线图>>t=0:pi/50:20*pi;>>plot3(sin(t),cos(2*t),sin(t)+cos(t))28(2)三维网线图使用mesh函数来绘制三维网格图形:

>>z=peaks(50);>>mesh(z);>>(2)

三维图形的绘制三.三维曲面图的绘制例

试单独使用山峰演示函数peaks()。>>peaks(30)z=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)

30(3)三维曲面图可是使用surf函数来绘制三维表面图形:>>[X,Y]=meshgrid([-4:0.2:4]);>>Z=exp(-0.5*(X.^2-Y.^2));>>surf(X,Y,Z)>>

三维图形的绘制三维曲面图的绘制

:>>t=0:pi/10:2*pi;>>[X1,Y1,Z1]=cylinder(3,20);>>Z1=2*Z1;>>[X2,Y2,Z2]=cylinder(2+cos(t),20);>>Z2=2*Z2;>>subplot(1,2,1)>>surf(X1,Y1,Z1)>>title('圆柱面')>>subplot(1,2,2)>>surf(X2,Y2,Z2)>>title('半径变化的圆柱面')

三维图形的绘制

三维曲面图的绘制

:>>[X1,Y1,Z1]=sphere(8);>>[X2,Y2,Z2]=sphere(20);>>subplot(1,2,1)>>surf(X1,Y1,Z1)>>title('64个面构成的球面')>>subplot(1,2,2)>>surf(X2,Y2,Z2)>>title('400个面构成的球面')

334.特殊图形的绘制条形图和面积图(BarandAreaGraphs)饼形图(PieCharts)离散型数据图方向和速度矢量图形等高线的绘制(ContourPlots)34(1)条形图和面积图条形图和面积图用于绘制向量和矩阵数据,这两种图形可以用来比较不同组数据的在总体数据中所占的比例,其中条形图适于表现离散型数据,而面积图适于表现连续型数据。函数功能描述bar绘制矩阵Y(m×n)各列的垂直条形图,各条以垂直方向显示barh绘制矩阵Y(m×n)各列的垂直条形图,各条以水平方式显示bar3绘制矩阵Y(m×n)各列的三维垂直条形图,条以垂直方向显示bar3h绘制矩阵Y(m×n)各列的三维垂直条形图,各条以水平方式显示area绘制向量的堆栈面积图35条形图举例集合式条形图的绘制>>y=[12345678910]>>bar(y)36(2)饼形图在统计学中,人们经常要用到饼形图来表示各个统计量占总量的份额,饼形图可以显示向量或矩阵中的元素占所有元素总和的百分比,MATLAB提供了pie函数和pie3函数,分别用于绘制二维饼形图和三维饼形图。37(3)离散型数据图MATLAB7提供了一系列适于表现离散型数据的函数。其中常用的主要有stem函数、stem3函数和stairs函数。38离散型数据图举例使用stem(y)函数来绘制句柄状图形。>>y=rand(20,1);>>stem(y)>>39(4)方向和速度矢量图形MATLAB7提供了一些函数用于绘制方向矢量和速度矢量图形,这些函数有compass、feather、quiver和quiver3。函

数功

述compass显示极坐标图形中的极点发散出来的矢量图feather显示从一条水平线上均匀间隔的点所发散出来的矢量图quiver显示由(u,v)矢量特定的二维矢量图

quiver3显示由(u,v,w)矢量特定的三维矢量图40方向和速度矢量图形举例

用compass函数绘制矢量图形:>>w=0:0.1:6;>>z=sin(w).*exp(j*w);>>compase(z)>>41(5)等高线的绘制等高线函数为创建、显示并标注由一个或多个矩阵确定的等值线。函

名功

述clabel使用等值矩阵生成标注,并将标注显示在当前图形contour显示矩阵Z的二维等高线图contour3显示矩阵Z的三维等高线图contourf显示矩阵Z的二维等高线图,并在各等高线之间用实体颜色填充contourc用于计算由其他等高线函数调用的等值矩阵meshc创建一个与二维等高线图匹配的网线图surfc创建一个与二维等高线图匹配的曲面图42等高线的绘制举例使用contour函数绘制等高线图形:

>>[x,y,z]=peaks;>>contour(x,y,z)>>三维图形的绘制三.等高线图的绘制例:>>[X,Y,Z]=peaks(30);>>subplot(2,2,1)>>surf(X,Y,Z)>>title('演示山峰的三维曲面图')>>subplot(2,2,2)>>contour(X,Y,Z,5)>>title('演示山峰的等高线图')>>subplot(2,2,3)>>contourf(Z,5)>>title('在相邻等高线之间用颜色填充')>>subplot(2,2,4)>>[C,h]=contour(Z,5);>>clabel(C,h)>>title('为等高线添加高度值')

4344视点控制举例view函数的使用:>>[X,Y]=meshgrid([-5:0.2:5]);>>Z=exp(0.5*(X.^2-Y.^2));>>surf(X,Y,Z)>>view(30,60)>>45光照控制举例本例首先绘制一个膜面图,然后使用位置向量[0-21]设置光源的方向。

>>z=peaks(50);>>surf(z)>>light('Position',[0.5-32])>>46绘制图形的图形框架窗口对象MATLAB7语言中实现句柄访问的函数函

名功

述gca获得当前坐标轴对象的句柄gcbf获得当前正在执行调用的图形对象的句柄gcbo获得当前正在执行调用的对象的句柄gcf获得当前图形对象的句柄gco获得当前对象的句柄47核心(Core)对象MATLAB7语言中创建核心对象的函数函

名功

述axes坐标轴imageMATLAB7语言中的图像light光源line二维图形中最基本的图形对象patch按指定方式填充的多边形rectangle具有可设置边界和表面颜色的二维图形对象surface图形表面text图形中的文本48核心(Core)对象举例>>[x,y]=meshgrid([-2:.4:2]);>>Z=x.*exp(-x.^2-y.^2);>>fh=figure('Position',[350275600450],'Color','w');>>ah=axes('Color',[.8.8.8],'XTick',[-2-1012],...'YTick',[-2-1012]);>>sh=surface('XData',x,'YData',y,'ZData',Z,...'FaceColor',get(ah,'Color')+.1,...'EdgeColor','k','Marker','o',...'MarkerFaceColor',[.51.85]);>>view(3)49绘图(Plot)对象举例>>[x,y,z]=peaks;>>[c,h]=contour(x,y,z);>>set(h,'LineWidth',3,'LineStyle',':')>>50set函数在MATLAB7中,使用set函数可以设置对象的属性值,其通常的调用格式如下。set(H,'PropertyName',PropertyValue)命令设置PropertyName的属性为PropertyValue。set(H,a)命令中,a为结构型变量,字段名为图形对象的属性名,字段值为映像的属性值。set(H,'PropertyName1',PropertyValue1,'PropertyName2',PropertyValue2,...)命令同时设置多个属性的值。51默认属性举例>>whitebg('w')%createafigurewithawhitecolorschemeset(0,'DefaultAxesColorOrder',[000],...'DefaultAxesLineStyleOrder','-|--|:|-.')>>Z=peaks;plot(1:49,Z(4:7,:))>>52M文本编辑器的基本知识MATLAB7的控制流语言变量和函数的种类程序设计的辅助函数程序的调试和优化

MATLAB7程序设计531.M文本编辑器的基本知识M文本编辑器M文件的基本属性M文件的组成部分脚本式M文件函数式M文件54M文件的组成部分函数式M文件的组成部分。调出Medit窗口,在里边输入如下内容:functionf=fact(n)%函数的定义行%Computeafactorialvalue.%H1行%FACT(N)returnsthefactorialofN,%帮助文本%usuallydenotedbyN!%Putsimply,FACT(N)isPROD(1:N).%注释f=prod(1:n);%函数体55M文件的组成部分及其功能M文件的组成部分及其功能组

分描

述函数定义行(仅限于函数式M文件)定义函数名,以及输入和输出变量的数目和顺序H1行H1行对程序进行概括性的描述,使用help和lookfor命令都可以调出此行帮助文本这是比H1行更详细的帮助信息,使用help命令时与H1行一起显示函数体函数体是M文件的主要部分,程序的计算和设计都在此实现注释解释程序行的意义56脚本式M文件举例本脚本式M文件绘制一个正弦曲线:

%此文件用于绘制【-2×pi,2×pi】区间的正弦曲线图x=-2*pi:0.05:2*pi;y=sin(x);plot(x,y,'c+')legend('正弦曲线图')57函数式M文件举例例

判断某一年是否为闰年。解:调出Medit窗口,在里边输入如下内容。%该函数用于判断某一年是否为闰年%使用格式为isleapea(y),其中y是用户所要计算的年份functionisleapyear(year)sign=0;ifrem(year,4)==0sign=sign+1;endifrem(year,100)==0sign=sign-1;endifrem(year,400)==0sign=sign+1;endifsign==1fprintf('%4dyearisaleapyear.\n',year)elsefprintf('%4dyearisnotaleapyear.\n',year)end582.控制流最简单的程序控制就是顺序结构,用户依次输入命令语句即可。MATLAB7语言还提供了4种高级的控制结构。它们是:if-else-end结构、switch-case-otherwise-end结构、for循环和while循环。59(1)顺序结构顺序结构是最简单的程序结构,用户在编写好程序之后,系统将按照程序的物理位置顺次执行。a=1;b=2;c=3;s1=a+bs2=s1+cs3=s2/s260(2)if……end语句只有一种选择时的情况if表达式执行语句end61if……end语句有两种选择时的情况if表达式执行语句1else

执行语句2end62if……end语句有3种或3种以上选择时的情况if表达式1

表达式1为真时的执行语句1elseif表达式2

表达式2为真时的执行语句2elseif表达式3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论