MATLAB教学_最新第三章_数据类型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用空数组可以完成一些特殊的操作。
3.3
3.3.1
逻辑类型的关系运算
逻辑数据类型(bool型)
所谓逻辑数据类型就是仅具有两个数值的一种数 据类型,一个数值为TRUE,另一个为FALSE。用来 完成诸如关系运算或者逻辑运算。
在MATLAB中,参与逻辑运算或者关系运算的并 不一定必须有逻辑类型的数据,任何数值都可以参 与逻辑运算。这时MATLAB将所有非零值看作逻辑 真,将零值看作逻辑假。一般地,1表示逻辑真,0 表示逻辑假。
由于MATLAB系统默认的运算都是针对双精 度类型的数据或变量的,所以在进行两个int16 类型的变量加法时,MATLAB报告了相应的错 误。一般地,对于在表格所列的各种数据类型 (稀疏矩阵除外)的变量,MATLAB没有提供 相应的运算规则或者计算函数。如果需要为这 些没有运算规则的数据类型创建相应的计算法 则,则需要利用MATLAB的M语言进行面向对 象的编程,通过运算符重载(4种重载方式之 一)来完成相应运算定义。
说明: •参与逻辑运算的操作数不一定必须是逻辑类型的变量 或常数(如非0数等),也可以使用其他类型的数据 进行逻辑运算,但是运算的结果一定是逻辑类型的数 据。 •所谓具有短路作用是指,在进行&&或||运算时,若 参与运算的变量有多个,例如a&&b&&c&&d,若a, b,c,d四个变量中a为假,则后面的三个都不再被处 理,运算结束,并返回运算结果逻辑假。
•若使用“,”作为不同字符串之间的间隔,则 相当于扩展字符串成为更长的字符串向量。 •若使用“;”作为不同字符串之间的间隔,则 相当于扩展字符串成为二维或者多维的数组, 这时,不同行上的字符串必须具有同样的长度。
拼接字符串还可以使用一些函数完成,在后 面介绍。
在MATLAB中使用了Unicode作为字符集,所 以每一个字符占用两个字节的存储空间。字符 串和一般的数值之间也可以进行相应的转换。 在下面的例子中,将使用字符向数值转换的方 法察看相应字符的Unicode数值。
将逻辑类型的数据应用于索引就构成了逻辑索 引,利用逻辑索引,可以方便地从矩阵或者数组 中找到某些符合条件的元素。
nan(Not-a-Number)
inf(无穷大)
3.3.4
运算符的优先级
1、括号()
2、数组转置、数组幂,Biblioteka Baidu转置、矩阵幂
3、一元加(正)、一元减(负)、逻辑非
4、数组乘、数组除、矩阵乘、矩阵左除、右除
整数数据类型运算函数的操作数一般为无符号的整数
3.2.4 空数组
所谓空数组,就是指那些某一个维的长度 为0的数组。它是为了完成某些MATLAB操作和 运算而专门设计的一种数组。 下面通过具体的例子来说明空数组的创建 和使用的过程。在动态编程时,需要用到!!! 例:创建空数组
空数组并不意味着什么都没有,使用whos命令 可以看到空数组类型的变量在MATLAB的工作 空间中确实存在,在数组编辑器中也可以对空 数组进行编辑,填充数组的元素。
3.1
概述
MATLAB支持的基本数据类型见下图:
MATLAB数据类型
基本数值类型
字符串
元胞数组
结构
函数句柄
Java对象
逻辑类型
用户自定义类 双精度类型 单精度类型 整数类型
内嵌对象
int8,unit8 int16,unit16 int32,unit32 int64,unit64
获取MATLAB数据类型列表可以在命令行窗口中键 入 help datatypes 命令。
水平组合字符串,构成更长的字符 向量 垂直组合字符串。构成字符串矩阵 比较字符串,判断字符串是否一致
strcmpi strncmpi findstr
strfind strjust strrep strmatch upper lower
比较字符串,比较时忽略字符的大小写 比较字符串前n个字符,比较时忽略字符 的大小写 在较长的字符串中找寻较短的字符串出现 的索引(索引即位置)
上图所列出的是基本数据类型,用户自定义的数据类 型是图示的各种数据类型的组合。其中unit8常用在图象 中。
3.2
MATLAB基本数值类型
MATLAB的基本数值类型变量或者对象主要用来 描述基本的数值对象,例如双精度数据或者整数类型 的数据。在MATLAB中还存在一类数据--常量数据, 常量数据是指在使用MATLAB过程中由MATLAB提供 的公共数据,这些数据可以通过数据类型转换的方法 转换常量到不同的数据类型,还可以被赋予新的数值 (pi等)。在MATLAB中还有一种数据叫作空数组或 空矩阵,在创建数组或者矩阵时,可以使用空数组或 空矩阵辅助创建数组或者矩阵。
8 N/A 4 1 8位 2 4 8 1 2 4 8 0~255 0~65535 0~4294967295 0~18446744073709551615 -128~127 -32768~32767 -2147483648~2147483647 -9223372036854775808~ 9223372036854775807
%c
%d %e %f %s
显示内容为单一的字符
有符号的整数 科学计数法,使用小写的e 浮点数据 字符串
<
小于
>=
大于等于
参与关系运算的操作数可以使用各种数据类 型的变量或常数,运算的结果是逻辑类型的数 据。标量也可以和矩阵或者数组进行比较,比 较的时候将自动扩展标量,返回的结果是和数 组同维的逻辑类型数组。如果比较的是两个数 组,则数组必须是同维的,且每一维上的尺寸 也必须一致。
例:复杂的关系运算
在第一个字符串中查寻第二个字符串出现 的索引 对齐排列字符串 替换字符串中的子串 查找匹配字符串 将字符串的字符都转变成大写字符(编码 A-32) 将字符串的字符都转变成小写字符(A+32)
3.4.4 字符串转换函数
在MATLAB中允许不同类型的数据和字符串 类型的数据之间进行转换。这种转换需要使用 不同的函数完成。另外,同样的数据,特别是 整数数据有很多种表示的格式,例如十进制、 二进制或者十六进制。在C语言中,printf函数 通过相应的格式字符串(以%开始)就可以输 出不同格式的数据。而在MATLAB中,则直接 提供了相应的函数完成数制的转换。
表3-2 函数 bitand bitcmp bitor bitmax bitxor bitset bitget bitshift
整数类型数据的运算函数 说明 数据位“与”运算 按照指定的数据位数求数据的补码 数据位“或”运算 最大的浮点整数数值 数据位“异或”操作 将指定的数据位设置为1 获取指定的数据位数值 数据位移操作
第三章 数据类型
MATLAB基本数值类型 逻辑类型 字符串 元胞数组(略) 结构(略)
在第二章讨论了有关矩阵和数组的创建和操作, 在那里所有的数据都使用了MATLAB默认的数据类 型,即双精度类型。和大多数的高级编程语言类似, MATLAB也提供了各种不同的数据类型用来操作不 同的数据。在本章中将详细讨论在MATLAB中常用 的几种数据类型,以及在MATLAB中常用的一些数 值常量,同时还要讨论操作这些数据类型的函数的用 法。
3.3.2 逻辑运算
表3-5 MATLAB的逻辑运算
运算符 && || & | ~ xor any all
说明 具有短路作用的逻辑与,仅能处理标量 具有短路作用的逻辑或,仅能处理标量 元素与操作 元素或操作 逻辑非操作 逻辑异或操作 当向量中的元素有非零元素时,返回真 当向量中的元素都是非零元素时,返回真
表3-8中常用的是num2str 和str2num,在GUI编程 中大量用到(如在一个对话框中输入密码)。
3.4.5
格式化输入输出
和C语言一致,MATLAB也能够进行格式化的输入、 输出,这是一种高级编程语言所必备的一种能力。 MATLAB继承了标准C中用于printf函数的格式化字符。
字符 说明
若需要在字符串内容中包含单引号,则需要在键入字 符串内容时,连续键入两个单引号即可。
3.4.2 基本字符串操作
例:字符串元素索引
字符串实际上也是一种MATLAB的向量或者 数组,所以一般利用索引操作数组的方法都可以 用来操作字符串。
字符串还利用“[ ]”运算符进行拼接,不过拼 接字符串时需要注意以下两点:
和一般的数值类型类似,逻辑类型的数据只能通 过数值类型转换,或者使用特殊的函数生成相应类 型数组或者矩阵。 表3-4
函数
创建逻辑类型数据的函数
说明 将任意类型的数组转变成逻辑类型数组,其 中非零元素为真,零元素为假。
logical(10)
ture(m,n) 产生逻辑真值数组
false(m,n)
产生逻辑假值数组
3.2.1
数据类型
基本数值类型入门
说明 字节数 取值范围
double sparse single uint8 uint16 uint32 uint64 int8 int16 int32 int64
双精度 稀疏矩阵 单精度整数 无符号8位整数 无符号16位整数 无符号32位整数 无符号64位整数 有符号8位整数 有符号16位整数 有符号32位整数 有符号64位整数
表3-8
函数 num2str int2str mat2str str2double str2num sprintf sscanf
数字和字符之间的转换函数
说明 将数字转变成字符串 将整数转变成字符串 将矩阵转变成可被eval函数使用的字符串 将字符串转变为双精度类型的数据 将字符串转变为数字 格式化输出数据到命令行窗口 读取格式化字符串
MATLAB中有部分函数和这些数据类型有 关,其中最常用的一个函数是class函数,该函 数可以用来获取变量或对象的类型,也可以用 来创建用户自定义类型,在本章中,主要利用 其获取变量或者对象的功能。
注意:MATLAB和C语言在处理数据类型和变 量时不同,在C语言中,任何变量在使用之前都 必须声明,然后赋值,在声明变量时就指定了 变量的数据类型。但是在MATLAB中,任何数 据变量都不需要预先的声明,MATLAB将自动 地将数据类型设置为双精度类型,若需使用其 他类型的数据,则必须通过数据类型的转换完 成。MATLAB的数据类型名称同样就是数据类 型转换的函数,利用这些函数来完成相应的数 据类型转换的工作。
5、加法、减法
6、冒号运算符
7、小于、小于等于、大于、大于等于、等于、不等于
8、元素与
9、元素或
7.6日上午(续)
3.4 字符串(字符串数组、字符数组) 创建字符串时需要使用单引号将字符串的内 容括起来,字符串一般以行向量的形式存在, 并且每一个字符占用两个字节的内存。 3.4.1 字符串入门 例:字符串的创建
3.4.3
字符串操作函数
说明 创建字符串,将数值转变成字符串 将字符串转变成Unicode数值 创建空白的字符串(由空格组成) 将字符串尾部的空格删除 判断变量是否字符类型
函数 char double Blanks(n) deblank ischar (isnumeric等) strcat strvcat Strcmp(s1,s2)
例:
函数all和any使用示例。
注:函数all和any针对矩阵中的每一列进行处理。 3.3.3 关系运算
关系运算是用来判断两个操作数关系的运算, MATLAB中的关系运算和C语言的关系运算基本一致, 主要有六种。 表3-6 运算符 == ~= MATLAB中的关系运算符 说明 等于 不等于 运算符 > <= 说明 大于 小于等于
表3-9
不同数值之间的转换函数
函数 hex2num hex2dec dec2hex bin2dec dec2bin
说明 将16进制整数字符串转变成双精度数据 将16进制整数字符串转变成10进制整数 将10进制整数转变成16进制整数字符串 将2进制整数字符串转变成10进制整数 将10进制整数转变成2进制整数字符串
7.6上午
1.randn(10);mean求平均值 2.int16(a)+int16(b) %%%7.0已重载“+”运 算符号
3.2.2 整数类型数据运算 MATLAB运算的基本数据类型为双精度数 据类型,MATLAB还另外提供了一些函数可以 整数类型数据的运算,在表3-2中总结了这些 函数。