《第2章MATLAB编程与作图》由会员分享,可在线阅读,更多相关《第2章MATLAB编程与作图(33页珍藏版)》请在金锄头文库上搜索。
1、第二章第二章 MATLAB编程与作图编程与作图 2.1 程序设计 2.2 作图 2.3 在线帮助和文件管理2.4 习题7/21/20241东华大学 MATLAB数学实验2.1 程序设计程序设计 M脚本文件 函数文件 函数句柄、内嵌函数和匿名函数 其它 控制流7/21/20242东华大学 MATLAB数学实验控制流选择结构控制流选择结构一、if语句 例:计算分段函数值 x=input(请输入x的值:); if x=10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x); end y单分支if语句:if 条件 语句组 end双分支if语句:if 条件
2、语句组1 else 语句组2 end 7/21/20243东华大学 MATLAB数学实验 二、switch语句 例:已知打折标准,求所售商品的实际销售价格。price=input(请输入商品价格:); switch fix(price/100) case 0,1 rate=0; case 2,3,4 rate=3/100; otherwise rate=14/100; end price=price*(1-rate)switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 case 表达式m 语句组m otherwise 语句组m+1end向0取整7/21/20244东
3、华大学 MATLAB数学实验控制流循环结构控制流循环结构一、for语句 例:已知y的表达式,当n=100时,求y的值。 y=0; n=100; for i=1:n y=y+1/i/i; end y for 循环变量=表达式1:表达式2:表达式3 循环体语句 end初值增量终值默认增量为17/21/20247东华大学 MATLAB数学实验二、while语句 while (条件) 循环体语句 end break语句:当在循环体内执行到该语句时,程序将跳出循环例: e=10;a=15;k=0; while (ae) k=k+1; a=a-1;end k7/21/20249东华大学 MATLAB数学实
4、验M脚本文件脚本文件M文件的建立与编辑(1)菜单操作:File菜单 New菜单项 M-file命令。(2)命令操作:在命令窗口输入命令edit。(3)命令按钮操作:单击工具栏上的“新建”命令按钮。7/21/202410东华大学 MATLAB数学实验M文件的分类分类:脚本文件(Script File)(或称命令文件)和函数文件(Function File)主要区别:1、M脚本文件没有参数传递功能; 函数文件有参数传递功能。2、M脚本文件中的变量是全局的,在命令窗口也可用; 但命令窗口的变量在M脚本文件中不可用; 函数文件中的变量是局部的。7/21/202411东华大学 MATLAB数学实验 例:
5、例:建立一个命命令令文文件件将变量a,b的值互换,然后运行该命令文件。 首先建立命令文件并以文件名exch.m存盘:a=1:10; b=11,12,13,14;15,16,17,18;c=a;a=b;b=c;a, b 然后在MATLAB的命令窗口中输入exch。建立一个函函数数文文件件将变量a,b的值互换,然后在命令窗口调用该函数文件。 先建立函数文件fexch.m: function a,b=exch(a,b) c=a;a=b;b=c; 在命令窗口调用该文件: x=1:10; y=11,12,13,14;15,16,17,18; x,y=fexch(x,y)调用文件名7/21/202412东
6、华大学 MATLAB数学实验函数文件函数文件函数文件的基本结构函数文件名:函数文件名与函数名也可以不相同。当两者不同时,MATLAB将忽略函数名而确认函数文件名,因此调用时使用函数文件名。若一个文件中定义了多个函数,则只有第一个函数作为主函数可以被外部调用;其它函数作为子函数只能被同一个文件中的主函数或其它子函数调用,而不能被外部调用。function 输出形参表=函数名(输入形参表)函数体语句7/21/202413东华大学 MATLAB数学实验使用函数句柄函数句柄(handle)方式调用M函数。命令feval用于执行函数的参数方式。例如fhandle=fexch; a,b=feval(fha
7、ndle,x,y)a,b=feval(fexch,x,y)内嵌内嵌(inline)函数函数方式:fun=inline(expr, arg1, arg2, .)其中expr为函数表达式字符串, arg1, arg2, .为自变量。例如 fname=inline(sum(1./(1:n).2),n); feval (fname,100)函数句柄、内嵌函数和匿名函数函数句柄、内嵌函数和匿名函数表达式参数7/21/202414东华大学 MATLAB数学实验其它数据的输入输出其它数据的输入输出disp函数:屏幕输出 disp(输出项) 注意:输出项既可以为字符串,也可以为矩阵; 用disp函数显示矩阵时
8、不显示矩阵的名字,其格式更紧密,不留任何无意义的空行。 input函数: 提示用户输入数据 A=input(提示信息,选项);求ax2 +bx+c=0的根。 程序如下: a=input(a=?); b=input(b=?); c=input(c=?); d=b*b-4*a*c; x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a); disp(x1=,num2str(x(1),x2=,num2str(x(2);7/21/202415东华大学 MATLAB数学实验其它全局变量和局部变量其它全局变量和局部变量函数文件的内部变量默认是局部的。全局变量用命令global定义。 例
9、:建立函数文件wadd.m,将输入参数加权相加。 function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y; 命令窗口:global ALPHA BETA ALPHA=1; BETA=2; s=wadd(6,9)7/21/202416东华大学 MATLAB数学实验2.2 作图作图 曲线图 曲面图 图形说明和定制 菜单和工具栏的使用7/21/202419东华大学 MATLAB数学实验1、曲线图、曲线图绘制曲线的最基本函数:plot(x,y) :x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。plot(x1,y1,选项1,x2,y2,
10、选项2,xn,yn,选项n) :多组折线plot3(x1,y1,z1,选项1,xn,yn,zn,选项n) :空间曲线fplot(fun,a,b):绘制fun在区间a,b上的图形,fun可以是函数或表达式可选,表示折线的属性,如颜可选,表示折线的属性,如颜色、粗细等色、粗细等7/21/202420东华大学 MATLAB数学实验 例:例: 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);五角形五角形1) 绘制三维参数曲线:绘制三维参数曲线:7/21/202421东华大学 MATLA
11、B数学实验例:例:程序如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*sin(2*pi*x); plot(x,y,r*) %分别以x,y对应的元素为横、纵坐标绘制曲线。图形导出方法:1、File-Export-图形文件 2、Edit-Copy figure-粘贴到指定文件2) 在在0X2 区间内,绘制曲线区间内,绘制曲线y=2e-0.5xsin(2x)7/21/202422东华大学 MATLAB数学实验例:例:在在-1,2上画的上画的 图形图形解解 先建M文件myfun1.m: function Y=myfun1(x) Y=exp(2*x)+sin(3*x.2)命令
12、窗口:fplot(myfun1,-1,2)7/21/202423东华大学 MATLAB数学实验2、 曲面图形曲面图形平面网格坐标的生成 x=a:dx:b; y=c:dy:d; X,Y=meshgrid(x,y);绘制三维曲面的函数 mesh(x,y,z):网格图; surf(x,y,z): 曲面图(填充网格); contour(x,y,z):等高线图(平面图); contour3(x,y,z):三维等高线图(空间图)。x,y是同阶矩阵,表示曲面的三维坐标数据7/21/202424东华大学 MATLAB数学实验例例2.6 :xa=-2:0.2:2;ya=xa;x,y=meshgrid(xa,ya
13、);z=x.*exp(-x.2-y.2);mesh(x,y,z);pause(2)surf(x,y,z);pause(2)contour(x,y,z);pausecontour3(x,y,z);pausecontour(x,y,z,0.1 0.1);contour3(x,y,z,0.2 0.2);等待等待2秒秒等待,直到用等待,直到用户按下任意键户按下任意键绘制绘制z=0.2的等高线的等高线网格图网格图填充网格填充网格平面等高线平面等高线立体等高线立体等高线M文件eg2_6.m7/21/202425东华大学 MATLAB数学实验3、图形说明和图形定制、图形说明和图形定制图形标注图形标注titl
14、e(图形名称) xlabel(x轴说明) ylabel(y轴说明)坐标控制坐标控制hold on/off 保留/释放现有图形;figure/close 新开/关闭图形窗口;grid on/off 画/不画网格线,不带参数的grid命令在两种状态之间进行切换。box on/off 加/不加边框线,不带参数的box命令在两种状态之间进行切换。axis on/off 显示/取消坐标轴axis(xmin xmax ymin ymax zmin zmax) 限定坐标轴范围7/21/202426东华大学 MATLAB数学实验图形窗口的分割subplot(m,n,p)例:在一个窗口中同时绘制正弦、余弦等曲线
15、。 x=linspace(0,2*pi,60); y=sin(x);z=cos(x); subplot(2,2,1); %选择22区中的1号区 plot(x,y); title(sin(x); axis (0,2*pi,-1,1); subplot(2,1,2); %选择21区中的2号区 plot(x,z, *); title(cos(x); axis (0,2*pi,-1,1); x=linspace(-2,2,60); y=x.3;z=x.2; subplot(4,4,3); %选择44区中的3号区 plot(x,y); title(x.3); axis (-2,2,-4,4); subp
16、lot(4,4,4); %选择44区中的4号区 plot(x,z); title(x.2); axis (-2,2,0,4);7/21/202427东华大学 MATLAB数学实验2.3 在线帮助和文件管理在线帮助和文件管理在线帮助1、 help命令 是最基本的查询方法,可查询所有目录、指定目录、命令、函数。2、lookfor 关键字: 搜索相关的命令和函数;3、type M文件名:显示M文件代码;4、which M文件名:显示指定文件的路径;5、demo:演示matlab功能;7/21/202428东华大学 MATLAB数学实验文件和目录管理MATLAB只执行当前目录和搜索路径中的命令和函数;
17、当前目录(Current directory)窗口列出了当前目录的程序和数据文件等,可以修改当前路径;菜单FilesSet path可将某一目录增加到MATLAB默认搜索路径(Path)队列;7/21/202429东华大学 MATLAB数学实验2.4 练习练习编程编程1、编写函数,n为参数,求:2、编写函数,作出下列分段在区间a,b上的图形。7/21/202430东华大学 MATLAB数学实验function y = sum_1(n) y=0; for i=1:n y=y+1/i/i; end y = sum_1(10)function plot_segment(a,b) x = a :0.0
18、5: b; y = x .* sqrt( x + sqrt(x) ); i = find(x = 10); if (i = 1 & i plot_segment(1,9) plot_segment(1,20)7/21/202431东华大学 MATLAB数学实验2.4 练习练习作图作图1、在0,2*pi上画 的图形。,2、在区间0,10*pi画参数曲线x=sin(t),y=cos(t), z=t3、画出曲面Z=(X+Y).2的网格图。7/21/202432东华大学 MATLAB数学实验2、t=0:pi/50:10*pi; plot3(sin(t),cos(t),t)3、x=-3:0.1:3; y=1:0.1:5; X,Y=meshgrid(x,y); Z=(X+Y).2; mesh(X,Y,Z)1、 t=0:pi/50:2*pi; x=cos(t).3;y=sin(t).3; plot(x,y);7/21/202433东华大学 MATLAB数学实验