您好,欢迎访问三七文档
MATLAB的二维绘图基础了解了MATLAB的矩阵和向量概念与输入方法之后,MATLAB的二维绘图再简单也不过了。假设有两个同长度的向量x和y,则用plot(x,y)就可以自动绘制画出二维图来。如果打开过图形窗口,则在最近打开的图形窗口上绘制此图,如果未打开窗口,则开一个新的窗口绘图。〖例〗正弦曲线绘制:t=0:.1:2*pi;%生成横坐标向量,使其为0,0.1,0.2,...,6.2y=sin(t);%计算正弦向量plot(t,y)%绘制图形这样立即可以得出如图所示的二维图[4.1(a)]plot()函数还可以同时绘制出多条曲线,其调用格式和前面不完全一致,但也好理解。y1=cos(t);plot(t,y,t,y1);%或plot(t,[y;y1]),即输出为两个行向量组成的矩阵。图形见4.1(b)。plot()函数最完整的调用格式为:plot(x1,y1,选项1,x2,y2,选项2,x3,y3,选项3,...)其中所有的选项如表4.1所示。一些选项可以连用,如'-r'表示红色实线。由MATLAB绘制的二维图形可以由下面的一些命令简单地修饰。如grid%加网格线xlabel('字符串')%给横坐标轴加说明ylabel('字符串')%给纵坐标轴加说明,%并自动旋转90度title('字符串')%给整个图形加图题得出的图形如右图所示。axis()函数可以手动地设置x,y坐标轴范围还可以使用plotyy()函数绘制具有两个纵坐标刻度的图形。坐标系的分割在MATLAB图形绘制中是很有特色的,比较规则的分割方式是用subplot()函数定义的,其标准调用格式为subplot(n,m,k)其中,n和m为将图形窗口分成的行数和列数,而k为相对的编号。例如在标准的Bode图绘制中需要将窗口分为上下两个部分(即n=2,m=1),分割后上部编号为1,下部编号为2。MATLAB的图形对象简介MATLAB从4.0版本开始就提出了句柄图形学(HandleGraphics)的概念,为面向对象的图形处理提供了十分有用的工具。和早期版本的MATLAB相比较,其最大区别在于,它在图形绘制时其中每个图形元素(比如其坐标轴或图形上的曲线、文字等)都是一个独立的对象。用户可以对其中任何一个图形元素进行单独地修改,而不影响图形的其他部分,具有这样特点的图形称为向量化的绘图。这种向量化的绘图要求给每个图形元素分配一个句柄(handle),以后再对该图形元素做进一步操作时,则只需对该句柄进行操作即可。MATLAB5.0版进一步加强了图形绘制的功能,而5.3版绘图又具有自己的新特色。例如它提供了新的图形编辑程序,并定义了一些新的三维绘图函数等。本章将主要介绍MATLAB5.3版本的应用与特性,并介绍部分有关句柄图形学的内容。其余有关句柄图形学的问题,如窗口特性设置、图形界面设计等项内容将在第6章中讲述图形界面设计内容时详细介绍。MATLAB6也在图形显示,特别是三维图形显示与照相机参数设置等方面引入了新鲜的内容。MATLAB定义的各种图形对象及其关系如下图所示。获取和改变对象的属性可以采用get()和set()函数对来实现。set(句柄,属性1,属性值1,属性2,属性值2,...)属性值=get(句柄,属性)坐标轴对象时MATLAB图形中常用的对象,坐标轴对象可以用MATLAB5.3上的菜单项添加。添加之后,可以用鼠标改变其大小和形状,其他一些属性说明如下:Box属性:表示是否需要坐标轴上的方框,选项可以为'on'和'off',默认的值为'on'。本书中在后面介绍属性值时,将把默认的属性值列在前面。ColorOrder属性:设置多条曲线的颜色顺序,应该为一个nx3矩阵,可以由colormap()函数来设置。GridLineStyle属性:网格线类型,如实线、虚线等,其设置类似于plot()函数的选项,默认值为':',见前面的表格。NextPlot属性:表示坐标轴图形的更新方式,'replace'是默认的选项,表示重新绘制,而'add'选项表示在原来的图形上叠印,它相当于直接使用holdon命令的效果。Title属性:本坐标轴标题的句柄。而其具体内容由title()函数设定,由此句柄就可以访问到原来的标题了。XLabel属性:x轴标注的句柄,其内容由xlabel()函数设定。此外,类似地还有YLabel和ZLabel属性等。XDir属性:x轴方向,可以选择'normal'(正向)和'rev'(逆向),此外YDir和ZDir属性也是类似的。XGrid属性:表示x轴是否加网格线,可选值为'off'和'on',此外还类似地有YGrid和ZGrid选项。XLim属性:x轴上下限,以向量[xm,xM]形式给出。此外,还有YLim和ZLim属性,前面介绍的axis()函数实际上是对这些属性的直接赋值。XScale属性:x轴刻度类型设置,可以为'linear'(线性的)和'log'(对数的)。此外还有YScale和ZScale属性。XTick和XTickLabel属性:XTick属性将给出x轴上标尺点值的向量,而XTickLabel将存放这些标尺点上的标记字符串。对y和z轴也将有相应的标尺属性,如ZTick等。MATLAB图形上的文字修饰字符对象及其属性文字标注是图形修饰中的重要因素,它可以是用户在窗口上随意添加的字符说明,还可以是坐标轴对象中所用到的刻度标志等。字符对象的常用属性如下:Color属性:字符的颜色。该属性的属性值是一个1x3颜色向量。FontAngle属性:字体倾斜形式。如正常'normal'和斜体'italic'等。FontName属性:字体的名称。如'TimesNewRoman'与'Courier'等。FontSize属性:字号大小。默认以pt为单位,属性值应该为实数。FontWeight属性:字体是否加黑。可以选择'light'、'normal'(默认值)、'demi'和'bold'4个选项,其颜色逐渐变黑。HorizontalAlignment属性:表示文字的水平对齐方式。可以有'left'(按左边对齐)、'center'(居中对齐)、'right'(按右边对齐)三种选择。类似地,对字符矩阵的位置还有VerticalAlignment属性。FontUnits属性:字体大小的单位。如'points'(磅数,即pt)为默认的值,此外,还可以使用如下单位'inches'(英寸)、'centimeters'(厘米)、'normalized'(归一值)与'pixels'(像素)等。Rotation属性:字体旋转角度。可以为任何数值。Editing属性:是否允许交互式修改。选项可以为'on'和'off'。String属性:构成本字符对象的字符串。可以是字符串矩阵。Interpreter属性:是否允许TeX格式。选项为'tex'(允许TeX格式)和'none'(不允许)两种,前者显示的效果好,而后者速度快。Extent属性:字符串所在的位置范围,是只读型的,1x4向量,前两个值表示字符串所在位置的左下角坐标,而后两个分量分别为字符对象的长和高。MATLAB字符串中可以直接使用的一些TeX命令见表4-3。〖例〗给出下面的MATLAB命令t=['\partial(f_ip)/\partialt=-\Sigma_{i=1}^n\partial(f_ip)/',...'\partialx_i+0.5\Sigma_{i=1}^n\Sigma_{j=1}^n',...'\partial^2(b_{ij}p)/\partialx_i\partialx_j'];tt=str2mat(t,'Y(\omega)=\int_0^\inftyy(t)e^{-j\omegat}dt');[x,y]=ginput(1);text(x,y,tt);则将得出如下图所示的结果。看见较复杂的数学公式也可以在MATLAB窗口中显示出来。例〗分形理论是一个很有趣的领域,在这里我们给出一个简单的例子。任意选定一个二维平面上的初始点坐标(x0,y0),假设我们可以生成一个在[0,1]区间上均匀分布的随机数i,那么根据其取值的大小,可以按下面的公式生成一个新的坐标点(x1,y1):从新坐标再根据随机数计算下一个点,如此类推。可以将上面的算法编写出下面的MATLAB函数function[x,y]=frac_tree(x0,y0,v,N)x=[x0;zeros(N-1,1)];y=[y0;zeros(N-1,1)];fori=2:Nvv=v(i);ifvv0.05,y(i)=0.5*y(i-1);elseifvv0.45,x(i)=0.42*(x(i-1)-y(i-1));y(i)=0.2+0.42*(x(i-1)+y(i-1));elseifvv0.85,x(i)=0.42*(x(i-1)+y(i-1));y(i)=0.2-0.42*(x(i-1)-y(i-1));else,x(i)=0.1*x(i-1);y(i)=0.1*y(i-1)+0.2;endend调用此函数,我们可以由下面的MATLAB命令生成10,000个这样的点,并将这些点在MATLAB图形窗口中用点的形式表示出来,如图所示。N=10000;v=rand(N,1);[x,y]=frac_tree(0,0,v,N);h=plot(x(1:10000),y(1:10000),'.'),给出下面的命令可以设置绘图点的大小:set(h,'MarkerSize',4)对大的N值,计算量大,可以考虑采用MEXC格式改写MATLAB函数以加快速度。MATLAB其他二维图形绘制函数除了标准的plot()函数外,MATLAB还提供了一些其他函数,具体调用格式和意义请见下表这里只给出几个例子:彗星状轨迹绘制:考虑一个给定函数f(x)=tan(sin(x))-sin(tan(x))选定自变量~$x$的变化范围为x属于[-],则可以由下面的函数绘制出不同模式的图形。x=-pi:pi/200:pi;y=tan(sin(x))-sin(tan(x));comet(x,y);极坐标曲线绘制:用polar(r,t)函数,其中r为幅值向量,t为角度向量。〖例〗绘制=cos(5/4)+1/3;其中属于[0,8],绘制极坐标曲线。〖解〗MATLAB命令t=0:.1:8*pi;r=cos(5*t/4)+1/3;polar(t,r)利用下面的MATLAB提供的绘图命令可以绘制出各种各样的二维曲线。x=-2:0.1:2;y=sin(x);subplot(221);feather(x,y);xlabel('(a)feather()')subplot(222);stairs(x,y);xlabel('(b)stairs()')subplot(223);stem(x,y);xlabel('(c)stem()')subplot(224);fill(x,y,'r');xlabel('(d)fill()')考察MATLAB的Gauss伪随机数发生函数randn()的分布效果,首先生成30,000个Gauss伪随机数,然后由hist()函数绘制出该伪随机数的分布函数,并和概率密度的理论值相比较。这一分析的MATLAB语句如下y=randn(1,30000);xx=-3.8:0.4:3.8;zz=hist(y,xx);zz=zz/(30000*0.4);x1=-3.8:0.1:3.8;y1=1/sqrt(2*pi)*exp(-x1.^2/2);bar(xx,zz),holdon,plot(x1,y1);holdoff半对数与全对数坐标系:可以使用semilogx(),semilogy()和loglog()。theta=0:0.1:6*pi;r=cos(theta/3)+1/9;subplot(2,2,1),polar(theta,r);subplot(2,2,2);p
本文标题:2二维绘图
链接地址:https://www.777doc.com/doc-2914591 .html