MATLAB数据类型
MATLAB基本数值类型有整型与浮点型,此外,还有字符型、逻辑型、函数句柄、Java对象等类型,与数组有关的类型有结构体和细胞数组。
1. 整型
整型从字节数、有无符号两个方面可以分为int8、uint8、int16、uint16、int32、uint32、int64、uint64。整型数之间的运算是封闭的,整型数相除,结果四舍五入为新的整型数。不同细分类型的整型数之间不能直接运算。
2. 浮点型
浮点数包括单精度浮点数(single)与双精度浮点数(double)。realmax(‘double’)和realmax(‘single’)分别返回两者能表示的最大值。
3. 字符型
字符在MATLAB中用一对单引号分隔,字符串存储为字符数组。如s=‘I Love MATLAB’,s即为1行13列的字符向量。多个字符串可以形成矩阵,但每个字符串长度必须相等,否则系统将会报错。解决方法是认为加入空格,使矩阵的各行对齐,如a=[‘MATLAB’;’C++ ‘],也可以使用char函数:a=char(‘MATLAB’, ‘C++’)。
字符串常用函数:
1)strfind(s1, s2):在s1中寻找s2,返回s2第一个字符所在的位置索引;
2)strcat(s1, s2,……,sn):连接各字符串;
3)strcmp(s1, s2):按字典顺序比较两个字符串;
4)strncmp(s1, s2, n):比较字符串中的前n个字符;
5)strrep(s1, s2, s3):s1中的s2部分用s3替换。
4. 逻辑型
逻辑型变量只能取true(1)或false(0),在访问矩阵元素时可以使用逻辑型变量,取出符合某种条件的元素。
5. 函数句柄
函数句柄可以方便函数名称的管理,也可以加快程序运行的速度。注:使用函数句柄为什么可以提高运行速度?提示:无需重新搜索一遍路径。
函数句柄中包含函数的路径、函数名、类型及可能存在的重载方法等信息,可以用functions(function_handle)来显示函数句柄所包含的函数信息。
句柄的声明可以用如下方法:
1)变量名=@函数名;
2)变量名=str2func(‘函数名’);
3)声明匿名函数句柄:变量名=@(输入参数列表)函数表达式。
这里使用的函数可以是预定义函数,也可以是用户自定义的函数。声明函数句柄以后,就可以像使用函数名一样使用该函数句柄了,如声明h=@sin,就可以使用h(pi)代替sin(pi)。
函数句柄中的函数可以是自定义函数。举个栗子:
匿名句柄的栗子:
6. Java对象
Java对象用在MATLAB中使用Java语言。查看当前Java虚拟机(JVM)版本:
7. 结构体与细胞数组
普通的矩阵只能包含同一种数据类型的数据,且矩阵的行、列必须对齐。结构体包含若干字段,字段的值可以是任意数据类型和任意维度的变量,也可以是另一个结构数组。细胞数组的元素也可以是任意数据类型和任意维度的数据。与矩阵不同,细胞数组引用元素时使用“{}”操作符,此时得到的数据的类型是元素本身的类型,而使用“[]”操作符引用元素时,得到的是一个小一些的细胞数组。细胞数组的内存空间是动态分配的,因此更加灵活,但运行效率欠佳。
创建细胞数组:
创建结构体: