本文是参考书籍《MATLAB R2020a完全自学一本通 》自己整理的一些笔记,希望会给大家带来一些帮助。
目录
1、数据类型
1.1、数值类型
整型
浮点数类型
复数
无穷量(Inf)和非数值量(NaN)
1.2 、逻辑类型
1.3、字符与字符串
1.4、数组类型
1.5、单元数组类型
创建
单元数组的寻访
单元数组的操作
1.6、结构体类型
1.7map容器类型
1、数据类型
MATLAB中的数据类型主要包括数值类型、逻辑类型、字符串、函数句柄、结构体和单元数组类型。
1.1、数值类型
基本的数值类型包括整型、单精度浮点数、双精度浮点数
MATLAB整型类型
整型类型 | 数值范围 | 转换函数 |
有符号8位整数 | | int8 |
无符号8位整数 | | uint8 |
有符号16位整数 | | int16 |
无符号16位u | | uint16 |
有符号32位整数 | | int32 |
无符号32位整数 | | uint32 |
有符号64位整数 | | int64 |
无符号64位整数 | | uint64 |
MATLAB中的取整函数
函数 | 运算法则 | 示例 |
floor(x) | 向下取整 | floor(1.3)= 1 floor(-2.6)= -3 |
ceil(x) | 向上取整 | ceil(1.3) = 2 |
round(x) | 取最接近的整数 如果是0.5,向绝对值最大的方向取整 | round(1.3) = 1 round(1.5) = 2 round(-1.5) = -2 |
fix(x) | 向0取整 | fix(1.5) = 1 fix(-1.5) = -1 |
MATLAB中提供了单精度浮点数类型和双精度浮点数类型,其存储位宽、能够表示的数值范围、数值 精度各方面均不相同,单精度浮点数转换函数为single,双精度浮点数转换函数double。
注意双精度浮点数在参与运算时:
(1)当参与运算的其他数据为逻辑类型、字符类型时,返回结果为双精度浮点数类型;
(2)当参与运算的其他数据为整数类型时,返回结果为相应的整数类型;
(3)当参与运算的其他数据为单精度浮点数类型时,返回结果为相应的单精度浮点数类型。
在MATLAB中,单精度浮点数类型不能与整数类型进行算术运算。
关于复数的相关函数
函数 | 说明 | 函数 | 说明 |
complex(a,b) | 以a为实部b为虚部创建复数 | abs(z) | 返回复数z的模 |
real(z) | 返回复数z的实部 | conj(z) | 返回复数z的共轭复数 |
imag (z) | 返回复数z的虚部 | angle(z) | 返回复数z的幅角 |
Inf
和
-Inf分别代表正无穷量和负无穷量,正负无穷量的产生一般是由于运算溢出,产生了超出双精度浮点数数值范围的结果;
NaN表示非数值量。非数值量则是由于0/0或
Inf/Inf
类型的非正常运算而产生的,这两个NaN彼此是不相等的。
除了异常运算结果,MATLAB
还提供了特定函数
Inf
和
NaN
来创建指定数值类型的无穷量和非数值量, 生成结果默认为双精度浮点数类型。还有一种特殊的指数类型的数据叫作非数,通常表示运算得到的数值 结果超出了运算范围。非数的实部用NaN
表示,虚部用
InF表示。
1.2 、逻辑类型
MATLAB把任何非零数值当作真,把零当作假。所有关系和逻辑表达式的输出:对于真,输出为1
;对于假,输出为
0。
关系操作符
关系操作符 | 说明 | 关系操作符 | 说明 |
< | 小于 | <= | 小于等于 |
> | 大于 | >= | 大于等于 |
== | 等于 | ~= | 不等于 |
除此之外MATLAB还提供逻辑关系:
(1)
xor(x,y)
指令的功能为异或运算,
x
和
y
同为零(假)或非零(真)时返回
0
,否则返回
1。
(2)any(x)
指令的功能为判断是否为零向量或零矩阵(向量或矩阵中的元素全部为零),如果是 非零 向量或非零矩阵,则返回1
,否则返回
0。
1.3、字符与字符串
字符串一般是ASCII
值的数值数组,它作为字符串表达式进行显示。其中字符串中的单引号是由两个连续的单引号来表示的。
1.4、数组类型
数组的元素可以是任意数据类型,例如可以是数值、字符串、指针等。
创建数组
注意:MATLAB数组的索引从1开始
在MATLAB中可以使用冒号“:”来代表一系列数值,有时也使用它来定义数组(步长为1)
i:j:k 为创建从i开始、步长为j、到k结束的数字序列。
函数linspace(a,b,n)在区间[a,b]上创建一个有nn个元素的n个数把整个区间线性分隔。
当数组的元素个数为0时,就称数组为空。空数组是特殊的数组,它不含有任何元素。空数组主要用于 逻辑运算、数组声明、数组的清空等。
1.5、单元数组类型
单元(Cell)数组是一种无所不包的广义矩阵。组成单元数组的每一个元素称为一个单元。每一个单元 可以包括一个任意数组,如数值数组、字符串数组、结构体数组或另外一个单元数组,因而每一个单元可以具有不同的尺寸和内存占用空间。其目的在于可以把不同类型的数据归并到一个数组中。
单元数组的创建区别于一般数组其用{}创建:
可用cell函数创建一个空的单元数组:
在单元数组中,单元和单元中的内容是两个不同范畴的东西,因此,寻访单元和单元中的内容是两种 不同的操作。MATLAB为上述两种操作设计了相对应的操作对象:单元外标识(
Cell Indexing
)和单元内编址(Content Addressing)。
对于单元数组a,a
(m,n)
指的是单元数组中第
m
行第
n
列的单元,而a
{m,n}
指的是单元数组中第
m
行第n 列单元中的内容。
单元数组的合并可通过赋值的方式合并;
单元数组的删除可通过向要删除的部分赋空值;
reshape(a,m,n)可改变单元数组的形状。
1.6、结构体类型
MATLAB中的结构体与
C语言中的结构体类似,一个结构体可以通过字段存储多个不同类型的数据。 因此,结构体相当于一个数据容器,把多个相关联的不同类型的数据封装在一个结构体对象中。
两种创建结构体的方法分别是利用struct函数创建结构体和通过字段赋值创建结构体如下例:
1.7map容器类型
map的本意是映射,就是可以将一个量映射到另一个量。比如将一个字符串映射为一个数值,则该字符 串就是map
的键(key),数值就是
map
的数据(value)。
一个键可以是以下任何一种数据类型:
● 1×N字符串。
● 单精度或双精度实数标量。
● 有符号或无符号标量整数。
(1)创建map对象
(2)查看map对象
(3)根据键获取map对象
(4)从map对象中删除键值对
(5)添加keys/values对
(6)修改keys
如果需要在保持值不变的情况下对键名进行更改,则首先要删除键名和其对应的值,然后再添加一个 有正确键名的新条目。
(7)修改values
通过赋值操作,覆盖原有的值,即可对map对象中的值进 行修改。