MATLAB数据类型及转换
MATLAB的主要数据类型有:整型,浮点型,逻辑,字符,日期和时间,结构数组,细胞数组及函数句柄等,其中函数句柄是MATLAB所特有的一种数据类型。
一:整数型与浮点型
MATLAB提供了几种常用整数型数据和浮点型数据的定义函数,如表所示:
数据类型 | 函数 | 类别 | 存储空间 |
---|---|---|---|
整数型 | int8() | 有符号8位整型 | 1byte |
uint8() | 无符号8位整型 | 1byte | |
int16() | 有符号16位整型 | 2bytes | |
uint16() | 无符号16位整型 | 2bytes | |
int32() | 有符号32位整型 | 4bytes | |
uint32() | 无符号32位整型 | 4bytes | |
浮点型 | single() | 单精度 | 4bytes |
double() | 双精度 | 8bytes |
1.1 数据类型范围查询:
对于整型MATLAB提供了两个函数分别查看不同类别整型数据的最值:intmax(‘class’)与intmin(‘class’),而对于浮点型MATLAB也提供了两个函数realmax(‘class’)和realmin(‘class’)查看单/双精度的最值。
如上所示,查看到int8所能取的最大值为127,single所能取的最小值为1.1755e-38。
1.2 浮点型取整:
MATLAB针对不同的取整规则提供了不同的函数,具体如表所示:
函数 | 取整规则 |
---|---|
fix() | 朝零方向取整 |
floor() | 朝负无穷方向取整 |
ceil() | 朝正无穷方向取整 |
round() | 四舍五入到最近的整数 |
二:逻辑与字符
函数:logical()
逻辑值取0或者1,分别代表false和true。而用函数false()生成逻辑0的矩阵,函数true()生成逻辑1的矩阵。
函数:char()
Matlab中的输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个ASCII字符。
char函数会自动补空格,需用时用deblack()函数移除空格,即deblank(name(1,:))。
三:结构类型
结构是包含一组记录的数据类型,而记录则是存储在相应的字段中。结构的字段可以是任意一种MATLAB数据类型的变量或者对象。结构类型的变量也可以是一维的、二维的或多维的数组。结构数组也称为架构数组。不过,在访问结构类型数据的元素时,需要使用下标配合字段的形式。结构数组有两种创建方法,直接定义法和函数创建法。
3.1直接定义法
stu是一种结构,可以容纳更多的元素,也可以自由地向结构中加入元素。
3.2用struct函数创建结构数组
使用struct函数,可以根据指定的字段及其相应的值创建结构体数组。此函数的一般形式为: str_array=struct(‘field1’,{val1},‘field2’,{val2}…);
在元素较多时,使用struct()函数创建结构数组比直接定义法方便许多。
四:细胞数组
普通数组中的每个元素都必须具有相同的数据类型,而细胞则没有此要求,该结构可以把不同类型的数据纳入到一个变量中。细胞变量的表示方法类似于带有下标的数组,但这些下标不是用圆括号括起来,而是使用大括号。它也有两种创建方法,直接赋值法和利用函数创建。
4.1直接赋值
赋值时使用大括号,查询时使用小括号表示对应元素的大小及类型,使用大括号表示对应元素的内容,具体例子如下图所示:
4.2函数创建法
用cell函数预先分配存储空间,然后对细胞的每个元素逐个赋值。
celldisp():输出细胞变量的内容。
cellplot():用图形方式显示细胞变量的内容。
iscell():判别一个变量是否为细胞变量。
五:函数句柄
函数句柄的主要优点就是可以将函数句柄作为调用中的参量传递到另一个函数,它们还可以保存到数据结构或文件中,以备将来使用。
函数句柄有两种不同对类型,这两种类型都是用函数句柄符号@来创建。第一个函数句柄是命名函数句柄,即在运算符@的后面跟一个希望的函数名称。
第二个函数句柄是匿名函数句柄,它由代替函数名的MATLAB表达式形成。构建匿名函数句柄的通用格式是:
@(intput_argument-list) expression