MATLAB语言及应用-第二章.ppt

上传人:本田雅阁 文档编号:2090249 上传时间:2019-02-12 格式:PPT 页数:83 大小:647.01KB
返回 下载 相关 举报
MATLAB语言及应用-第二章.ppt_第1页
第1页 / 共83页
MATLAB语言及应用-第二章.ppt_第2页
第2页 / 共83页
MATLAB语言及应用-第二章.ppt_第3页
第3页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《MATLAB语言及应用-第二章.ppt》由会员分享,可在线阅读,更多相关《MATLAB语言及应用-第二章.ppt(83页珍藏版)》请在三一文库上搜索。

1、第2章 基本语法,变量及其赋值 矩阵的初等运算 元素群运算 逻辑判断及流程控制 基本绘图方法 M文件及程序调试,变量及其赋值 矩阵的初等运算 元素群运算 逻辑判断及流程控制 基本绘图方法 M文件及程序调试,第2章 基本语法,第2章 基本语法,变量及其赋值 标识符与数 矩阵及其元素的赋值 复数 变量检查 基本赋值矩阵,第2章 基本语法,标识符与数 标识符是标识变量名、常量名、函数名和文件名的字符串的总称。在MATLAB中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多19个字符;函数和文件名则通常不超过8个字符。 在MATLAB中,变量名区分字母的大小写。MATLAB提供的标准函数名

