MATLAB_的两种基本绘图功能:二维平面图形和三维立体图形绘制
- 格式:pdf
- 大小:192.26 KB
- 文档页数:18
上机实验1:熟悉matlab基本操作实验目的:熟悉matlab的基本操作,掌握一些常用命令的用法。
实验内容:1.编写matlab命令(函数),可以完成以下任务:(1)matlab中的PI?(=Pi)大约等于?(2)如何使用sum命令?(3)函数max的作用?举例说明。
(4)命令help,lookfor,demo的用法?102? 5.Sin6(5)计算7.Tan62。
回答以下问题:(1)matlab是什么意思?(2)matlab命令who与whos有什么区别?(3)matlab命令clear与clc有什么区别?(4)命令:与linspace,logspace的区别?计算机实验2:矩阵运算与matlab命令实验目的:熟悉matlab矩阵运算命令。
实验内容:1.请直接在Matlab下输入以下常数,查看它们的值:(1)I,J,EPS(2)inf,Nan,PI(3)realmax(4)realmin2、使用lookfor指令,找出具有下列功能的matlab指令。
(1)求矩阵的大小(即行维度和列维度)(2)找出矩阵每一直行的最大值(3)对矩阵的每一直行进行排序(4)逆矩阵(inversematrix)的计算(5)求矩阵的rank几个常见的matlab命令:*zerooneseyelinspaceranddiag\\/detinveigrank计算机实验3:MATLAB程序设计实验目的:熟悉matlab程序控制结构,掌握用m文件或函数的编写方法。
实验内容:x2x6,x0且x??4?1、f(x)的定义如下:f(x)??x2?5x?6,0?x?10,x?2且x?3,写一个matlab函x2?十、1.其他人?数字func1实现该函数,并在区间[?10,15]内绘制该函数的图像。
2.编写一个matlab函数myfun M来计算以下方程式:y=0.5*exp(x/3)-x*x*sin(x)其中x是函数的输入,Y是函数的输出。
二.三维绘图一.绘制三维曲线的基本函数最基本的三维图形函数为plot3,它将二维绘图函数plot的有关功能扩展到三维空间,可以用来绘制三维曲线。
其调用格式为:plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…)其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot的选项一样。
当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。
当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵的列数。
例513 绘制空间曲线该曲线对应的参数方程为t=0:pi/50:2*pi;x=8*cos(t);y=4*sqrt(2)*sin(t);z=-4*sqrt(2)*sin(t);plot3(x,y,z,'p');title('Line in 3-D Space');text(0,0,0,'origin');xlabel('X');ylabel('Y');zlabel('Z');grid;二.三维曲面1.平面网格坐标矩阵的生成当绘制z=f(x,y)所代表的三维曲面图时,先要在xy平面选定一矩形区域,假定矩形区域为D=[a,b]×[c,d],然后将[a,b]在x方向分成m份,将[c,d]在y方向分成n份,由各划分点做平行轴的直线,把区域D分成m×n个小矩形。
生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数绘图。
产生平面区域内的网格坐标矩阵有两种方法:利用矩阵运算生成。
x=a:dx:b;y=(c:dy:d)’;X=ones(size(y))*x;Y=y*ones(size(x));经过上述语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素个数,矩阵Y的每一列都是向量y,列数等于向量x的元素个数。
利用meshgrid函数生成;x=a:dx:b;y=c:dy:d;[X,Y]=meshgrid(x,y);语句执行后,所得到的网格坐标矩阵和上法,相同,当x=y时,可以写成meshgrid(x)2.绘制三维曲面的函数Matlab提供了mesh函数和surf函数来绘制三维曲面图。
matlab 绘制三维图形的方法plot3函数与plot 函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n),其中每一组x,y,z 组成一组曲线的坐标参数,选项的定义和plot 函数相同。
当x,y,z 是同维向量时,则x,y,z 对应元素构成一条三维曲线。
当x,y,z 是同维矩阵时,则以x,y,z 对应列元素绘制三维曲线,曲线条数等于矩阵列数。
例 绘制三维曲线。
程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t);z=t.*sin(t).*cos(t); plot3(x,y,z);gridtitle('Line in 3-D Space');xlabel('X');ylabel('Y');zlabel('Z'); 如下图:XLine in 3-D SpaceYZ三维曲面1.产生三维数据在MATLAB 中,利用meshgrid 函数产生平面区域内的网格坐标矩阵。
其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y);语句执行后,矩阵X 的每一行都是向量x ,行数等于向量y 的元素的个数,矩阵Y 的每一列都是向量y ,列数等于向量x 的元素的个数。
2.绘制三维曲面的函数surf 函数和mesh 函数的调用格式为:mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。
surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。
一般情况下,x,y,z 是维数相同的矩阵。
x,y 是网格坐标矩阵,z 是网格点上的高度矩阵,c 用于指定在不同高度下的颜色范围。
例 绘制三维曲面图z=sin(x+sin(y))-x/10。
程序如下:[x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐标 z=sin(x+sin(y))-x/10; mesh(x,y,z);axis([0 4*pi 0 4*pi -2.5 1]); 如下图:-2.5-2-1.5-1-0.500.51此外,还有带等高线的三维网格曲面函数meshc 和带底座的三维网格曲面函数meshz 。
实验项目1:Matlab的有关知识与操作一、实验目的1、会安装、启动、退出Matlab系统2、熟悉Matlab 软件环境,对向量、数组和矩阵处理的基本方法3、会使用Matlab作图4、会简单编程和 m 文件的使用二、实验要求熟悉Matlab系统的运行环境、掌握该系统的一些基本符号运算与数值计算,掌握Matlab函数的定义及Matlab的作图的一些基本命令;能独立地运用命令作图并学会循环、选择控制结构编程调试。
三、实验内容>> plot(y)生成的图形见图5-1,是以序号6,,2,1 为横坐标、数组y的数值为纵坐标画出的折线。
>> x=linspace(0,2*pi,30); % 请同学讲解此语句的意思>> y=sin(x);>> plot(x,y)生成的图形见图5-2,是]2,0[ 上30个点连成的光滑的正弦曲线。
图5-1 图5-2 多重线在同一个画面上可以画许多条曲线,只需多给出几个数组,例如>> x=0:pi/15:2*pi;>> y1=sin(x);>> y2=cos(x);>> plot(x,y1,x,y2)则可以画出图5-3。
多重线的另一种画法是利用hold命令。
在已经画好的图形上,若设置hold on,MATLA将把新的plot命令产生的图形画在原来的图形上。
而命令hold off 将结束这个过程。
例如:>> x=linspace(0,2*pi,30); y=sin(x); plot(x,y)先画好图5-2,然后用下述命令增加cos(x)的图形,也可得到图5-3。
>> hold on>> z=cos(x); plot(x,z)>> hold off %注意hold on与hold off的配对使用图5-3线型和颜色线型线方式:- 实线:点线-.虚点线- - 波折线。
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 绘制的二维图形可以由下面的一些命令简单地修饰。
如>> xlabel('字符串') % 给横坐标轴加说明>> ylabel('字符串') % 给纵坐标轴加说明,%并自动旋转90度>> title('字符串') % 给整个图形加图题得出的图形如右图所示。
axis() 函数可以手动地设置x,y 坐标轴范围还可以使用plotyy() 函数绘制具有两个纵坐标刻度的图形。
坐标系的分割在MATLAB 图形绘制中是很有特色的,比较规则的分割方式是用subplot() 函数定义的,其标准调用格式为subplot(n,m,k)其中,n 和m 为将图形窗口分成的行数和列数,而k 为相对的编号。
本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是 说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为: (1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制 曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲 线,当x 为m× n 矩阵时,就由n 条曲线。 (2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。 (3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,… 元素为纵坐标值绘制多条曲线。
例5.1.1 画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2)
图5.1.1 函数plot 绘制的正弦曲线 在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MATLAB 软件专 门提供了这方面的参数选项(见表5.1.1),我们只要在每个坐标后加上相关字符串,就可 实现它们的功能。
表5.1.1 绘图参数表 色彩字符颜色线型字符线型格式标记符号数据点形式标记符号数据点形式 y 黄- 实线. 点< 小于号
m 紫: 点线o 圆s 正方形 c 青-. 点划线x 叉号d 菱形 r 红- - 虚线+ 加号h 六角星 g 绿* 星号p 五角星 b 蓝v 向下三角形 w 白^ 向上三角形 k 黑> 大于号
例如,在上例中输入 >> plot(x,y1,'r+-',x,y2,'k*:') 则得图5.1.2 图5.1.2 使用不同标记的plot 函数绘制的正弦曲线
5.1.2 图形修饰 MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。 表5.1.2 图形修饰函数表
函数 含义 grid on (/off) 给当前图形标记添加(取消)网络 xlable(‘string’) 标记横坐标 ylabel(‘string’) 标记纵坐标 title(‘string’) 给图形添加标题 text(x,y,’string’) 在图形的任意位置增加说明性文本信息 gtext(‘string’) 利用鼠标添加说明性文本信息 axis([xmin xmax ymin ymax]) 设置坐标轴的最小最大值
例5.1.2 给例5.1.1 的图形中加入网络和标记。(见图5.1.3 和5.1.4) >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) >> grid on >> xlabel('independent variable X') >> ylabel('Dependent Variable Y1 & Y2') >> title('Sine and Cosine Curve') >> text(1.5,0.3,'cos(x)') >> gtext('sin(x)') >> axis([0 2*pi -0.9 0.9]) 图5.1.3 使用了图形修饰的plot 函数绘制的正弦曲线 5.1.3 图形的比较显示 在一般默认的情况下,MATLAB 每次使用plot 函数进行图形绘制,将重新产生一个图 形窗口。但有时希望后续的图形能够和前面所绘制的图形进行比较。一般来说有两种方法: 一是采用hold on(/off)命令,将新产生的图形曲线叠加到已有的图形上; 二是采用subplot(m,n,k)函数,将图形窗口分隔成n m× 个子图,并选择第k 个子图作为当前图形 ,然后在同一个视图窗口中画出多个小图形。
例5.1.3 在同一窗口中绘制线段。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> y3=x;
>> y4=log(x); >> plot(x,y1,x,y2) >> hold on >> plot(x,y3) >> plot(x,y4) >> hold off 例5.1.4 在多个窗口中绘制图形。(见图5.1.6) >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> y3=exp(x); >> y4=log(x); >> subplot(2,2,1); >> plot(x,y1); >> subplot(2,2,2); >> plot(x,y2); >> subplot(2,2,3); >> plot(x,y3); >> subplot(2,2,4); >> plot(x,y4);
[说明] (1)子窗口的序号按行由上往下,按列从左向右编号。 (2)如果不用指令clf 清除,以后图形将被绘制在子图形窗口中。
图5.1.6 图形的比较显示(图形窗口分割方法) 5.2 三维立体图形 5.2.1 三维曲线图 与二维图形相对应,MATLAB 提供了plot3 函数,可以在三维空间中绘制三维曲线, 它的格式类似于plot,不过多了z 方向的数据。plot3 的调用格式为:
plot3(x1,y1,z1,x2,y2,z2,...) 其中x1,y1,z1,x2,y2,z2,…等分别为维数相同的向量,分别存储着曲线的三个坐标值,该 函数的使用方式和plot 类似,也可以采用多种的颜色或线型(见表5.1.1)来区分不同的数据 组,只需在每组变量后面加上相关字符串即可实现该功能。
例5.2.1 绘制方程x=t y=sin(t) z=cos(t)
在t=[0,2*pi]上的空间方程。(见图5.2.1) >> clf >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot3(y1,y2,x,'m:p') >> grid on >> xlabel('Dependent Variable Y1') >> ylabel('Dependent Variable Y2') >> zlabel('Independent Variable X') >> title('Sine and Cosine Curve') 图5.2.1 函数plot 绘制的三维曲线图 5.2.2 三维曲面图 如果要画一个三维的曲面,可以使用mesh(X,Y,Z)或surf(X,Y,Z)函数来实现。 mesh 函数为数据点绘制网格线,图形中的每一个已知点和其附近的点用直线连接。surf 函数和mesh 的用法类似,但它可以画出着色表面图,图形中的每一个已知点与其相邻点以 平面连接。
为方便测试立体绘图,MATLAB 提供了一个peaks 函数,它可以产生一个的高 斯分布矩阵,其生成方程是N N ×
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) 对应的图形是一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点。 下面使用peaks 函数来比较一下mesh 和surf 的区别。
例5.2.2 分别用mesh 函数和surf 函数绘制高斯矩阵的曲面。 >> z=peaks(40); >> mesh(z); >> surf(z); 图5.2.2 mesh 函数绘制的三维曲面图 图5.2.3 surf 函数绘制的着色表面图 在曲面绘图中,另一个常用的函数是meshgrid 函数,其一般引用格式是: [X, Y]=meshgrid (x, y) 其中x 和y 是向量,通过meshgrid 函数就可将x 和y 指定的区域转换成为矩阵X 和Y。 这样我们在绘图时就可以先用meshgrid 函数产生在x-y 平面上的二维的网格数据,再以一 组z 轴的数据对应到这个二维的网格,即可画出三维的曲面。
例5.2.3 绘制方程 sin((x^2+y^2)^(1/2)) z = --------------------- (x^2+y^2)^(1/2)
在x∈[-7.5,7.5];y∈[-7.5,7.5] 的图形。 >> x=-7.5:0.5:7.5;y=x; >> [X,Y]=meshgrid(x,y); >> R=sqrt(X.^2+Y.^2)+eps; >> Z=sin(R)./R; >> surf(X,Y,Z) >> xlabel('X 轴方向') >> ylabel('Y 轴方向') >> zlabel('Z 轴方向') (见图5.2.4) 图5.2.4 例5.2.4 绘制由方程形成的立体图。(见图5.2.5) z=x*exp(-(x^2+y^2))
>> clear >> x=-2:0.1:2;y=x; >> [X,Y]=meshgrid(x,y); >> Z=X.*exp(-X.^2-Y.^2); >> surf(X,Y,Z)