二维作图绘图命令plot 绘制x-y 坐标图;loglog 命令绘制对数坐标图;semilogx 和semilogy 命令绘制半对数坐标图;polor 命令绘制极坐标图.基本形式如果y 是一个向量,那么plot(y)绘制一个y 中元素的线性图.假设我们希望画出y=[0., 0.48, 0.84, 1., 0.91, 6.14 ]则用命令:plot(y)它相当于命令:plot(x, y),其中x=[1,2,…,n]或x=[1;2;…;n],即向量y 的下标编号, n 为向量y 的长度Matlab 会产生一个图形窗口,显示如下图形,请注意:坐标x 和y 是由计算机自动绘出的.图4.1.1.1 plot([0.,0.48,0.84,1.,0.91,6.14])matlab 中如何在指定一点画一个填充颜色的小圆plot(1,1,'r.','markersize',50)x=0:0.05:4*pi;y=sin(x); plot(x,y) grid on, title(' y=sin( x )曲线图' ) xlabel(' x = 0 : 0.05 : 4Pi ')结果见下图.图4.1.1.2 y=sin(x)的图形title 图形标题 xlabel x 坐标轴标注 ylabel y 坐标轴标注 text标注数据点上面的图形没有加上 x 轴和 y 轴的标注,也没有标题.用 xlabel ,ylabel ,title命令可以加上.如果x ,y 是同样长度的向量,plot(x,y)命令可画出相应的 x 元素与y 元素的 x-y坐标图.例:多重线在一个单线图上,绘制多重线有三种办法.第一种方法是利用 plot 的多变量方式绘制:plot(x1,y1,x2,y2,...,xn,yn)x1,y1,x2,y2,...,xn,yn 是成对的向量,每一对 x, y 在图上产生如上方式的单线.多变量方式绘图是允许不同长度的向量显示在同一图形上. 第二种方法也是利用 plot 绘制,但加上 hold on/off 命令的配合:plot(x1,y1) hold on plot(x2,y2) hold off第三种方法还是利用 plot 绘制,但代入矩阵:表4.1.1.1 Matlab 图形命令保持图形窗口的图形hold给图形加上网格 grid legend 在右上角加解释文字如果plot 用于两个变量plot(x,y),并且x,y 是矩阵,则有以下情况:(1)如果y 是矩阵,x 是向量,plot(x,y)用不同的画线形式绘出y 的行或列及相应的x 向量,y 的行或列的方向与x 向量元素的值选择是相同的.(2)如果x 是矩阵,y 是向量,则除了x 向量的线族及相应的y 向量外,以上的规则也适用.(3)如果x,y 是同样大小的矩阵,plot(x,y)绘制x 的列及y 相应的列.还有其它一些情况,请参见Matlab 的帮助系统.线型和颜色的控制如果不指定划线方式和颜色,Matlab 会自动为您选择点的表示方式及颜色.您也可以用不同的符号指定不同的曲线绘制方式.例如:plot(x,y,'*') 用'*'作为点绘制的图形.plot(x1,y1,':',x2,y2,'+') 用':'画第一条线,用'+'画第二条线.线型、点标记和颜色的取值有以下几种:线型点标记颜色- 实线. 点y 黄: 虚线o 小圆圈m 棕色-. 点划线x 叉子符 c 青色-- 间断线+ 加号r 红色* 星号g 绿色x=sin(t); y=cos(t);plot(t,x, '+r',t,y, '-b')图4.1.3.1不同线型、颜色的 sin,cos 图形t=-3.14:0.2:3.14; 例如:如果你的计算机系统不支持彩色显示,Matlab 将把颜色符号解释为线型符 号,用不同的线型表示不同的颜色.颜色与线型也可以一起给出,即同时指定曲线的颜色和线型. 表4.1.3.1线型和颜色控制符h六角星p 五角星 < 朝左三角 > 朝右三角 v 朝下三角 黑色朝上三角 k ^ w白色 d 菱形蓝色 b s 方格对数图、极坐标图及条形图loglog、semilogx、semilogy 和polar 的用法和plot 相似.这些命令允许数据在不同的graph paper 上绘制,例如不同的坐标系统.先介绍的fplot 是扩展来的可用于符号作图的函数.●fplot(fname,lims)绘制fname 指定的函数的图形.●polar( theta, rho)使用相角theta 为极坐标形式绘图,相应半径为rho,其次可使用grid 命令画出极坐标网格.●loglog 用log10-log10标度绘图.●semilogx 用半对数坐标绘图,x 轴是log10,y 是线性的.●semilogy 用半对数坐标绘图,y 轴是log10,x 是线性的.●bar(x)显示x 向量元素的条形图,bar 不接受多变量.●hist 绘制统计频率直方图.●histfit(data,nbins)绘制统计直方图与其正态分布拟合曲线.fplot 函数的绘制区域为lims=[xmin,xmax],也可以用lims=[xmin,xmax,ymin,ymax]指定y 轴的区域.函数表达式可以是一个函数名,如sin,tan 等;也可以是带上参数x 的函数表达式,如sin(x),diric(x,10);也可以是一个用方括号括起的函数组,如[sin, cos].例1:fplot('sin',[0 4*pi])例2:fplot('sin(1 ./ x)', [0.01 0.1])例3:fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi],'-o')例4:fplot('[sin(x), cos(x) , tan(x)]',[-2*pi 2*pi -2*pi 2*pi]) %%(图4.1.4.1)图4.1.4.1 sin,cos,tan 函数图形图4.1.4.2半对数图下面介绍的是其它几个作图函数的应用.例5:半对数坐标绘图t=0.001:0.002:20;y=5 + log(t) + t;semilogx(t,y, 'b')t=0:0.01:2*pi;polar(t,sin(6*t))%% (图4.1.4.3)图4.1.4.3极坐标绘图 图4.1.4.4正态分布的统计直方图与其正态分布拟合曲线例7:正态分布图我们可以用命令 normrnd 生成符合正态分布的随机数.normrnd(u,v,m,n)其中,u 表示生成随机数的期望,v 代表随机数的方差. 运行:a=normrnd(10,2,10000,1);histfit(a)%% (图4.1.4.4)hold onsemilogx(t,t+5, 'r')%% (图4.1.4.2)例6:极坐标绘图我们可以得到正态分布的统计直方图与其正态分布拟合曲线.例8:比较正态分布(图4.1.4.5(1))与平均分布(图4.1.4.5(2))的分布图:yn=randn(30000,1); %%正态分布x=min(yn) : 0.2 : max(yn);subplot(121)hist(yn, x)yu=rand(30000,1); %%平均分布subplot(122)hist(yu, 25)4.1.4.5(1) 4.1.4.5(2)图4.1.4.5正态分布与平均分布的分布图在绘图过程中,经常要把几个图形在同一个图形窗口中表现出来,而不是简单地叠加(例如上面的例8).这就用到函数subplot.其调用格式如下:subplot(m,n,p)subplot 函数把一个图形窗口分割成m×n 个子区域,用户可以通过参数p 调用个各子绘图区域进行操作.子绘图区域的编号为按行从左至右编号.例9:绘制子图x=0:0.1*pi:2*pi;subplot(2,2,1)plot(x,sin(x),'-*');title('sin(x)');subplot(2,2,2)plot(x,cos(x),'--o');title('cos(x)');subplot(2,2,3)plot(x,sin(2*x),'-.*');title('sin(2x)');subplot(2,2,4);plot(x,cos(3*x),':d')title('cos(3x)')得到图形如下:图4.1.5.1子图利用二维绘图函数patch,我们可绘制填充图.绘制填充图的另一个函数为fill.下面的例子绘出了函数humps(一个Matlab 演示函数)在指定区域内的函数图形.例10:用函数patch 绘制填充图fplot('humps',[0,2],'b')hold onpatch([0.5 0.5:0.02:1 1],[0 humps(0.5:0.02:1) 0],'r');hold offtitle('A region under an interesting function.')grid图4.1.6.1填充图我们还可以用函数fill 来绘制类似的填充图.例11:用函数fill 绘制填充图x=0:pi/60:2*pi;y=sin(x);x1=0:pi/60:1;y1=sin(x1);plot(x,y,'r');hold onfill([x1 1],[y1 0],'g')图4.1.6.2填充图三维作图mesh(Z)语句可以给出矩阵Z 元素的三维消隐图,网络表面由Z 坐标点定义,与前面叙述的x-y 平面的线格相同,图形由邻近的点连接而成.它可用来显示用其它方式难以输出的包含大量数据的大型矩阵,也可用来绘制Z 变量函数.显示两变量的函数Z=f(x,y),第一步需产生特定的行和列的x-y 矩阵.然后计算函数在各网格点上的值.最后用mesh 函数输出.下面我们绘制sin(r)/r 函数的图形.建立图形用以下方法:x=-8:.5:8;y=x';x=ones(size(y))*x;y=y*ones(size(y))';R=sqrt(x.^2+y.^2)+eps;z=sin(R)./R;mesh(z) %% 试运行mesh(x,y,z),看看与mesh(z)有什么不同之处?(坐标问题)各语句的意义是:首先建立行向量x,列向量y;然后按向量的长度建立1- 矩阵;用向量乘以产生的1-矩阵,生成网格矩阵,它们的值对应于x-y 坐标平面;接下来计算各网格点的半径;最后计算函数值矩阵Z.用mesh 函数即可以得到图形.图4.2.1三维消隐图第一条语句x 的赋值为定义域,在其上估计函数;第三条语句建立一个重复行的x 矩阵,第四条语句产生y 的响应,第五条语句产生矩阵R(其元素为各网格点到原点的距离).用mesh 方法结果如上.(1) meshc 与函数mesh 的调用方式相同,只是该函数在 mesh 的基础上又增加了绘制相应等高线的功能.下面来看一个 meshc 的例子:[x,y]=meshgrid([-4:.5:4]);z=sqrt(x.^2+y.^2);meshc(z)%% 试运行 meshc(x,y,z),看看与 meshc(z)有什么不同之处?我们可以得到图形:图4.2.2.1 meshc 图地面上的圆圈就是上面图形的等高线.另外,上述命令系列中的前4行可用以下一条命令替代:[x, y]=meshgrid(-8:0.5:8)[x,y]=meshgrid([-4:.5:4]); z=sqrt(x.^2+y.^2);meshz(z) %% 试运行meshz(x,y,z),看看与meshz(z)有什么不同之处?我们得到图形:图4.2.2.2 meshz 图(1)在Matlab 中有一个专门绘制圆球体的函数sphere,其调用格式如下:(2)函数meshz 与mesh 的调用方式也相同,不同的是该函数在mesh 函数的作用之上增加了屏蔽作用,即增加了边界面屏蔽.例如:此函数生成三个(n+1)×(n+1)阶的矩阵,再利用函数surf(x,y,z)可生成单位球面.[x,y,z]=sphere 此形式使用了默认值n=20sphere(n) 只绘制球面图,不返回值.运行下面程序:sphere(30);axis square;我们得到球体图形:图4.2.3.1 球面图若只输入sphere 画图,则是默认了n=20的情况.(2) surf 函数也是Matlab 中常用的三维绘图函数.其调用格式如下:[x,y,z]=sphere(n)%绘制地球表面的气温分布示意图.[a,b,c]=sphere(40);t=abs(c); %求绝对值surf(a,b,c,t);axis equalcolormap('hot')我们可以得到图形如下:surf(x,y,z,c)输入参数的设置与mesh 相同,不同的是mesh 函数绘制的是一网格图,而surf 绘制的是着色的三维表面.Matlab 语言对表面进行着色的方法是,在得到相应网格后,对每一网格依据该网格所代表的节点的色值(由变量c 控制),来定义这一网格的颜色.若不输入c,则默认为c=z.我们看下面的例子:图4.2.3.2 等温线示意图(1)坐标轴的控制函数axis,调用格式如下:axis([xmin,xmax,ymin,ymax,zmin,zmax])用此命令可以控制坐标轴的范围.与axis 相关的几条常用命令还有:axis auto 自动模式,使得图形的坐标范围满足图中一切图元素axis equal 严格控制各坐标的分度使其相等axis square 使绘图区为正方形axis on 恢复对坐标轴的一切设置axis off 取消对坐标轴的一切设置axis manual 以当前的坐标限制图形的绘制(2)grid on 在图形中绘制坐标网格.grid off 取消坐标网格.(3)xlabel, ylabel, zlabel 分别为x 轴, y 轴, z 轴添加标注.title 为图形添加标题.以上函数的调用格式大同小异,我们以xlabel 为例进行介绍:xlabel('标注文本','属性1','属性值1','属性2','属性值2',…)这里的属性是标注文本的属性,包括字体大小、字体名、字体粗细等.例如:[x, y]=meshgrid(-4:.2:4);R=sqrt(x.^2+y.^2);z=-cos(R);mesh(x,y,z)xlabel('x\in[-4,4]','fontweight','bold');ylabel('y\in[-4,4]','fontweight','bold');zlabel('z=-cos(sqrt(x^2+y^2))','fontweight','bold');title('旋转曲面','fontsize',15,'fontweight','bold','fontname','隶书');图4.2.4.1添加标注以上各种绘图方法的详细用法,请看联机信息.对平面上n 个点:在平面直线族{ 为实数}中寻求一条直线,使得散点到与散点相对应的在直线上的点之间的纵坐标的误差的平方和最小,用微积分的方法可得:所求得的这条直线:称为回归直线.例:已知如下点列,求其回归直线,并计算最小误差平方和.x 0.1 0.1 .12 .13 .14 .15 .16 .17 .18 .2 .21 .23 1y 42 43. 45 45. 45 47. 49 53 50 55 55 605 5 5参考的程序如下:x=[0.1 0.11 .12 .13 .14 .15 .16 .17 .18 .2 .21 .23];y=[42 43.5 45 45.5 45 47.5 49 53 50 55 55 60];n=length(x);xb=mean(x);yb=mean(y);x2b=sum(x.^2)/n;xyb=x*y'/n;b=(xb*yb-xyb)/(xb^2-x2b);a=yb-b*xb;y1=a+b.*x;plot(x,y,'*',x,y1);serror=sum((y-y1).^2)。