2、以及命令名必须用小写字母。,第2章 基本语法,矩阵及其元素的赋值 MATLAB赋值语句有两种格式: (1) 标准赋值格式:变量=表达式(或数) (2) 不要等式左端而只剩下“表达式” 一般地,运算结果在命令窗口中显示出来。如果在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。 在MATLAB语句后面可以加上注释,注释以%开头,后面是注释的内容。,第2章 基本语法,例2.1 计算表达式的值,并将结果赋给变量x,然后显示出结果。 在MATLAB命令窗口输入命令: x=(5+cos(47*pi/180)/(1+sqrt(7)-2*i) %计算表达式的值,第2章 基本语法,复

3、数 MATLAB的每一个元素都可以是复数,实数是复数的特例。对复数矩阵有两种赋值方法: (1) 将其元素逐个赋与复数 如,键入z=1+2i,3+4i,5+6i,7+8i (2) 将其实部和虚部分别赋值 如,键入z=1,3;5,7+2,4;6,8*i,第2章 基本语法,变量检查 1 预定义变量 在MATLAB工作空间中,还驻留几个由系统本身定义的变量。它们有特定的含义,在使用时,应尽量避免对这些变量重新赋值。 2 内存变量的管理 (1) 内存变量的显示与删除 who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单。 clear命令用于删除MATLAB工作空间中的变量。 注

4、意,预定义变量不能被删除。,第2章 基本语法,(2) 内存变量文件 利用MAT文件(.mat)可以把当前MATLAB工作空间中的一些有用变量长久地保留下来。 MAT文件的生成和装入由save和load命令来完成。常用格式为: save 文件名 变量名表 load 文件名 变量名表,第2章 基本语法,基本赋值矩阵 一 矩阵的建立 1. 直接输入法 将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。例如 A=1 2 3;4 5 6;7 8 9 2. 利用M文件建立矩阵 对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。,第2

5、章 基本语法,3. 利用MATLAB函数建立矩阵 几个产生特殊矩阵的函数:zeros、ones、 eye、rand(随机数)、randn(正态随机数)。 这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是: zeros(m) 产生mm零矩阵 zeros(m,n) 产生mn零矩阵。 zeros(size(A) 产生与矩阵A同样大小的零矩阵 相关的函数有:length(A)给出行数和列数中的较大者,即length(A)=max(size(A);ndims(A)给出A的维数。,第2章 基本语法,例2.3 分别建立33、32和与矩阵A同样大小的零矩阵。 (1)建立一个

6、33零矩阵:zeros(3) (2)建立一个32零矩阵:zeros(3,2) (3)建立与矩阵A同样大小零矩阵:zeros(size(A) 4. 建立大矩阵 大矩阵可由方括号中的小矩阵建立起来。例如 A=1 2 3;4 5 6;7 8 9; C=A,eye(size(A); ones(size(A),A,第2章 基本语法,二 冒号表达式 冒号表达式的一般格式: e1:e2:e3 三 矩阵的拆分 1. 矩阵元素 MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如 A(3,2)=200 也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。,第2章 基本

7、语法,2. 矩阵拆分 (1)利用冒号表达式获得子矩阵 A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。 A(i:i+m,:)表示取A矩阵第ii+m行的全部元素;A(:,k:k+m)表示取A矩阵第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。 此外,还可利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。,第2章 基本语法,(2)利用空矩阵删除矩阵的元素 在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为X=。

8、 注意,X=与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。 将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。,第2章 基本语法,四 多维矩阵 以三维矩阵为例,常用的方法有4种: (1)对二维矩阵进行扩充得到三维矩阵。 (2)若干个同样大小的二维矩阵进行组合得到三维矩阵。 (3)除产生单位矩阵的eye函数外,前面介绍的建立矩阵的函数都可以延伸到三维矩阵。 (4)用cat函数构建多维矩阵。一般调用格式是: cat(n,A1,A2,An) cat函数把大小相同的若干矩阵,沿第n维方向串接成高维矩阵。当n=1和2时,沿行和列的方向串

9、接,结果是二维矩阵。当n=3时,沿列的方向串接,结果是三维矩阵。,变量及其赋值 矩阵的初等运算 元素群运算 逻辑判断及流程控制 基本绘图方法 M文件及程序调试,第2章 基本语法,第2章 基本语法,矩阵的初等运算 1. 基本算术运算 MATLAB的基本算术运算有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)。 注意:运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。 2. 点运算 点运算符有.*、./、.和.。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。 3MATLAB常用数学函数,变量及其赋值 矩阵的初等运算 元素群运算 逻辑判断及流程控制 基本

10、绘图方法 M文件及程序调试,第2章 基本语法,第2章 基本语法,元素群运算 1. 数组及其赋值 MATLAB提供了两种为等间隔数组赋值的简易方法 (1) 用两个冒号组成等增量语句,其格式为: t=初值:增值:终值 (2) 用linspace函数。其格式为: linspace(初值、终值、点数) 2. 四则运算和幂次运算 矩阵中的所有元素按单个元素运算。 3. 元素群函数,变量及其赋值 矩阵的初等运算 元素群运算 逻辑判断及流程控制 基本绘图方法 M文件及程序调试,第2章 基本语法,第2章 基本语法,一 关系运算 MATLAB提供了6种关系运算符:(大于)、=(大于或等于)、=(等于)、=(不等

11、于)。 关系运算符的运算法则。 二 逻辑运算 MATLAB提供了3种逻辑运算符:&(与)、|(或)和(非)。 运算法则。 三 流程控制语句,第2章 基本语法,1 if语句 在MATLAB中,if语句有3种格式。 (1)单分支if语句 语句格式为: if 条件 语句组 end 当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。,第2章 基本语法,例2.7计算分段函数值。 程序如下: x=input(请输入x的值:); if x=10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x); end

12、 y,第2章 基本语法,(3)多分支if语句 语句格式为: if 条件1 语句组1 elseif 条件2 语句组2 elseif 条件m 语句组m else 语句组m+1 end,第2章 基本语法,例2.8 输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为数字字符则输出其对应的数值,若为其他字符则原样输出。程序如下: c=input(请输入一个字符,s); if c=A end,第2章 基本语法,2 while语句 while语句的一般格式为: while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果

13、不成立则跳出循环。,第2章 基本语法,循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。可以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。 在设计多重循环时,要特别注意内、外循环之间的关系,以及各语句放置的位置,不要搞错。,第2章 基本语法,例2.5 一皮球从200米高度自由落下,每次落地后反弹回原高度的一半开始再次下落,试编写一段程序,(1)给出皮球弹起的次数及最后一次的反弹高度;(2)皮球经过的总路程。(提示:eps浮点相对差限,表示matlab能计算的数据差的最小值),第2章 基本语法,%s为总

14、路程,h为弹起高度,n为弹起次数 s=0;h=200;n=0; while heps s=s+h; h=h/2; s=s+h; n=n+1; end disp(经过的总路程) disp(s) disp(弹起次数) disp(n) disp(弹起高度) disp(h),第2章 基本语法,3 for语句 语句格式为: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 首先计算三个表达式的值,再将表达式1的值赋给循环变量,如果此时循环变量的值介于表达式1和表达式3的值之间,则执行循环体语句,否则结束循环的执行。执行完一次循环之后,循环变量自增一个表达式2的值,然后再判断循环变量的值

15、是否介于表达式1和表达式3之间,如果满足仍然执行循环体,直至不满足为止。这时将结束for语句的执行,而继续执行for语句后面的语句。,第2章 基本语法,for语句更一般的格式: for 循环变量=矩阵表达式 循环体语句 end 执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。实际上,“表达式1:表达式2:表达式3”是一个仅为一行的矩阵(行向量),因而列向量是单个数据。 例2.6 求1到200之间所有奇数之和,写出程序和运行结果。,第2章 基本语法,程序如下: (1) i=1; s=0; while(i=200) s=s+i; i=i+2; end s,(2

16、)s=0; for i=1:2:200 s=s+i; end s,第2章 基本语法,例2.7 已知5个学生4门功课的成绩,求每名学生的总成绩。 程序如下: s=0; a=65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87; for k=a s=s+k; end disp(s);,第2章 基本语法,4 switch语句 其语句格式为: switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 case 表达式m 语句组m otherwise 语句组m+1 end,第2章 基本语法,例2.8 某商场对顾客所

17、购买的商品实行打折销售,已知打折标准,求所售商品的实际销售价格。 程序如下: price=input(请输入商品价格); switch fix(price/100) case 0,1 rate=0; case 2,3,4 rate=3/100; case num2cell(5:9) rate=5/100; case num2cell(10:24) rate=8/100; case num2cell(25:49) rate=10/100; otherwise rate=14/100; end price=price*(1-rate),第2章 基本语法,例2.9 使用switch- case结构完

18、成卷面成绩score的转换。 (1) score90分,优; (2) 90score80分,良; (3) 80score70分,中;(4) 70score60分,及格; (5) 60score,不及格;,第2章 基本语法,程序如下: score=input(请输入卷面成绩:score=); switch fix(score/10) case 9 grade=优 case 8 grade=良 case 7 grade=中 case 6 grade=及格 otherwise grade=不及格 end,第2章 基本语法,5 try语句 语句格式为: try 语句组1 catch 语句组2 end

19、try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。这种试探性执行语句是其他高级语言所没有的。,第2章 基本语法,例2.10 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 程序如下: A=1,2,3;4,5,6; B=7,8,9;10,11,12; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因,第2章 基本语法,例2.11 已知某图像文件名为kids,但不知其存储格式为.bmp还是.tif,试编程,正确读取该图像文件并

20、显示图像。 程序如下: try picture=imread(kids.bmp); catch picture=imread(kids.tif); end imshow(picture) lasterr %显示出错原因,变量及其赋值 矩阵的初等运算 元素群运算 逻辑判断及流程控制 基本绘图方法 M文件及程序调试,第2章 基本语法,第2章 基本语法,基本绘图方法 1 直角坐标中的二维曲线 2 线型、点型和颜色 3 多条曲线的绘制 4 屏幕控制和其他二维绘图 5 三维曲线和曲面 6 彩色、光照和图像,第2章 基本语法,1 直角坐标中的二维曲线 绘制二维曲线的最基本函数: plot函数的基本用法 p

21、lot函数的基本调用格式为: plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。 例1 在0X2区间内,绘制曲线y=sin(2x)。 程序如下: x=0:pi/100:2*pi; y=sin(2*pi*x); plot(x,y,+r),第2章 基本语法,说明: (1)当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 (2)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同色彩的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (3)plot函数最简单的调用格式是只包含一个输入参数:plot(x)。

22、,第2章 基本语法,例2 某工厂2000年各月总产值(单位:万元)分别为22、60、88、95、56、23、9、10、14、81、56、23,试绘制折线图以显示出该厂总产值的变化情况。 程序如下: p=22,60,88,95,56,23,9,10,14,81,56,23; plot(p),第2章 基本语法,2 线型、点型和颜色 MATLAB会自动设定所画曲线的颜色和线型。如果用户对默认值不满意,可以用命令控制线型。也可以根据需要选取不同的数据点的标记。 3 多条曲线的绘制 (1)用plot(t,y1,y2,)命令 t是向量,y=y1,y2,是矩阵,若t 是列(行)向量,则y的列(行)长与t长度

23、相同。y的行(列)数就是曲线的根数。 (2)用hold 命令 在画完前一张图后用hold命令保持住,在画下一条曲线。,第2章 基本语法,(3)含多个输入参数的plot函数 含多个输入参数的plot函数调用格式为: plot(x1,y1,x2,y2,xn,yn) (4)双纵坐标函数plotyy plotyy函数是MATLAB 5.X新增的函数。它能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为: plotyy(x1,y1,x2,y2) 其中x1y1对应一条曲线,x2y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1y1数据对,右纵坐标用于x2y2数据对。

24、,第2章 基本语法,例3 用不同标度在同一坐标内绘制曲线y1=e-0.5xsin(2x)及曲线y2=1.5e-0.1xsin(x)。 程序如下: x1=0:pi/100:2*pi; x2=0:pi/100:3*pi; y1=exp(-0.5*x1).*sin(2*pi*x1); y2=1.5*exp(-0.1*x2).*sin(x2); plotyy(x1,y1,x2,y2);,第2章 基本语法,4 屏幕控制和其他二维绘图 (1) 图形标注 有关图形标注函数的调用格式为: title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text(x,y,图形说明) legend(图

25、例1,图例2,),第2章 基本语法,例4给图形添加图形标注。 程序如下: x=(0:pi/100:2*pi); y1=2*exp(-0.5*x)*1,-1; y2=2*exp(-0.5*x).*sin(2*pi*x); x1=(0:12)/2; y3=2*exp(-0.5*x1).*sin(2*pi*x1); plot(x,y1,g:,x,y2,b-,x1,y3,rp); title(曲线及其包络线); %加图形标题 xlabel(independent variable X); %加X轴说明 ylabel(independent variable Y); %加Y轴说明 text(2.8,0.

26、5,包络线); %在指定位置添加图形说明 text(0.5,0.5,曲线y); text(1.4,0.1,离散数据点); legend(包络线,包络线,曲线y,离散数据点) %加图例,第2章 基本语法,(2) 坐标控制 函数的调用格式为: axis(xmin xmax ymin ymax zmin zmax) axis函数功能丰富,常用的用法还有: axis equal 纵、横坐标轴采用等长刻度 axis square 产生正方形坐标系(缺省为矩形) axis auto 使用缺省设置 axis off 取消坐标轴 axis on 显示坐标轴 grid on/off命令控制是画还是不画网格线,不

27、带参数的grid命令在两种状态之间进行切换。 box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。,第2章 基本语法,例5 用图形保持功能在同一坐标内绘制曲线y=2e-0.5xsin(2x)及其包络线,并加网格线。 程序如下: x=(0:pi/100:2*pi); y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x); plot(x,y1,b:); axis(0,2*pi,-2,2); %设置坐标 hold on; %设置图形保持状态 plot(x,y2,k); grid on; %加网格线 box of

28、f; %不加坐标边框 hold off; %关闭图形保持,第2章 基本语法,(3) 图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p) 或者 subplot(position, left bottom width height),第2章 基本语法,x=linspace(0,2*pi,60); y=sin(x);z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); subplot(2,2,1); %选择22个区中的1号区 stairs(x,y);title(sin(x)-1);axis (0,2*pi,-

29、1,1); subplot(2,1,2); %选择21个区中的2号区 stem(x,y);title(sin(x)-2);axis (0,2*pi,-1,1); subplot(4,4,3); %选择44个区中的3号区 plot(x,y);title(sin(x);axis (0,2*pi,-1,1); subplot(4,4,4); %选择44个区中的4号区 plot(x,z);title(cos(x);axis (0,2*pi,-1,1); subplot(4,4,7); %选择44个区中的7号区 plot(x,t);title(tangent(x);axis (0,2*pi,-40,40

30、); subplot(4,4,8); %选择44个区中的8号区 plot(x,ct);title(cotangent(x);axis (0,2*pi,-40,40);,第2章 基本语法,(4)其他形式的线性直角坐标图 在线性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别是: bar(x,y,选项) stairs(x,y,选项) stem(x,y,选项) fill(x1,y1,选项1,x2,y2,选项2,),第2章 基本语法,MATLAB提供的绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。 例7 绘制图形: (1)某次考试优秀、良好

31、、中等、及格、不及格的人数分别为:7,17,23,19,5,试用饼图作成绩统计分析。 (2)绘制复数的相量图:3+2i、4.5-i和-1.5+5i。 程序如下: subplot(1,2,1); pie(7,17,23,19,5); title(饼图);legend(优秀,良好,中等,及格,不及格); subplot(1,2,2); compass(3+2i,4.5-i,-1.5+5i);title(相量图);,第2章 基本语法,5 三维曲线和曲面 最基本函数 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,xn,yn,z

32、n,选项n) 例7 绘制空间曲线。 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;,第2章 基本语法,例8 分析由函数z=x2-2y2构成的曲面形状及与平面z=a的交线。 程序如下: x,y=meshgrid(-10:0.2:10); z1=(x.2-2*y.2)+eps; %第1个曲面 a=input(a=?); z

33、2=a*ones(size(x); %第2个曲面 subplot(1,2,1);mesh(x,y,z1);hold on;mesh(x,y,z2); %分别画出两个曲面 v=-10,10,-10,10,-100,100;axis(v);grid; %第1子图的坐标设置 hold off; r0=abs(z1-z2)=1; %求两曲面z坐标差小于1的点 xx=r0.*x; yy=r0.*y; zz=r0.*z2; %求这些点上的x,y,z坐标,即交线坐标 subplot(1,2,2); plot3(xx(r0=0),yy(r0=0),zz(r0=0),*); %在第2子图画出交线 axis(v)

34、;grid; %第2子图的坐标设置,第2章 基本语法,其他三维图形 条形图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、pie3和fill3。此外,还有三维曲面的等高线图。等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。 例9 绘制多峰函数的等高线图。 程序如下: x,y,z=peaks; contour3(x,y,z,12,k); %其中12代表高度的等级数 xlabel(x-axis),ylabel(y-axis),zlabel(z-axis); title(contour3 of peaks);,第2章 基本语法,6 彩色、

35、光照和图像 MATLAB提供了设置视点的函数view。其调用格式为: view(az,el) 其中az为方位角,el为仰角,它们均以度为单位。系统缺省的视点定义为方位角-37.5,仰角30。,第2章 基本语法,例10 从不同视点绘制多峰函数曲面。 程序如下: subplot(2,2,1);mesh(peaks); view(-37.5,30); %指定子图1的视点 title(azimuth=-37.5,elevation=30) subplot(2,2,2);mesh(peaks); view(0,90); %指定子图2的视点 title(azimuth=0,elevation=90) su

36、bplot(2,2,3);mesh(peaks); view(90,0); %指定子图3的视点 title(azimuth=90,elevation=0) subplot(2,2,4);mesh(peaks); view(-7,-10); %指定子图4的视点 title(azimuth=-7,elevation=-10),第2章 基本语法,色彩处理 1. 颜色的向量表示 MATLAB除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。 2. 色图 色图是m3 的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。 除plot及其派生函

37、数外,mesh、surf等函数均使用色图着色。图形窗口色图的设置和改变,使用函数: colormap(m) 其中m代表色图矩阵。 3. 三维表面图形的着色 三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。,第2章 基本语法,例11、 3种图形着色方式的效果展示。 程序如下: z=peaks(20);colormap(copper); subplot(1,3,1);surf(z); subplot(1,3,2); surf(z);shading flat; subplot(1,3,3);surf(

38、z);shading interp;,第2章 基本语法,光照处理 MATLAB提供了灯光设置的函数,其调用格式为: light(Color,选项1,Style,选项2,Position,选项3) 例12 光照处理后的多峰函数曲面。 程序如下: z=peaks(20); subplot(1,2,1);surf(z); light(Posi,0,20,10);shading interp;hold on; plot3(0,20,10,p);text(0,20,10, light); subplot(1,2,2);surf(z); light(Posi,20,0,10);shading interp

39、;hold on; plot3(20,0,10,p);text(20,0,10, light);,第2章 基本语法,图像与动画 图像 1. imread和imwrite函数 imread和imwrite函数分别用于将图像文件读入MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。 2. image和imagesc函数 这两个函数用于图像显示。为了保证图像的显示效果,一般还应使用colormap函数设置图像色图。,第2章 基本语法,例13 播放一个直径不断变化的球体。 程序如下 x,y,z=sphere(50); m=moviein(30); %建立一个30列大矩阵 for

40、 i=1:30 surf(i*x,i*y,i*z) %绘制球面 m(:,i)=getframe; %将球面保存到m矩阵 end movie(m,10); %以每秒10幅的速度播放球面,变量及其赋值 矩阵的初等运算 元素群运算 逻辑判断及流程控制 基本绘图方法 M文件及程序调试,第2章 基本语法,第2章 基本语法,M文件的分类 分类:程序文件(Script File)和函数文件(Function File)。主要区别。 1主程序文件 建立新的M文件 (1)菜单操作:MATLAB命令窗口的File菜单 New菜单项 M-file命令。 (2)命令操作:在MATLAB命令窗口输入命令edit。 (3

41、)命令按钮操作:单击MATLAB命令窗口工具栏上的“新建”命令按钮。,第2章 基本语法,例1 建立一个程序文件将变量a,b的值互换,然后运行该程序文件。 首先建立程序文件并以文件名exch.m存盘: clear; a=1:10; b=11,12,13,14;15,16,17,18; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中输入exch,将会执行该命令文件。,第2章 基本语法,例2 绘制花瓣图形 在程序窗口编写以下语句,并以huaban.m为名存入相应的子目录 theta=-pi:0.01:pi; rho(1,:)=2*sin(5*theta).2; polar(thet

42、a,rho(1,:),第2章 基本语法,2函数文件 函数文件的基本结构 函数文件由function语句引导,其基本结构为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句,第2章 基本语法,说明: (1)关于函数文件名: 函数文件名与函数名也可以不相同。当两者不同时,MATLAB将忽略函数名而确认函数文件名,因此调用时使用函数文件名。 (2) 关于return语句。执行到该语句就结束函数的执行,程序流程转至调用该函数的位置。通常,在函数文件中也可不使用return语句,这时在被调函数执行完成后自动返回。,第2章 基本语法,函数调用 函数调用的一般格式是: 输出实参

43、表=函数名(输入实参表),第2章 基本语法,例3 建立一个函数文件将变量a,b的值互换,然后在命令窗口调用该函数文件。 首先建立函数文件fexch.m: function a,b=fexch(a,b) c=a;a=b;b=c; 然后在MATLAB的命令窗口调用该函数文件: clear; x=1:10; y=11,12,13,14;15,16,17,18; x,y=fexch(x,y),第2章 基本语法,例4利用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。 函数文件tran.m: function rho,theta=tran(x,y) rho=sqrt(x*x+y*y); the

44、ta=atan(y/x); 调用tran.m的程序文件main1.m: x=input(Please input x=:); y=input(Please input y=:); rho,the=tran(x,y); rho the,第2章 基本语法,3全局变量和局部变量 全局变量用命令global定义。函数文件的内部变量是局部的,与其他函数文件及MATLAB工作空间相互隔离。,第2章 基本语法,例5全局变量应用示例。 先建立函数文件wadd.m,该函数将输入的参数加权相加。 function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y; 在命

45、令窗口中输入: global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2),第2章 基本语法,4文件操作 文件的打开与关闭 1. 打开文件 fopen函数的调用格式为: Fid= fopen(文件名,打开方式) 2. 关闭文件 调用格式为: Sta=fclose(Fid),第2章 基本语法,二进制文件读写操作 1. 读二进制文件 fread 函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为: A,COUNT=fread(Fid,size, precision) 2. 写二进制文件 fwrite 函数按照指定的数据精度将矩阵中的元素写入到文件中。其调

46、用格式为: COUNT=fwrite (Fid, A, precision),第2章 基本语法,程序调试 需要用调试命令的主要是函数程序 把某些分号改为逗号,使中间结果能显示在屏幕上,作为查错的依据。 在子程序中适当部位加keyboard命令。 在函数文件的第一行前加,是它成为程序文件,进行初步调试。 使用MATLAB提供的调试命令。,第2章 基本语法,练习1. 建立一个M文件(脚本文件) 要求:当用户输入任意一个矩阵,显示该矩阵的行数和列数。 提示函数:m,n=size(),input() 2. 建立一个函数文件,要求:用条件结构编写函数程序,实现下面的函数: 要求:输入任意一个自变量x,得出y值。测试运行结果,记录正确代码 3.编写函数文件求半径为r的圆的面积和周长。,thank you!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1