




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章,MATLAB的数据类型,荆华 ,MATLAB使用详解2012学年选修课,第4章 MATLAB7.0的数据类型,教学重点: MATLAB7.0支持15种基本的数据类型,每一种类型的数据都是以矩阵或数组的形式表现出来。本章主要介绍数值类型、逻辑类型和字符串类型。,4.1 MATLAB中的数据类型,MATLAB7.0支持多种数据类型,包括: 数值类型:包含8种整数类型、单精和双精浮点类型; 字符和字符串:常以向量数列的形式表示; 逻辑类型:0和1两个数值,表示逻辑真和假; 元胞、构架:可以包含不同类型数据; 函数句柄:函数的指针,可以通过其调用函数。 用户还可以通过MATLAB“类”(class)建立自定义数据类型。,所有类型的数据都被存储在矩阵或数组中进行操作,矩阵和数组可以从最小的空矩阵到任意的n维。,4.2 数值类型,数值类型包括有符号整数类型、无符号整数类型、单精度浮点类型和双精度浮点类型,如图所示。,4.2.1 整数类型,MATLAB数值类型中的整数类型包括有符号、无符号整数类型各4种,分别是1-、2-、4-和8-字节(8位、16位、32位和64位)的整数类型。有符号类型允许表示负数,但是由于其需要分配1位字节作为符号位,所以表示的范围没有同等字节的无符号类型大;无符号类型不能表示负数,只能表示正整数和0。根据具体需要,用户应该选择不同的存储类型;,例如,对于数值不大的整数“22”,就没有必要使用8-字节的类型来存储,因为1-字节整型所分配的内存空间已经足以满足此数的存储了,应使用字节数少的类型来存储数据,这样可以节省内存空间,提高效率。,4.2.1 整数类型,表列出了8种整数类型的名称、数值范围和转换函数。表中数据类型的表示范围都可以调用intmax和intmin函数查询各自的表示范围。,应用举例:,例:生成有符号整数x值为129. x=int8(129) x = 127 intmax(int8) ans = 127 intmin(int8) ans = -128,应用举例:, x=int16(129) x = 129 查看整数类型:1)whos;2)使用class函数查看所生成整数所属的类型。 whos Name Size Bytes Class x 1x1 2 int16 array Grand total is 1 element using 2 bytes class(x) ans = int16,4.2.2 单精度浮点型,MATLAB中,浮点数据类型有单精度和双精度两种,其构造规则都是依据IEEE754标准(关于此标准的具体描述,可以查询相关网站)制定。单精度数据需要32位的存储空间,其空间分配如表所示。,单精度数据的字节位功能,4.2.3 双精度浮点类型,双精度浮点类型是MATLAB中的默认数值类型,其构造规则与单精度一样,依照IEEE754标准。双精度数据需要64位的存储空间,下表为双精度空间分配表。,双精度数据的字节位功能,应用举例:,例:生成整数x,值为2,并分别转化为单精度浮点数y和双精度浮点数z。 x=2 x = 2 Matlab默认生成的数据类型为双精度浮点型 whos Name Size Bytes Class x 1x1 8 double array x=int8(2) x = 2 whos Name Size Bytes Class x 1x1 1 int8 array,应用举例:, y=single(x) y = 2 z=double(x) z = 2 whos Name Size Bytes Class x 1x1 1 int8 array y 1x1 4 single array z 1x1 8 double array Grand total is 3 elements using 13 bytes,4.2.4 复数,下面将介绍几种特殊的数据类型,即复数、“无穷”和“非数”等概念。MATLAB7.0中,复数属于双精度浮点数的一种特殊类型,用户可以无须任何特殊操作,把复数作为一个整体进行处理。,应用举例:, x=3+4i x = 3.0000 + 4.0000i y=3+4j y = 3.0000 + 4.0000i x=y ans = 1,说明:1)”比较结果返回值1,说明i和j在表示虚数单位时意义和用法相同。 2)4i(4j)是一个完整的虚部,不可以在中间加空格符号。 3)只有数字才可以和i或者j相连,表达式不可以。 Xcos(pi/3)i是错误的。,4.2.4 复数,Matlab7.0中提供了求一个复数的实部、虚部、模和相角的函数分别是: real(z)、 imag(z)、 abs(z) angle(z),x =3.0000 + 4.0000i real(x) ans = 3 imag(x) ans = 4 abs(x) ans = 5 angle(x) ans = 0.9273,4.2.5 无穷,在Matlab中有正无穷和负无穷。即“Inf”和“Inf”。常出现在: 1)在经典的初等数学中,1/0是错误的表达式(0不能做除数),是没有结果的。但是在MATLAB中,1/0是有意义的,结果为Inf(Infinity)。 2)例如,浮点数是有范围的,一旦MATLAB的运算结果超出浮点数的表示范围,系统也会用“-Inf”或“Inf”来表示计算结果。例如,10(308+1)的值超出了MATLAB允许的数值范围,系统用Inf表示。 10e(308+1) ans = Inf,4.2.6 非数,非数(NaN),是“Not a Number”的缩写,是一个既不是实数也不是复数的数值,MATLAB提供这样一个特殊类型的目的是扩大运算范围,有了这样一个数值,系统对于0/0、Inf/Inf的运算结果,也可以有合理的解释。 0/0 Warning: Divide by zero. %系统警告:0作为除数ans = NaN,4.3 逻辑类型,MATLAB用“0”和“1”分别代表逻辑“假”和逻辑“真”,逻辑类型数据常以标量形式出现,但有时也可以是逻辑数组(Logical Array)。MATLAB不但提供给用户比较齐全的算数运算符号,作为一种高级语言,同样也支持关系运算和逻辑运算,并且经常在程序中涉及这两种运算,关系和逻辑运算主要是为用户解决程序设计中的“真”、“假”问题。在程序设计中编写代码,特别是在使用各种控制语句的时候,用户常常需要使用这两种运算的结果(“真”或者“假”)作为控制语句的判断条件。,在MATLAB中的关系和逻辑运算式中,所有输入非0的数都为“逻辑真”,只有0才为“逻辑假”;而计算结果,即输出为一个逻辑数组,其中的元素,如果值为1,则表示“真”;如果值为0,则表示假。,4.3 逻辑类型,应用举例:,例如,比较10与100这两个数的大小。代码如下所示 “10等于100(=表示相等)”这个表达式返回值为0,表示表达式不成立;而“10小于100( 10=100 10100 ans = ans 0 1,4.3.2 关系运算符,关系运算式的一般格式为:x RO y,“RO”代表关系运算符(Relation Operator),在关系运算符两边进行比较的x和y可以是变量、字符串或者表达式等不同类型的数据,如果表达式正确(True),即x和y之间的关系为RO所描述的关系,则输出结果为“真”,表达式返回数值1;如果表达式不正确(False),即x和y之间的关系不是RO所描述的关系,则输出结果为“假”,表达式返回数值0。,Matlab7.0 关系运算符,应用举例:,例1:比较矩阵 a1,2,3;4,5,6;7,8,9和其共轭矩阵之间的关系。 说明:行、列数相同的数组可以进行关系运算,运算的原则是把对应的元素逐个运算,并使返回的元素组成一个与原数组同维的逻辑数组,即所有元素非“0”即“1”的数组。非同维的数组之间不能进行关系运算。, a=1,2,3;4,5,6;7,8,9 a = 1 2 3 4 5 6 7 8 9 a ans = 1 4 7 2 5 8 3 6 9 a=a ans = 1 0 0 0 1 0 0 0 1,应用举例:,例2:m为从1到10的一数列,即m=1:10,n=2+(m5),求标量n的值。 m=1:10 m = 1 2 3 4 5 6 7 8 9 10 n=2+(m5) n = 2 2 2 2 2 3 3 3 3 3 说明:在上述代码中首先进行(m5)的关系运算,然后把返回的逻辑数组进行“加2”的算数运算,得到标量n的值。 关系运算可以与算数运算混合使用。注意:关系运算符的优先级低于算数运算符,所以(m5)必须加括号。,4.3.3 逻辑运算符,MATLAB中的逻辑运算,包括我们常见的“与、或、非、异或”运算。逻辑运算的表现方式有3种,分别是元素方式(Element-wise)、比特方式(Bit-wise)以及短路方式(Short-Circuit)。将分别介绍3种方式的逻辑运算符。 元素式逻辑运算符,只接受逻辑类型的变量输入,一般是对于标量进行操作,具体功能如表所示。,MATLAB元素式逻辑运算符,应用举例:, x=1,2,3;4,5,6; y=1,0,0;0,1,1; x&y ans = 1 0 0 0 1 1 x|y ans = 1 1 1 1 1 1 xor(x,y) ans = 0 1 1 1 0 0,例:矩阵x=1,2,3;4,5,6和 矩阵y=1,0,0;0,1,1进行逻辑与、逻辑或和逻辑异或运算。,说明:进行运算的元素只要有1个不为0,则返回1,说明:进行运算的元素都不为0时返回1,说明:比较两元素如果相同返回0,若不同返回1,比特式逻辑运算符,比特式逻辑运算是对运算数的每一个比特位进行逻辑运算,先按照元素式逻辑运算规则把十进制的数值转换为二进制的数进行操作,再把得到的二进制逻辑数值转换为十进制数值。,Matlab 比特式逻辑运算符,应用举例*:,例如:十进制数分别为21,29进行比特位与、比特位或运算。 x=21; y=28; bitor(x,y) ans = 29 bitand(x,y) ans = 20,Matlab 短路式逻辑运算符,说明:元素式&与短路式&都是逻辑与,执行相同的运算,其结果相同,但是两者的运算方式不同。例如:矩阵A&B首先分别计算出A,B,然后进行逻辑与;而A&B首先计算A,如A的某一元素为0,则结果的对应元素为0,而不用计算B的对应元素。当A计算比较简单,B很复杂时,采用&会提高运算效率。同样的“|”与“|”也有相同的区别,应用举例* :,例:已知X=0,求X=0&1/X和X=0&1/X 。 在Matlab中执行结果显然均为0,即逻辑假。但元素式逻辑与运算和短路式逻辑与运算的计算过程是不同的,前者先分别计算X=0和1/X的结果,再进行逻辑与(&),而后者系统在判断符号左边表达式X=0的时候就已经得到了结果为“假”,数值为“0”;对于逻辑与运算只要运算数值为0,则结果为0,即不需要考虑右边的1/X的结果。,4.3.4 运算符的优先级,对于MATLAB7.0中不同的运算,优先级是个很重要的问题。搞清不同种类运算符的优先级顺序,可以更好地理解MATLAB的操作规则。 MATLAB在执行包含算数、关系及逻辑运算符号的运算时,遵循的原则是:按照优先级从高到低,同级的从左到右顺序执行,这与一般的运算法则是类似的。常用的MATLAB运算符的优先级顺序,如下表所示,从上到下优先级依次是从高到低。,Matlab中常用运算符号的优先级,算数运算符高于关系运算符高于逻辑运算符,应用举例:,已知矩阵z1,0,0;2,0,2;3,3,3计算z./3和(z./3) z./3 %先取反再点除 ans = 0 0.3333 0.3333 0 0.3333 0 0 0 0 (z./3) %先点除再取反 ans = 0 1 1 0 1 0 0 0 0,4.4 字符与字符串,使用MATLAB进行工作和学习时,不可避免地会遇到诸如文本处理、坐标标注等问题,这也就会用到MATLAB提供的另一种数据类型字符类型。本节后续主要讲解的内容包括:字符和字符串的概念和用法、字符串的比较与替换及字符串与数值的互相转化。,在MATLAB中,字符和字符串分别用char和string表示,MATLAB7.0中的char类型都是以2个字节编码来存储的,一般用单引号括注一个字符变量,如下代码所示,a是一个字符变量。 a=w a = w,4.4 字符与字符串,4.4.1 字符数组的建立,可以运用两种不同的方式表示字符串,即字符数组和字符串元胞,有关字符串元胞的概念将在后续章节中介绍,首先介绍使用字符数组的方式来创建字符串的方法。 例如,以字符数组的形式生成一个字符串。 a=the fourth chapter. a = the fourth chapter.,说明:1)字符串可以包含标点符号。 2)建立二维字符数组时,字符数组要求每行字符含有相同的列。当多个字符串具有不同长度时,为了避免出现错误,需要在短字符串的尾部添加空格来强制保证字符串等长。 例:把三个字符串abc、abcd和abcde合并成一个行数为3的字符数组。 a=abc ;abcd ;abcde a = abc abcd abcde,应用举例,如果不补空格,直接合并不同长度的字符串,系统报错。 如果字符数组之间用“,”分隔,形成一行向量,不需补空格 可以直接调用函数char创建字符数组,函数char可以按照最长字符串的长度,自动把长度不够的字符串末尾补空格,使所有的字符串的长度都相同。char(x1,x2,) 例如:char(abc,ab) char(abc,ab) ans = abc ab,应用举例:,4.4.2 字符串的比较,MATLAB中,如需要进行字符串或字符子串的比较,可以有以下几种方法: 1) 直接比较两字符串的全部或者部分是否相等; 2) 比较字符串中的单个字符是否相等; 3) 对字符串中的每个元素进行识别,判断其是字符或者空白符号。 说明:可以使用关系运算符“=”进行字符数组的比较,但是要求比较的数组具有相同的维数,或者其中一个数组为标量。,常用字符数组比较函数,应用举例:,例:比较两个字符串love和like。 strcmp(love,like) ans = 0 strncmp(love,like,1) ans = 1,4.4.3 字符串的查找与替换,MATLAB中提供了若干字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 400电话签合同范例
- app设计外包合同范例
- 京东电商合同范例
- 仪器公司转让合同范例
- 上海迪士尼购销合同范例
- 企业门卫临时劳务合同范例
- 上海光伏合同标准文本
- 专职义工合同标准文本
- 外贸函电磋商课件
- 2024年新北师大版一年级上册数学课件 第四单元 第3课时 课间
- 静脉输液不良反应及处理 课件
- 乡土中国的性别差异
- 高速铁路概论单元高速铁路发展概况课件
- 北师大版2025三年级语文下学期期中课堂知识检测考试
- 2024年甘肃兰州事业单位招聘考试真题答案解析
- 宁波浙大宁波理工学院招聘13名事业编制工作人员笔试历年参考题库附带答案详解
- 精神科医疗质量指标十二项控制评价体系
- 延安精神知识讲座课件
- 上海市金山区2025届高三高考二模地理试卷(含答案)
- 《电气控制技术》课件-反接制动控制
- 华为市场面试题及答案
评论
0/150
提交评论