matlab语言程序设计基础_第1页
matlab语言程序设计基础_第2页
matlab语言程序设计基础_第3页
matlab语言程序设计基础_第4页
matlab语言程序设计基础_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第2章章 MATLAB语言程序设计基础语言程序设计基础第第2章章 MATLAB语言程序设计基础语言程序设计基础主要内容主要内容MATLAB语言的数据结构语言的数据结构MATLAB下矩阵的运算下矩阵的运算流程控制结构流程控制结构MATLAB函数编写与技巧函数编写与技巧MATLAB语言下图形的绘制与技巧语言下图形的绘制与技巧三维图形的绘制方法三维图形的绘制方法MATLAB图形用户界面设计技术图形用户界面设计技术提高提高MATLAB程序执行效率的技巧程序执行效率的技巧 MATLAB的数据结构的数据结构本节主要内容本节主要内容数据类型数据类型数据输出格式数据输出格式常量和变量常量和变量矩阵的矩阵的m

2、atlab表示表示format:设置输出格式:设置输出格式 该命令不影响数据的存储形式和计算精度该命令不影响数据的存储形式和计算精度对浮点性变量,缺省为对浮点性变量,缺省为format short.format short, long不影响整型变量的显示。不影响整型变量的显示。format long 显示显示15位双精度位双精度format short 显示显示5位位format hex 十六进制十六进制format bank 定点货币形式,定点货币形式,2个十进制位个十进制位format rat 分数形式分数形式format + 正、负正、负format compact 紧凑式,压缩空格紧凑

3、式,压缩空格format loose 宽松式,包括空格和空行宽松式,包括空格和空行数据输出格式数据输出格式第5页数据类型操作函数数据类型操作函数函数函数描述描述double创建或转化为双精度类型创建或转化为双精度类型single创建或转化为单精度类型创建或转化为单精度类型int8,int16,int32,int64创建或转化为相应的有符号整数类型创建或转化为相应的有符号整数类型uint8,uint16,uint32,uint64创建或转化为相应的无符号整数类型创建或转化为相应的无符号整数类型isnumeric判断是否为整数或浮点数,是则返回判断是否为整数或浮点数,是则返回true(或者(或者1

4、)isinteger判断是否为整数,是则返回判断是否为整数,是则返回true(或者(或者1)isfloat判断是否为浮点数,是则返回判断是否为浮点数,是则返回true(或者(或者1) 常量与变量常量与变量常量(保留字符串)eps: 机器的浮点运算误差限,默认值i和j:虚数单位,-1的平方根,i=sqrt(-1)Inf: 无穷大量,-Inf为负无穷大NaN:不定式(Not a Number)pi:圆周率p的双精度浮点表示变量:由字母引导,可以跟字母、数字和下划线等区分大小写系统预定义的特殊变量系统预定义的特殊变量 变变 量量 名名描描 述述ans结果显示的默认变量名结果显示的默认变量名beep使

5、计算机发出使计算机发出“嘟嘟嘟嘟”声声pi圆周率圆周率eps浮点数的精度浮点数的精度(2.2204e-016),MALTAB中的最小数中的最小数inf无穷大,如当除数为无穷大,如当除数为0时系统返回时系统返回infNaN或或nan表示不定数,即结果不能确定表示不定数,即结果不能确定i或或j虚数单位虚数单位nargin函数的输入参数个数函数的输入参数个数nargout函数的输出参数个数函数的输出参数个数realmin可用的最小正实数可用的最小正实数2.2251e-308realmax可用的最大正实数值可用的最大正实数值1.7977e+308 矩阵的矩阵的MATLAB表示表示在在MATLABMAT

6、LAB中创建一个矩阵可以有两种常用的方法:中创建一个矩阵可以有两种常用的方法:一是直接输入矩阵元素,一是直接输入矩阵元素,另一种是调用矩阵创建函数。另一种是调用矩阵创建函数。 1. 1.输入元素创建简单矩阵输入元素创建简单矩阵对于简单的矩阵,特别是元素数目不多的矩阵,逐个对于简单的矩阵,特别是元素数目不多的矩阵,逐个输入矩阵元素是最常用、最便捷的矩阵创建方法,其输入矩阵元素是最常用、最便捷的矩阵创建方法,其遵循以下遵循以下3 3条原则:条原则:运用矩阵构造符运用矩阵构造符包含所创建矩阵的所有元素;包含所创建矩阵的所有元素;使用逗号使用逗号“,”或者空格或者空格“ ”“ ”分隔矩阵的列;分隔矩阵

7、的列;使用分号使用分号“;”或者回车键分隔矩阵的行。或者回车键分隔矩阵的行。 2. 2.调用函数创建特殊矩阵调用函数创建特殊矩阵函 数生成矩阵形式ones全1元素矩阵zeros全0元素矩阵eye单位矩阵,即主对角线元素为1,其余元素全为0rand均匀分布随机矩阵randn正态分布随机矩阵magic魔术矩阵diag对角矩阵 拼接函数拼接函数MATLAB的矩阵拼接函数函 数功 能cat指定维拼接horzcat水平方向拼接vertcat垂直方向拼接repmat通过对现有矩阵复制和粘贴操作生成新矩阵blkdiag现有矩阵构造对角矩阵 改变矩阵形状改变矩阵形状MATLAB矩阵形状操作函数函 数功 能re

8、shape重新排列矩阵rot90矩阵逆时针旋转90fliplr垂直方向为轴翻转矩阵flipud水平方向为轴翻转矩阵flipdim指定方向为轴翻转矩阵 MATLAB下矩阵的运算下矩阵的运算本节主要内容本节主要内容矩阵的代数运算矩阵的代数运算矩阵的逻辑运算矩阵的逻辑运算矩阵的比较运算矩阵的比较运算矩阵元素的数据变换矩阵元素的数据变换 矩阵的代数运算矩阵的代数运算矩阵转置:矩阵转置:A加减乘除:加减乘除:A+B、A-B、A*B、AB、B/A矩阵翻转:矩阵翻转:flipud(A)、fliplr(A)、rot90(A)矩阵乘方:矩阵乘方:Ax点运算:点运算:A.*B、A.2、A.A 矩阵的逻辑运算矩阵的

9、逻辑运算逻辑型变量的描述逻辑型变量的描述逻辑型变量:逻辑型变量:logical()双精度表示逻辑变量:非双精度表示逻辑变量:非0表示逻辑表示逻辑1逻辑运算逻辑运算逻辑逻辑“与与”:A&B逻辑逻辑“或或”:A | B逻辑逻辑“非非”:A逻辑逻辑“异或异或”:xor(A,B)逻辑运算是相应元素之间的运算逻辑运算是相应元素之间的运算 矩阵的比较关系矩阵的比较关系比较关系比较关系 关系关系 、=、=、= =、=等等find()、any()、all()举例举例找下标找下标 矩阵元素的数据变换矩阵元素的数据变换取整函数取整函数floor(A) :按负无穷大方向取整,即不足整数:按负无穷大方向取整,

10、即不足整数ceil(A) :按正无穷大方向取整,即取过剩整数:按正无穷大方向取整,即取过剩整数round(A) :按最近的整数取整,亦四舍五入:按最近的整数取整,亦四舍五入fix(A) :按离:按离0近的方向取整近的方向取整其他变换函数其他变换函数n,m=rat(A):有理数近似:有理数近似mod(A,k)(按(按floor)、)、rem(A,k):求余数:求余数gcd(n,m)、lcm(n,m):最大公约数、最小公倍数:最大公约数、最小公倍数 流程控制结构流程控制结构MATLAB语言是一种编程语言,支持各种语言是一种编程语言,支持各种流程控制结构流程控制结构和和C等语言类似,也有不同等语言类

11、似,也有不同本节主要内容本节主要内容循环结构循环结构转移结构转移结构开关结构开关结构试探结构试探结构循环结构循环结构for结构和结构和while结构结构循环结构举例循环结构举例例例1:求:求两种结构,后者麻烦两种结构,后者麻烦for结构结构while结构结构例例2:求最小的:求最小的m:s=0; for i=1:1:100, s=s+i; end; ss=0; i=0;while(i100),i=i+1;s=s+i;end,ss=0;m=0;while s10000) break;endendbreak、continue语句语句continue语句经常与语句经常与for,while循环合用。当

12、循环语句中出现循环合用。当循环语句中出现continue时,则不再继续执行当前循环体内的程序语句,即提前结时,则不再继续执行当前循环体内的程序语句,即提前结束当前循环,并继续执行下一个循环。束当前循环,并继续执行下一个循环。break与与continue相似,也是经常与相似,也是经常与for while合用,但它不是继续合用,但它不是继续执行下一个循环,而是退出循环体,继续执行循环体之外的程序。执行下一个循环,而是退出循环体,继续执行循环体之外的程序。即终止循环!即终止循环!i=1;for n=2:100 if mod(n,2)=0|mod(n,3)=0|mod(n,5)=0|mod(n,7)

13、=0|mod(n,11)=0 %若能被这些数整除,则滑过若能被这些数整除,则滑过 continue else %否则(否则(if的条件表达式无法执行)将的条件表达式无法执行)将n值赋给向量值赋给向量X X(i)=n; i=i+1; endend例如:例如:判断输入数的奇偶性判断输入数的奇偶性n=input(n=);if rem(n,2)=0 display(n是偶数是偶数)else display(n是奇数是奇数)end mod(x,y)和和rem(x,y)的计算表达式都是的计算表达式都是 x - n.*y 但但n的定义不同,对于的定义不同,对于rem n = fix(x./y) = -6 而

14、对于而对于mod n = floor(x./y) = -7 所以所以 rem(-12.2,2) = -12.2 - (-6)*2 = -0.2 mod(-12.2,2) = -12.2 - (-7)*2 = 1.8 概括起来:概括起来:如果如果x、y同号,同号,rem和和mod结果相同;结果相同;如果如果x、y不同号,则不同号,则rem(x,y)的符号与的符号与x相同,相同, mod(x,y)的符号与的符号与y相同。相同。开关结构开关结构开关结构开关结构执行完语句段后将转出开关体执行完语句段后将转出开关体当需要在开关表达式满足若干个表达式之一时执当需要在开关表达式满足若干个表达式之一时执行某一

15、程序段,把这些表达式用大括号括起来行某一程序段,把这些表达式用大括号括起来前面枚举的各个表达式均不满足时,则将执行前面枚举的各个表达式均不满足时,则将执行otherwise语句,不是语句,不是default输入选择参数输入选择参数ch(1、2、3、4),当,当ch=1时,产生时,产生-10,10之间均之间均匀分布的随机数;当匀分布的随机数;当ch=2时,产生时,产生-5,5之间均匀分布的随机数;之间均匀分布的随机数;当当ch=3时,产生时,产生-1,1之间均匀分布的随机数;当之间均匀分布的随机数;当ch=4时,产生时,产生均值为均值为0,方差为,方差为1的正态分布随机数。的正态分布随机数。ch

16、=input(选择参数选择参数);switch ch case 1 x = 20 * rand - 10 case 2 x = 10 * rand - 5 case 3 x = 2 * rand - 1 case 4 x = randnend例如:根据菜单选择显示不同的函数例如:根据菜单选择显示不同的函数x=menu(波形波形,正弦正弦,余弦余弦,正切正切,余切余切);switch xcase 1 ezplot(sin)case 2 ezplot(cos)case 3 ezplot(tan)case 4 ezplot(cot)end menu函数函数 格式格式: menu(标题标题,标签标签1

17、,标签标签2,.) 试探结构试探结构试探结构试探结构首先试探性地执行语句段首先试探性地执行语句段1,如果出现错误,则,如果出现错误,则放弃这段语句,转而执行语句段放弃这段语句,转而执行语句段2中的语句中的语句试探性结构在实际编程中还是很实用的试探性结构在实际编程中还是很实用的可以将一段不保险但速度快的算法可以将一段不保险但速度快的算法try段落中段落中将一个保险但速度极慢的程序放到将一个保险但速度极慢的程序放到catch段落中段落中这样就能保证原始问题的求解更加可靠这样就能保证原始问题的求解更加可靠可能使程序高速执行。可能使程序高速执行。a=magic(4);b=eye(3);try c=a*

18、bcatch c=a(1:3,1:3)*bendtry 尝试执行的语句块尝试执行的语句块catch 出错后执行的语句块出错后执行的语句块endMATLAB函数编写与技巧函数编写与技巧M-脚本文件脚本文件为什么需要编写函数?为什么需要编写函数?MATLAB主流的程序设计方式主流的程序设计方式封装变量、封装程序,形成独立的程序封装变量、封装程序,形成独立的程序本节主要内容本节主要内容MATLAB语言的函数的基本结构语言的函数的基本结构可变输入、输出个数的处理可变输入、输出个数的处理MATLAB函数的跟踪调试函数的跟踪调试伪代码与代码保密处理伪代码与代码保密处理 MATLAB语言的脚本文件语言的脚本

19、文件编程风格编程风格 注释部分注释部分 (1) 在第一行中放置程序名和任何关键词。在第一行中放置程序名和任何关键词。 (2)在第二行中放置创建的日期,以及创建者的姓名。)在第二行中放置创建的日期,以及创建者的姓名。 (3) 每个输入和输出变量的变量名定义。每个输入和输出变量的变量名定义。 (4) 程序中调用的每个用户自定义函数名称。程序中调用的每个用户自定义函数名称。输入部分:输入部分:放置输入数据和放置输入数据和/或输入函数,其允许输入数据。或输入函数,其允许输入数据。计算部分计算部分 :放置计算。放置计算。 输出部分:输出部分:放置那些以所需格式传递的输出函数。放置那些以所需格式传递的输出

20、函数。控制输入和输出控制输入和输出 MATLAB为从用户获取输入以及为格式化输出为从用户获取输入以及为格式化输出(执行执行MATLAB命令而获得的命令而获得的结果结果)提供了许多有用的命令。提供了许多有用的命令。 命命 令令说说 明明disp(A)显示数组显示数组A的内容,而不是数组的名称的内容,而不是数组的名称disp(text)显示单引号内部的文本串显示单引号内部的文本串fprintf执行格式化的写入到屏幕或者写入到一个文件执行格式化的写入到屏幕或者写入到一个文件x = input(text)显示单引号中的文本,等待用户的键盘输入,并且将输入显示单引号中的文本,等待用户的键盘输入,并且将输

21、入数据数据存储在存储在x中中x = input(text,s)显示单引号中的文本,等待用户的键盘输入,并且将输入显示单引号中的文本,等待用户的键盘输入,并且将输入的的字符串存储在字符串存储在x中中k=menu(title,option1,option2,.显示菜单,该菜单的名称在字符串变量显示菜单,该菜单的名称在字符串变量title中,并且菜单中,并且菜单的选项是的选项是option1、option2等等等等输入与输出输入与输出用户输入用户输入 input函数用以在屏幕上显示文本,等待用函数用以在屏幕上显示文本,等待用户从户从键盘键盘输入某些内容,然后再将输入内输入某些内容,然后再将输入内容存

22、储在指定变量之中。容存储在指定变量之中。input(提示信息提示信息,选项选项),用户输出用户输出 disp函数:用来显示表达式的结果。函数:用来显示表达式的结果。 disp(hello!) disp(34)fprintf函数函数:将格式化的输出显示出来。将格式化的输出显示出来。 fprintf(The value is %d!n,34) %d 整数整数 %f 浮点数浮点数 %c 单个字符单个字符 %s 字符串字符串 n是换行符是换行符fprintf(%20.6f,c) 浮点数浮点数20位,小数点后面有位,小数点后面有6位位脚本文件示例脚本文件示例 % 程序程序Falling_Speed.m:

23、绘制一个下落物体的速度图形。:绘制一个下落物体的速度图形。% 输入变量:输入变量:% tf = 最终时间最终时间(单位为秒单位为秒)% 输出变量:输出变量:% t = 计算速度的时间数组计算速度的时间数组(单位为秒单位为秒)% v = 速度数组速度数组(米米/秒秒)% 参数值:参数值:g = 9.81; % 以以SI为单位的重力加速度为单位的重力加速度% 输入部分:输入部分:tf = input(Enter the final time in seconds: );% 计算部分:计算部分:dt = tf/500;t = 0:dt:tf; % 创建一个有创建一个有501个时间值的数组。个时间值的

24、数组。v = g*t;% 输出部分:输出部分:plot(t,v),xlabel(Time (seconds),ylabel(Speed (meters/second) ) MATLAB语言的函数的基本结构语言的函数的基本结构函数的结构函数的结构变元个数:变元个数:nargin、nargout注释语句:由引导注释语句:由引导联机帮助的编写联机帮助的编写变元检测允许函数有不同的调用方式变元检测允许函数有不同的调用方式function y=test1(a,b) if nargin=0 a=0;b=0; elseif nargin=1 b=0; endy=a+b;endnargin是用来判断输入变量个

25、数的函数是用来判断输入变量个数的函数nargout是用来判断输出变量个数的函数。是用来判断输出变量个数的函数。nargin和和nargout本身都是函数,不是变量,所以不能赋值,也不本身都是函数,不是变量,所以不能赋值,也不能显示。能显示。nargin和和nargout:function calculate_distance(varargin)%求两点间距离求两点间距离%使用方法:使用方法:calculate_distance(2 3),calculate_distance(2 3,4 5)if nargin=0 disp(未输入,请至少输入一点坐标值未输入,请至少输入一点坐标值)endif

26、nargin=1 x1=varargin1; d=sum(x1.2)0.5; disp(输入只有一点,则求其距原点距离为:输入只有一点,则求其距原点距离为:) disp(距离距离d= num2str(d) endif nargin=2 x1=varargin1; x2=varargin2; x=x1-x2; d=sum(x.2)0.5; disp(输入有两点,则求这两点距离为:输入有两点,则求这两点距离为:) disp(距离距离d= num2str(d)endif nargin2 disp(输入超过两个点,请至多输入两点坐标值输入超过两个点,请至多输入两点坐标值)endendvarargin提

27、供了一种函数可变参数列表机制,提供了一种函数可变参数列表机制,用来存入输入变量,以元胞数组形式存储。用来存入输入变量,以元胞数组形式存储。varargout可变的数个返回值,用来存入输可变的数个返回值,用来存入输出变量,以元胞数组形式存储。出变量,以元胞数组形式存储。MATLAB函数的跟踪调试函数的跟踪调试使用使用MATLAB程序编辑界面程序编辑界面medit局部变量值可以由跟踪调试程序测出局部变量值可以由跟踪调试程序测出跟踪调试功能跟踪调试功能设置断点设置断点单步执行函数单步执行函数跳入下级函数单步执行跳入下级函数单步执行取消断点取消断点在断点处一次执行完成在断点处一次执行完成取消跟踪调试取

28、消跟踪调试伪代码与代码保密处理伪代码与代码保密处理伪代码:能保持原伪代码:能保持原*.m函数的功能,但代码函数的功能,但代码被变成二进制的不可读代码被变成二进制的不可读代码为什么需要伪代码为什么需要伪代码提高执行速度提高执行速度代码保密代码保密注意事项:自行保留原注意事项:自行保留原*.m文件,不可恢复文件,不可恢复命令格式命令格式pcode mytestpcode mytest inplacepcode *.mMATLAB语言下图形的绘制与技巧语言下图形的绘制与技巧可以绘制出各种二维曲线可以绘制出各种二维曲线可以由数据绘图,也可以由格式绘图可以由数据绘图,也可以由格式绘图本节主要内容本节主要

29、内容基本二维图形绘制语句基本二维图形绘制语句带有其他选项的绘图函数带有其他选项的绘图函数二维曲线的标注方法二维曲线的标注方法在在MATLAB图形上添加文字标注图形上添加文字标注特殊图形绘制函数及举例特殊图形绘制函数及举例隐函数的曲线绘制隐函数的曲线绘制基本二维图形绘制语句基本二维图形绘制语句已知数据点(实验点或计算点)已知数据点(实验点或计算点)可以容易地绘制出二维可以容易地绘制出二维“曲线曲线”曲线是折线,不是真正的曲线曲线是折线,不是真正的曲线如果数据点足够密,则绘制的折线看起来像曲如果数据点足够密,则绘制的折线看起来像曲线,另外还可以对曲线进行光滑处理线,另外还可以对曲线进行光滑处理Pl

30、ot() 函数的扩展函数的扩展t 是向量,是向量,y 是矩阵,能同时绘制多条曲线是矩阵,能同时绘制多条曲线t, y 是同样维数的矩阵,能绘制多条曲线是同样维数的矩阵,能绘制多条曲线多组多组 t, y 值值绘图语句选项绘图语句选项双纵坐标曲线绘制双纵坐标曲线绘制曲线绘制举例曲线绘制举例正弦曲线绘制正弦曲线绘制正弦余弦曲线绘制正弦余弦曲线绘制双纵坐标曲线绘制双纵坐标曲线绘制二维曲线的标注方法二维曲线的标注方法二维曲线修饰方法二维曲线修饰方法坐标轴设置坐标轴设置其他设置其他设置text、xlim、ylim函数函数x轴上下限设定轴上下限设定xlim(a,b);y轴上下限设定轴上下限设定ylim(a,b

31、)text(x,y,string) 使用使用text函数可以根据指定位置和属性添加文字说明。函数可以根据指定位置和属性添加文字说明。该函数调用格式为:该函数调用格式为: text(x,y,z,说明文字说明文字,属性名,属性名1,属性值,属性值1) 其中其中x,y,z为位置坐标。说明文字中除使用标准的为位置坐标。说明文字中除使用标准的ASCII字符外,还可使用字符外,还可使用LaTeX格式的控制字符。格式的控制字符。 x=0:0.05:7;y=log10(x);plot(x,y)text(2,0.2,leftarrow Log(x),fontsize,20)函数字符函数字符 代表符号代表符号 函

32、数字符函数字符 代表符号代表符号函数字符函数字符代表符号代表符号alphaalphaa aupsilonupsilonu usimsim betabetab bphiphif fleqleq gammagammag gOmegaOmegaW Winftyinfty deltadeltad dpsipsiY Yproptoproptoepsilonepsilone eomegaomegaw wdiamondsuitdiamondsuit pipip pGammaGammaG Gheartsuitheartsuit etaetah hDeltaDeltaD Dspadesuitspadesuit

33、thetathetaq qThetaThetaQ Qleftrightarrowleftrightarrowrhorhor rLambdaLambdaL Lleftarrowleftarrowsigmasigmas sXiXiX Xuparrowuparrowkappakappak kPiPiP Prightarrowrightarrowlambdalambdal lSigmaSigmaS Sdownarrowdownarrow mumum mUpsilonUpsilonU Ucirccirc nunun nPhiPhiF Fpmpm xixix xPsiPsiy ygeqgeq 使用使用la

34、texTex字符的字体设置字符的字体设置bf:设置字体为粗体字。:设置字体为粗体字。it:设置字体为斜体字。:设置字体为斜体字。sl:设置字体为斜体字,很少使用。:设置字体为斜体字,很少使用。rm:设置字体为正常字体。:设置字体为正常字体。fontname字体名字体名:设置字体名。例如:设置字体名。例如:fontname宋体宋体。fontsize字体大小字体大小:设置字体大小。例如:设置字体大小。例如:fontsize16。 title(itAe-alphaittsinbetaittalpha str=黑黑colorred红红colorgreen绿绿colorrgb0 0 1蓝蓝黑黑text(

35、0.1,0.5,str,fontsize,24,fontname,黑体黑体)特殊图形绘制函数及举例特殊图形绘制函数及举例条形图:条形图:t=0:0.2:2*pi; y=cos(t); bar(y)阶梯图:阶梯图:x=0:pi/20:2*pi;y=sin(x);stairs(x,y)彗星图:彗星图:t= -pi:pi/500:pi; y=tan(sin(t)-sin(tan(t);comet(t,y)loglog():(): x轴、轴、y轴都使用常用对数刻度轴都使用常用对数刻度semilogx():():x轴使用常用对数刻度轴使用常用对数刻度semilogy():():y轴使用常用对数刻度轴使用

36、常用对数刻度x=logspace(-1,2);loglog(x,exp(x),-s)grid onx=logspace(-1,2);plot(x,exp(x),-s)grid onx=logspace(-1,2);semilogy(x,exp(x),-s)grid onx=logspace(-1,2);semilogx(x,exp(x),-s)grid onlogspace(a,b,n),其中,其中a、b、n分别表示开始值(分别表示开始值(10a)、结束值)、结束值(10b)、元素个数元素个数(n)。子窗口分割子窗口分割子窗口分割子窗口分割不同子窗口下绘制不同的曲线不同子窗口下绘制不同的曲线

37、t=-pi:0.3:pi;y=1./(1+exp(-t);subplot(2,2,1),plot(t,y);title(plot(t,y)subplot(2,2,2),stem(t,y);title(stem(t,y)subplot(2,2,3,4),stairs(t,y);title(stairs(t,y) m=2,2,3,-3;n=3,-3,5,5;t=0:0.001:1;for k=1:4x=2*cos(20*m(k)*pi.*t)+cos(20*n(k)*pi.*t);y=2*sin(20*m(k)*pi.*t)+sin(20*n(k)*pi.*t);subplot(2,2,k)plo

38、t(x,y)end某质点的位移由某质点的位移由x(t)和和y(t)确定,试绘制其运动轨迹确定,试绘制其运动轨迹x(t)=2cos(20mt)+cos(20nt)y(t)=2sin(20mt)+sin(20nt)m m2 22 23 3-3-3n n3 3-3-35 55 5要求:要求:1.m、n分别取上表中的四个数值分别取上表中的四个数值2.绘制绘制1秒内的运动轨迹,每隔秒内的运动轨迹,每隔0.001秒取一个点;秒取一个点;3.四种情况的运动轨迹绘制在一个图形窗口的四个坐标轴中,排成四种情况的运动轨迹绘制在一个图形窗口的四个坐标轴中,排成2行行2列。列。隐函数的曲线绘制隐函数的曲线绘制隐函数绘

39、制函数ezplot()椭圆绘制复杂隐函数参数方程三维图形的绘制方法三维图形的绘制方法1 三维曲线的绘制方法三维曲线例,三维曲线MATLAB绘制命令 t=0:0.1:10*pi;x=2*t; y=sin(t); z=cos(t);plot3(x,y,z);2 二维数据网格:二维数据网格:meshgrid()X,Y=meshgrid(x,y)由向量由向量x和和y生成二维数组生成二维数组X和和Y,用来计算二,用来计算二元函数元函数f(x,y)的值的值Z=f(X,Y)。 x=-4:0.5:4;y=-4:0.5:4;X,Y=meshgrid(x,y);Z=sin(sqrt(X.2+Y.2);plot3(

40、X,Y,Z)3 三维网格图:三维网格图:mesh()mesh(x,y,z):绘制由数组绘制由数组x,y,z所确定的曲面网格图所确定的曲面网格图x,y可以为数组也可以为向量,但可以为数组也可以为向量,但z必须为二维数必须为二维数组组 m,n=size(z),length(x)=n,length(y)=mmeshc(x,y,z):增加等高线。增加等高线。meshz(x,y,z):屏蔽边界面。屏蔽边界面。 x=-4:0.2:4;X,Y=meshgrid(x);Z=sin(sqrt(X.2+Y.2);mesh(X,Y,Z); x=-10:0.5:10;X,Y=meshgrid(x);r=sqrt(X.

41、2+Y.2)+eps;Z=sin(r)./r;meshc(X,Y,Z)4 三维表面图:三维表面图:surf()surf(x,y,z):绘制由数组绘制由数组x,y,z所确定的曲面图所确定的曲面图surfc(x,y,z):增加等高线增加等高线 x=-10:0.5:10;X,Y=meshgrid(x);r=sqrt(X.2+Y.2)+eps;Z=sin(r)./r;surf(X,Y,Z)mesh()/surf()属性设置属性设置 x=-10:0.5:10;X,Y=meshgrid(x);r=sqrt(X.2+Y.2)+eps;Z=sin(r)./r;h=mesh(X,Y,Z,edgecolor,bl

42、ack)set(h,facecolor,r)set(h,linewidth,2) x=-10:0.5:10;X,Y=meshgrid(x);r=sqrt(X.2+Y.2)+eps;Z=sin(r)./r;surf(X,Y,Z,edgecolor,none)5 利用利用surf()绘制一些常用的三维表面图绘制一些常用的三维表面图绘制三维曲面的方法:绘制三维曲面的方法:(1)根据根据X,Y,Z数组确定网格点数组确定网格点(2)用网格线连接在同一行中的网格点用网格线连接在同一行中的网格点(3)用网格线连接在同一列中的网格点用网格线连接在同一列中的网格点(4)用颜色数组用颜色数组C确定网格线确定网格线

43、(面面)的颜色的颜色 A=1;0;2;B=3;0;3;C=1;0;0;D=3;0;0;P=A,B;C,DX=P(1,4,:)Y=P(2,5,:)Z=P(3,6,:);h=surf(X,Y,Z);set(h,facecolor,b);axis(0,4,-1,1,0,4)思路:把四个顶点分成思路:把四个顶点分成2行行2列,将相应的坐标列,将相应的坐标放进放进X,Y,Z数组即可绘图。数组即可绘图。用用surf()绘制四边形平面绘制四边形平面 A=1;0;2;A=3;0;3;C=1;0;0;D=3;0;0;P=A,A;C,DX=P(1,4,:)Y=P(2,5,:)Z=P(3,6,:);h=surf(X

44、,Y,Z);set(h,facecolor,b);axis(0,4,-1,1,0,4)思路:想象下有两个点,只不过完全重合,这样就有思路:想象下有两个点,只不过完全重合,这样就有四个顶点了,可以分成四个顶点了,可以分成2行行2列,将相应的坐标放进列,将相应的坐标放进X,Y,Z数组即可绘图。数组即可绘图。用用surf()绘制三角形平面绘制三角形平面绘制长方体表面图绘制长方体表面图 L=rand(1);W=rand(1);H=rand(1);A=rand(3,1);B=A+L;0;0;C=B+0;W;0;D=A+0;W;0;r1=repmat(A,1,5);r2=A,B,C,D,A;r3=r2+r

45、epmat(0;0;H,1,5);r4=repmat(r3(:,1),1,5);P=r1;r2;r3;r4;X=P(1:3:end,:);Y=P(2:3:end,:);Z=P(3:3:end,:);surf(X,Y,Z,facecolor,b,edgecolor,none)axis vis3dhold onx=X(2:3,:);y=Y(2:3,:);z=Z(2:3,:);plot3(x,y,z,r,linewidth,3)plot3(x,y,z,r,linewidth,3)axis vis3d: 保持保持高、宽比不变,用高、宽比不变,用于三维旋转时避免于三维旋转时避免图形大小变化图形大小变化B

46、 = repmat(A,m,n) 将矩阵将矩阵 A 复制复制 mn 块,即把块,即把 A 作为作为 B 的元素,的元素,B 由由 mn 个个 A 平铺而成。平铺而成。 z1=0;z2=5;M=20;N=20;R=5;r=2;t=0:2*pi/N:2*pi;X=R*cos(t);r*cos(t);Y=R*sin(t);r*sin(t);Z=z1*ones(size(t);z2*ones(size(t);t=linspace(0,2*pi,N);s=linspace(0,2*pi,M);r=(2+sin(s);h=linspace(z1,z2,M);X=r*cos(t);Y=r*sin(t);Z=

47、h*ones(size(t);surf(X,Y,Z)绘制正棱柱面绘制正棱柱面z1=0 %底面所在的平面底面所在的平面z2=0 %顶面所在的平面顶面所在的平面M=20 %纬线数目纬线数目N=20 % 经线数目经线数目横截面半径变化规律:横截面半径变化规律:r=2+sin 02 r=(sin)/ 0 r=2;M=30;N=30;phi=0:2*pi/M:2*pi;theta=linspace(0,pi,N);X=r*sin(theta)*cos(phi);Y=r*sin(theta)*sin(phi);Z=r*cos(theta)*ones(size(phi);surf(X,Y,Z)axis sq

48、uareaxis image:纵横坐标采用等长刻度,:纵横坐标采用等长刻度, 且坐标框紧贴数据范围且坐标框紧贴数据范围axis normal:默认矩形坐标系:默认矩形坐标系axis square: 产生正方形坐标系产生正方形坐标系axis tight:把数据范围直接设为坐标范围:把数据范围直接设为坐标范围MATLAB图形用户界面设计技术图形用户界面设计技术图形界面的优劣往往决定着软件的档次MATLAB的图形用户界面(Graphical User Interface, GUI)设计技术对设计出良好的通用软件十分重要本节主要内容图形界面设计工具Guide句柄图形学及句柄对象属性菜单系统设计界面设计

49、举例与技巧工具栏设计句柄图形学简介句柄图形学简介句柄图形学句柄图形学(handle graphics)的概念,为面的概念,为面向对象的图形处理提供了十分有用的工具向对象的图形处理提供了十分有用的工具在图形绘制时,每个图形元素在图形绘制时,每个图形元素(比如其坐标轴或比如其坐标轴或图形上的曲线、文字等图形上的曲线、文字等)都是一个独立的对象都是一个独立的对象用户可以对其中任何一个图形元素进行单独地用户可以对其中任何一个图形元素进行单独地修改,而不影响图形的其他部分修改,而不影响图形的其他部分向量化的绘图。这种向量化的绘图要求给每个向量化的绘图。这种向量化的绘图要求给每个图形元素分配一个句柄图形元

50、素分配一个句柄(handle)以后再对该图形元素做进一步操作时,则只需以后再对该图形元素做进一步操作时,则只需对该句柄进行操作即可对该句柄进行操作即可。RooTFigureUI ObjectsAxesHiddenAnnotation AxesCore ObjectsPlot ObjectsGroup ObjectsAnnotation Objectsroot句柄为句柄为0figure句柄为句柄为正整数正整数其他图形对象的句柄为其他图形对象的句柄为浮点数浮点数图形对象是由其属性来描述的。图形对象是由其属性来描述的。底层绘图函数用句柄设置图形对象的属性。底层绘图函数用句柄设置图形对象的属性。句柄属

51、性的设置与修改:句柄属性的设置与修改:get 获得句柄图形对象的属性和返回某些对象的句柄值获得句柄图形对象的属性和返回某些对象的句柄值set 改变图形对象的属性改变图形对象的属性delete(h) 删除句柄为删除句柄为h的图形对象的图形对象专用函数:专用函数:gcf 返回当前窗口对象的句柄返回当前窗口对象的句柄gca 返回当前轴对象的句柄返回当前轴对象的句柄gco 返回当前图形对象的句柄返回当前图形对象的句柄rootroot是关联计算机屏幕的一个图形对象,是关联计算机屏幕的一个图形对象,matlab系统中系统中只有一个只有一个root,它没有父对象,子对象是,它没有父对象,子对象是figure

52、。root对对象无法删除的。象无法删除的。root的属性的属性screensize:默认单位为像素,:默认单位为像素,由屏幕的左下角坐标、宽度、由屏幕的左下角坐标、宽度、高度四个参数确定。高度四个参数确定。以像素为单位,左下角坐标为(以像素为单位,左下角坐标为(1,1)以以inches为单位,左下角坐标为(为单位,左下角坐标为(0,0)ss=get(0,screensize)figure x=0:pi/10:2*pi;ss=get(0,screensize);W=ss(3);H=ss(4);figure(1)set(gcf,position,W/2,H/2,W/3,H/4)set(gcf,na

53、me,sin(x)的图像的图像,numbertitle,off)plot(x,sin(x)h=figureset(h,position,W/2,H/10,W/3,H/4)set(h,name,cos(x)的图像的图像,color,1,1,1)set(1,toolbar,none,menubar,none)plot(x,cos(x)axis图形窗口内部采用归一化坐标,左下角坐标为图形窗口内部采用归一化坐标,左下角坐标为(0,0),右上角,右上角坐标为坐标为(1,1)。x=0:pi/20:2*pi;y=sin(x);plot(x,y) h=get(gca, title);set(h,string,

54、abc,color,r,BackgroundColor,g,FontAngle, italic,Fontsize,50) h1=get(gca,xlabel);set(h1,string,x,color,b,Fontsize,30) h2=get(gca,ylabel);set(h2,string,y,color,k,Fontsize,40)图形界面设计工具图形界面设计工具Guide在命令窗口给出guide命令可以启动图形用户界面设计程序,得出如下选项建立一个默认的空白界面(Blank GUI)带有一些控件的界面(GUI with Uicontrols)带有坐标轴和菜单的界面(GUI with

55、 Axes and Menu)基本模态对话框(Modal Question Dialog打开现有的GUI (Open Existing GUI)MatlabMatlab为为GUIGUI设计一共准备了设计一共准备了4 4种模板,分别是种模板,分别是: :uBlank GUI(Default)(空白模板,默认空白模板,默认);uGUI with Uicontrols(带控件对象的带控件对象的GUI模板模板); uGUI with Axes and Menu(带坐标轴与菜单的带坐标轴与菜单的GUI模板模板);uModal Question Dialog(带模式问题对话框的带模式问题对话框的GUI模板

56、模板)。 按钮按钮(Push Buttons)(Push Buttons):执行某种预定的功能或操作;:执行某种预定的功能或操作; 开关按钮开关按钮(Toggle Button)(Toggle Button):产生一个动作并指示一个:产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并二进制状态(开或关),当鼠点击它时按钮将下陷,并执行执行callbackcallback(回调函数)中指定的内容,再次点击,(回调函数)中指定的内容,再次点击,按钮复原,并再次执行按钮复原,并再次执行callback callback 中的内容;中的内容; 单选框单选框(Radio Button

57、)(Radio Button):单个的单选框用来在两种状态:单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;在一组状态中选择单一的状态,或称为单选项; 复选框复选框(Check Box)(Check Box):单个的复选框用来在两种状态之:单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;一组状态中作组合式的选择,或称为多选项; 文本编辑器文本编辑器(Edit Tex

58、t)(Edit Text):用来使用键盘输入字符串的:用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操值,可以对编辑框中的内容进行编辑、删除和替换等操作;作; 静态文本框静态文本框(Static Text)(Static Text): :仅用于显示单行的说明文字仅用于显示单行的说明文字; ; 滚动条滚动条(Slider)(Slider): 可输入指定范围的数量值;可输入指定范围的数量值; 边框边框(Frames)(Frames):在图形窗口圈出一块区域;:在图形窗口圈出一块区域; 列表框列表框(ListBox)(ListBox):在其中定义一系列可供选择的字符:在其中定

59、义一系列可供选择的字符串;串; 弹出式菜单弹出式菜单(Pop-up Menus)(Pop-up Menus): 让用户从一列菜单项中让用户从一列菜单项中选择一项作为参数输入;选择一项作为参数输入;此外还有坐标轴此外还有坐标轴(Axes)(Axes), 用于显示图形和图像。用于显示图形和图像。 控件对象的公共属性控件对象的公共属性uChildren Children 取值为空矩阵,因为控件对象没有自己的子对取值为空矩阵,因为控件对象没有自己的子对象;象;uTagTag取值为字符串,定义了控件的标识值,在任何程序中取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象;都

60、可以通过这个标识值控制该控件对象;uTypeType 取值为取值为uicontroluicontrol,表明图形对象的类型;,表明图形对象的类型;uVisible取值为取值为on on 或或offoff。uUserDateUserDate取值为空矩阵,用于保存与该控件对象相关的取值为空矩阵,用于保存与该控件对象相关的重要数据和信息;重要数据和信息;uParentParent取值为某个图形窗口对象的句柄,该句柄表明了取值为某个图形窗口对象的句柄,该句柄表明了控件对象所在的图形窗口;控件对象所在的图形窗口;uBackgroundColorBackgroundColor取值为颜色的预定义字符或取值为颜色的预

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论