2020年1月29日1教学目标掌握利用MATLAB2007的命令窗口进行简单的数学运算了解MATLAB2007的基本数学函数掌握常用的操作命令和快捷键了解MATLAB2007的数据类型了解MATLAB2007的操作符了解MATLAB2007脚本编程2020年1月29日2教学重点掌握利用MATLAB2007的命令窗口进行简单的数学运算掌握常用的操作命令和快捷键了解MATLAB2007的数据类型了解MATLAB2007的操作符2020年1月29日3教学内容简单的数学运算常用的操作命令和快捷键MATLAB2007b的数据类型MATLAB2007b的操作符MATLAB2007b的基本数学函数MATLAB2007b脚本编程2020年1月29日4简单的数学运算(1/5)最简单的计算器使用法直接输入法存储变量法2020年1月29日5简单的数学运算(2/5)表达式书写规则在大多数情况下,MATLAB对空格不予处理,因此在书写表达式时,可以利用空格调整表达式的格式,使表达式更易于阅读。在MATLAB表达式中,遵守四则运算法则,与通常法则相同。即运算从左到右进行,乘法和除法优先于加减法,指数运算优先于乘除法,括号的运算级别最高;在有多重括号存在的情况下,从括号的最里边向最外边逐渐扩展。需要注意的是,在MATLAB中只用小括号代表运算级别,中括号只用于生成向量和矩阵,花括号用于生成单元数组。2020年1月29日6简单的数学运算(3/5)MATLAB的数学运算符需要注意的是,右除和左除的意义并不相同。右除为常规的除法,而左除的意义为:a\b=b/a。符号功能实例+加法3+5=8-减法3-5=-2*矩阵乘法3*5=15.*乘,点乘,即数组乘法/右除3/5=0.6000./数组右除\左除3\5=1.6667.\数组左除^乘方3^5=243.^数组乘方'矩阵共轭转置.'矩阵转置2020年1月29日7简单的数学运算(4/5)标点符号的使用在MATLAB中,标点符号有着充分的意义,可以用标点符号进行运算,或者标点符号可以包含特定的意义。标点符号定义标点符号定义分号(;)数组行分隔符;取消运行显示点(.)小数点;结构体成员访问逗号(,)数组列分隔符;函数参数分隔符省略号(…)续行符冒号(:)在数组中应用较多,如生成等差数列引号(‘’)定义字符串圆括号(())指定运算优先级;函数参数调用;数组索引等号(=)赋值语句方括号([])定义矩阵感叹号(!)调用操作系统运算花括号({})定义单元数组百分号(%)注释语句的标识2020年1月29日8简单的数学运算(5/5)分号(;)分号用于区分数组的行,或者用于一个语句的结尾处,取消运行显示。百分号(%)该符号用于在程序文本中添加注释,增加程序的可读性。百分号之后的文本都将视作注释,系统不对其进行编译。2020年1月29日9MATLAB中的常用数学函数MATLAB提供了一系列的函数支持基本的数学运算,这些函数中的大多数调用格式和我们平时的书写习惯一致,方便用户记忆和书写。2020年1月29日10常用的操作命令和快捷键(1/3)为方便用户操作,MATLAB中定义了一些快捷键。掌握一些常用的操作命令和快捷键,可以使得对MATLAB的操作更加便利。2020年1月29日11常用的操作命令和快捷键(2/3)常用的操作命令命令功能命令功能cd显示或改变工作目录hold图形保持命令clc清空命令窗口load加载指定文件中的变量clear清除工作区中的变量pack整理内存碎片clf清除图形窗口path显示搜索目录diary日志文件命令quit退出MATLABdir显示当前目录下文件save保存内存变量disp显示变量或文字的内容type显示文件内容echo命令窗口信息显示开关2020年1月29日12常用的操作命令和快捷键(3/3)常用的操作快捷键快捷键功能快捷键功能↑(Ctrl+p)调用上一行Home(ctrl+a)移动到命令行开头↓(Ctrl+n)调用下一行End(ctrl+e)移动到命令行结尾←(Ctrl+b)光标左移一个字符Ctrl+Home移动到命令窗口顶部→(Ctrl+f)光标右移一个字符Ctrl+End移动到命令窗口底部Ctrl+←光标左移一个单词Shift+Home选中光标和表达式开头之间的内容Ctrl+→光标右移一个单词Shift+End选中光标和表达式结尾之间的内容Esc取消当前输入行Ctrl+k剪切光标和表达式结尾之间的内容2020年1月29日13MATLAB2007b的数据类型整数浮点数复数逻辑变量各种数据类型之间的运算各种数据类型之间的转换数据类型操作函数变量系统预定义的特殊变量2020年1月29日14数据类型操作函数其中的’type’包括’numeric’、’integer’、’float’和所有的数据类型。函数描述double创建或转化为双精度类型single创建或转化为单精度类型int8,int16,int32,int64创建或转化为相应的有符号整数类型uint8,uint16,uint32,uint64创建或转化为相应的无符号整数类型isnumeric判断是否为整数或浮点数,是则返回true(或者1)isinteger判断是否为整数,是则返回true(或者1)isfloat判断是否为浮点数,是则返回true(或者1)isa(x,’type’)判断是否为‘type’指定的类型,是则返回true(或者1)cast(x,’type’)设置x的类型为’type’intmax(‘type’)’type’类型的最大整数值intmin(‘type’)’type’类型的最小整数值realmax(‘type’)’type’类型的最大浮点实数值realmin(‘type’)’type’类型的最小浮点实数值eps(‘type’)’type’类型eps值eps(‘x’)变量x的eps值2020年1月29日15整数MATLAB支持8位、16位、32位和64位的有符号和无符号整数数据类型。上述整数数据类型除了定义范围不同外,具有相同的性质。数据类型描述uint88位无符号整数,范围为0~255(即0~28-1)int88位有符号整数,范围为-128~127(即-27~27-1)uint1616位无符号整数,范围为0~65535(即0~216-1)int1616位有符号整数,范围为-32768~32767(即-215~215-1)uint3232位无符号整数,范围为0~4294967295(即0~232-1)int3232位有符号整数,范围为-2147483648~2147483647(即-231~231-1)uint6464位无符号整数,范围为0~18446744073709551615(即0~264-1)int6464位有符号整数,范围为-9223372036854775808~9223372036854775807(即-263~263-1)2020年1月29日16定义整数变量定义变量:由于MATLAB默认的数据类型为双精度型,因此在定义整形变量时,需指定变量的数据类型。2020年1月29日17整数运算(1/2)运算1.类型相同的整数之间可以进行运算,返回相同类型的结果。2.在进行除法时,MATLAB首先将两个数视为双精度类型进行运算,然后将结果转化为相应的整形数据。MATLAB中不允许进行不同整数类型之间的运算。2020年1月29日18整数运算(2/2)由于每种整数数据类型都有相应的取值范围,因此数学运算有可能产生结果溢出。MATLAB利用饱和处理处理此类问题,即当运算结果超出了此类数据类型的上限或下限时,系统将结果设置为该上限或下限。例2-10整数运算中的数据溢出x=int8(100);y=int8(90);z=x+yz=127x-3*yans=-27x-y-y-yans=-128结果溢出上限,因此结果为1273*y溢出上限,结果为127,继续计算,得到最后结果-27计算x-y-y-y时,从左到右进行计算,结果溢出下限,因此结果为-1282020年1月29日19浮点数(1/2)MATLAB的默认数据类型是双精度类型(double)。为了节省存储空间,MATLAB也支持单精度数据类型的数组。单精度和双精度数据类型的取值范围和精度可以通过例2-11的方式进行查看2020年1月29日20浮点数(2/2)例2-11单精度和双精度数据类型的取值范围和精度realmin('single')ans=1.1755e-038realmax('single')ans=3.4028e+038eps('single')ans=1.1921e-007realmin('double')ans=2.2251e-308realmax('double')ans=1.7977e+308eps('double')ans=2.2204e-016创建单精度类型的变量时需要声明变量类型,与创建整型变量类似。单精度数据类型的数据进行运算时,返回值为单精度。2020年1月29日21复数复数由两个部分组成:实部和虚部。基本虚数单位等于,在MATLAB中虚数单位由i或者j表示。MATLAB中可以通过两种方法创建复数,第一种方法为直接输入法,另一种创建复数的方法为通过complex函数。2020年1月29日22复数complex函数的调用方法如下。c=complex(a,b),返回结果c为复数,其实部为a,虚部为b。c=complex(a),只有一个输入参数,返回结果c为复数,其实部为a,虚部为0。但是此时c的数据类型为复数。2020年1月29日23逻辑数组(1/5)逻辑数据类型通过1和0分别表示逻辑真和逻辑假。一些MATLAB函数或操作符会返回逻辑真或逻辑假表示条件是否满足。如表达式(5*10)40返回逻辑真。在MATLAB中,存在逻辑数组,如下面的表达式返回逻辑数组:[3040506070]40ans=001112020年1月29日24逻辑数组(2/5)逻辑数组的创建创建逻辑数组的最简单的方法为直接输入元素的值为true或者false逻辑数组也可以通过逻辑表达式生成2020年1月29日25逻辑数组(3/5)MATLAB中返回逻辑值的函数和操作符函数说明true,false将输入参数转化为逻辑值logical将数值转化为逻辑值&(and),|(or),~(not),xor,any,all逻辑操作符&&,||“并”和“或”的简写方式==(eq),~=(ne),(lt),(gt),=(le),=(ge)关系操作符所有的is*类型的函数,cellfun判断函数strcmp,strncmp,strcmpi,strncmpi字符串比较2020年1月29日26逻辑数组(4/5)逻辑数组的应用用于条件表达式如果仅当条件成立时执行某段代码,可以应用逻辑数组进行判断和控制用于数组索引在MATLAB中支持通过一个数组对另一个数组进行索2020年1月29日27逻辑数组(5/5)逻辑数组的判断MATLAB中提供了一组函数用于判断数组是否为逻辑数组函数功能whos(x)显示数组x的元素值及数据类型islogical(x)判断数组x是否为逻辑数组,是则返回真isa(x,'logical')判断数组x是否为逻辑数组,是则返回真class(x)返回数组x的数据类型cellfun('islogical',x)判断单元数组的每个单元是否为逻辑值2020年1月29日28各种数据类型之间的转换在MATLAB中,各种数据类型之间可以互相转化,转化方式为:1)datatype(variable),其中datatype为目标数据类型,variable为待转化的变量;2)cast(x,’type’),将x的类型转化为’type’指定的类型。转化时,如果由高精确度数据类型转化为低精确度数据类型,则对数据进行四舍五