本文章主要从MATLAB的基本数值类型,逻辑类型,函数句柄,结构类型和细胞数组类型来算
数值类型
数值类型包括浮点型,整数型和一些特殊数值
整数型
有符号整型可以表示正数和复数,数的最高位为符号位。
无符号整型只可以表示0和正数。
例: 强制类型转换
PS:对A进行了强制类型转换,其中转换为8位整有符号数时,产生了溢出
浮点型
具体所占空间和范围如下图所是
注意:最高位为符号位
例: 浮点型与整形转换
变量与常量
常量 | 说明 | 常量 | 说明 |
ans | 最近运算结果 | eps | 浮点数相对精度 |
NaN | 非数 | pi | 圆周率 |
i,j | 虚数单位 | Inf | 无穷大 |
默认常量表
PS:用-Inf和Inf表示负无穷大和正无穷大
非数是计算机科学中数值数据类型的一类值,表示未定义或不可表示的值。
字符与字符串
字符串常用函数
例1: 字符串基本操作
单引号用来创建字符串;[m,n]计算字符串大小;upper()变成全大写;lower()变成全小写
例2: 字符串连接
strcat()横向连接字符串;strvcat()纵向连接字符串
例3: 比较字符串
strcmp () 用来比较字符串(区分大小写)
strncmp () 用来比较两个字符串的前n个字符,区分大小写
strncmpi () 用来比较两个字符串的前n个字符,不区分大小写
例4: 进制间的转换
bin2dec()二进制转十进制;dec2bin()十进制转二进制;
hex2dec()十六进制转十进制;dec2hex()十进制转十六进制;
base2dec()任意进制转化为10进制
例5: 字符串的查找和替换
s=‘i have a apple do you want to eat it’
findstr()在长字符串中查找短字符串,返回短字符串在长字符串中首字符的位置;如果没有查找到则返回空矩阵
strfind()在前一个字符串中查找后一个字符串, 返回后一个字符串在前一个字符串中首字符的位置,如果没有查找到则返回空矩阵。
strrep()将s字符串中的apple用banana替换
逻辑类型
MATLAB用“1”和“0”分别代表“逻辑真”和“逻辑假”,逻辑类型数值只能通过数值类型转换或者使用特殊的函数生成逻辑数组或矩阵
例:任意类型矩阵转换为逻辑矩阵
logical()将矩阵A转换为逻辑矩阵B
true()生成各个元素都为逻辑真的逻辑矩阵;false()生成各个元素都为逻辑非的逻辑矩阵
函数句柄
函数句柄也是MATLAB中的一种常见的数据类型,它的地位类似于其它计算机语言里的函数对象(Javascript,Python),函数指针(C++)
函数句柄操作函数
创建函数句柄需要使用到操作符 @ ,使用函数句柄可以实现对函数的间接调用
结构类型
MATLAB中的结构类型与 C 语言类似,一个结构可以通过字段存储多个不同类型的数据
函数 | 说明 |
deal | 把输入处理成输出 |
fieldnames | 获取结构的字段名 |
getfield | 获取结构中指定字段的值 |
rmfield | 删除结构的字段(不是字段内容) |
setfield | 设置结构数组中指定的字段的值 |
struct | 创建结构数组 |
struct2cell | 结构数组转化成元胞数组 |
isfield | 判断是否存在该字段 |
isstruct | 判断某变量是否是结构类型 |
结构数组的操作函数
细胞数组类型
细胞数组常见于MATLAB神经网络原理中,是不同于普通矩阵的一种特殊矩阵;普通矩阵的数据类型,维度须一致,细胞数组的元素可以是任意的数据类型、任意的维度
细胞数组类型的建立
①用赋值语句直接定义
>> student{1,1}={'Zhangsan','Lisi'};
>> student{1,2}={'001','002'};
>> student{2,1}={'f','m'};
>> student{2,2}={20,19};
输入
student
输出
student =
{1x2 cell} {1x2 cell}
{1x2 cell} {1x2 cell}
cellplot(student)
②用cell函数预先分配存储空间,然后对细胞的每个元素逐个赋值
输入
stu=cell(2)
输出
stu =
[] []
[] []
输入
>> stu{1,1}={'Zhangsan','Lisi'};
>> stu{1,2}={'001','002'};
>> stu{2,1}={'f','m'};
>> stu{2,2}={20,19};
>> stu
输出
stu =
{1x2 cell} {1x2 cell}
{1x2 cell} {1x2 cell}
①函数cellplot()画出细胞数组结构图
②利用函数cell()建立细胞数组,建立一个空数组,用户还需要给细胞数组赋值,再用函数cellplot()画出细胞数组结构图
通过细胞数组结构图可以看出两种方法建立细胞数组得到的结构相同
细胞数组类型的操作
细胞数组相关函数
例: 用以上函数对细胞数组操作
建立一个细胞数组
输入
>> stu_cell={'Muzi','001','m','20'};
>> celldisp(stu_cell)
输出
stu_cell{1} = Muzi
stu_cell{2} = 001
stu_cell{3} = m
stu_cell{4} = 20
cell2struct()
输入
>> fields={'name','number','sex','age'};
>> stu_struct=cell2struct(stu_cell,fields,2);
>> stu_struct
输出
stu_struct =
name: 'Muzi'
number: '001'
sex: 'm'
age: '20'
iscell()
输入
a=iscell(stu_cell)
输出
a=
1
cell2mat()
输入
>> b= {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]};
>> m= cell2mat(b)
输出
m =
1 2 3 4
5 6 7 8
9 10 11 12
mat2cell()
输入
>> c=[1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20];
>> C1= mat2cell(c, [2 2], [3 2])
输出
C1 =
[2x3 double] [2x2 double]
[2x3 double] [2x2 double]
num2cell()
输入
>> C2=num2cell(c)
输出
C2 =
[ 1] [ 2] [ 3] [ 4] [ 5]
[ 6] [ 7] [ 8] [ 9] [10]
[11] [12] [13] [14] [15]
[16] [17] [18] [19] [20]
补充
浮点数的取整函数
函数 | 说明 |
round(x) | 结果等于离浮点数x最近的整数,小数部分四舍五入 |
fix(x) | 结果等于舍去浮点数x,小数部分取整 |
floor(x) | 结果等于小于浮点数x,且离x最近的整数 |
ceil(x) | 结果等于大于浮点数x,且离x最近的整数 |