M A T L A B MATLAB MATLAB中共有 6 6 6种基本数据类型:数值类型、逻辑类型、字符串、函数句柄、结构体和单元数组类型。
(1)由于默认数值为双精度,所以想创建单精度浮点类型需要经过转换函数
(2)在MATLAB中,单精度类型不可与整数类型进行算术运算
(3)双精度浮点数参与运算所得返回值取决于参与运算的其他数据类型
若参与运算的其他数据类型为逻辑型、字符型时,返回结果为双精度;
若参与运算的其他数据类型为整数型时,返回结果为相应的整数型;
若参与运算的其他数据类型为单精度浮点型时,返回结果为响应的单精度;
(4)eps()函数,直接得知浮点数的精度(与相邻浮点数之间的间隙)
(1)复数以字符i或j作为虚部标志,不支持以整数作为实部
(2)创建复数可以按格式输入也可借助complex()函数
浮点数转整数
(1)浮点数将转化为与其最接近的整数
(2)若小数部分为0.5,则转化为两个整数中绝对值较大的那个
不同整数类型相互转化,采取措施不同于溢出
(1)若大于该类型可表示最大值,运算结果就是最大值
(2)若小于该类型可表示最小值,运算结果就是最小值
向0取整,就是直接丢弃小数部分,只保留整数部分
输入:非零为真,零为假
输出:1为真,0为假
(1)MATLAB中可以使用关系操作符比较两个元素个数相等的数组,若大小不同将会报错
输出结果是一个元素个数相同、元素类型为逻辑类型的数组,每个位置对应每一处的比较情况
(2)使用关系操作符比较数组和标量
将该标量与数组中的每个元素进行比较,所得结果是一个元素个数与数组等同、元素类型为逻辑类型的数组,每个位置对应每一处的比较情况
一个字符串是存储在一个行向量中的文本,这个行向量中的每一个元素代表一个字符,每个元素中存放的是字符的 A S C I I ASCII ASCII码
一个 A S C I I ASCII ASCII字符只需要 1 1 1个字节,但在 M A T L A B MATLAB MATLAB中为其分配了与其他变量一样的 8 8 8个字节
这样做虽然浪费了存储空间,但可以简化MATLAB内部数据结构,比如说一个汉字字符与一个ASCII字符所占用空间大小相同
(1)下标索引
由于字符串是以向量的形式进行存储,因此可以通过它的下标对字符串中的任何一个元素进行访问,字符矩阵也可以通过下标索引进行访问,不过要求矩阵每一行的字符数必须相同
(2)切片
格式为:
数组名(起始索引:步长:终止索引)
单引号可以通过两个单引号实现
字符串连接可以直接将字符串数组连接,使其连接为一个更长的行向量
在 M A T L A B MATLAB MATLAB中,对函数的的调用方法可以分为直接调用和间接调用
(1)直接调用函数
被调用的函数通常被称为子函数,但是子函数只能被与其M文件同名的主函数或在M文件中的其他函数调用,同时在一个文件中只能有一个主函数
(2)间接调用函数
使用函数句柄可以间接调用函数。对MATLAB库函数中提供的提供的各种M文件中的函数和使用者自主编写的内部函数,都可以创建函数句柄,再通
过函数句柄对这些函数实现间接调用
(1)创建函数句柄
(2)调用函数句柄
M A T L A B MATLAB MATLAB中结构体与 C C C语言中的结构体类似,一个结构体可以通过字段存储多个不同类型的数据
结构体相当于一个数据容器,把多个相关联的不同类型的数据封装在一个结构体对象中
(1)赋值方式
赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,相当于对一个结构体进行多个字段的赋值
(2)类型注意
虽然此时显示内部子段为字符类型,但是单独拎出来,依然是原来的类型
(1)赋值方式
其中字段名与参数必须成对出现
同一个结构体数组中所有结构体对象具有相同的字段组合;
需要注意的是,在创建结构体后,未明确赋值的字段默认赋值为空数组;
(1)字段赋值创建结构体数组
(2)struct创建结构体数组(两种方式)
在 M A T L A B MATLAB MATLAB中进行运算的所有数据类型都是按照数组及矩阵的形式进行存储和运算的,但两者在 M A T L A B MATLAB MATLAB中基本运算性质不同,阵列强调元素对元素的运算,而矩阵采用线性代数的运算方式
在 M A T L A B MATLAB MATLAB中,数组的定义是广义的,数组元素可以为任意的数据类型
句法格式如下:
Array = i : k
Array = i : j : k
创建从 i 开始,到 k 结束,步长为 k ,默认步长为1的数字序列
若 i > k,则返回一个空矩阵
i 与 k 不必是整数,该序列最后一个数小于等于 k(matlab中默认使用double类型)
句法格式如下:
Array = linspace(a,b,n)
n默认为100
在区间[a,b]上创建一个有n个元素的向量,n个元素把整个区间线性分隔
Array = logspace(a,b,n)
n默认为50
形成总数为n的等比数列,第一个数为 1 0 a 10^a 10a,最后一个数为 1 0 b 10^b 10b
空数组不含任何元素,主要用于逻辑运算、数组声明、数组的清空等
加、减、乘、左除、右除、乘方
数组间乘除要求维数相同
右除(./)为一般意义的除法,与左除关系如下:
A./B=B.\A
单元( C e l l Cell Cell)数组一种广义矩阵,组成单元数组的每一个元素称为一个单元
每个单元可以包括一个任意数组,如数值数组、字符串数组、结构体数组、或另外一个单元数组,
因而每一个单元可以具有不同的尺寸和内存占用空间
和一般的数值数组一样,单元数组的维数不受限制,可以是一维、二维或多维
MATLAB中使用单元数组的目的在于它可以把不同类型的数据归并到一个数组中
与一般数组不同的是,在单元数组中:
使用花括号“{}”来创建;
使用逗号“,”或空格来分隔每一个单元;
使用分号“;”来分行
注意每一行的单元个数要相等
与上方比较,可以看到同样是4个单元,但内存大小却不同
与一般的数值数组一样,单元数组的内存空间也是动态分配的,
因此使用cell函数创建空单元数组的主要目的是为该单元数组预先分配连续的存储空间,以节约内存占用,提高执行效率
寻访单元和单元中的内容是两个不同的操作
MATLAB为两种操作设计了相对应的操作对象:单元外标识(Cell Indexing)、单元内编址(Content Addressing)
C(m,n):圆括号 单元数组中第m行第n列的单元
C{m,n}:花括号 单元数组中第m行第n列单元中的内容
(1)合并
无所不包,单元任意
(2)指定单元删除
将空矩阵赋值给该单元即可
(3)使用reshape()函数改变单元数组的形状
由下图可以看出是根据列进行转换,一列一列进行转换
m a p map map容器是一种快速查找数据结构的键
对一个map元素进行寻访的索引称为“键”,一个“键”可以是以下任何一种数据类型:
(1)1×N字符串
(2)单精度或双精度实数标量
(3)有符号或无符号标量整数
而数据则可以是任何类型,包括数值类型、字符或字符串类型、结构体类型、单元类型或其他map
一个map是 M A T L A B MATLAB MATLAB类的一个对象,map类所有对象具有3种属性,用户不可以直接对这些属性进行修改,但可以通过作用于map类的函数进行修改
属性的查看方法是:map名+小数点“.”+map的属性名
例如:mapW.Count
map是一个map类中的对象,由 M A T L A B MATLAB MATLAB中名为“容器”的一个包来定义,可以通过构造函数来创建
创建语法如下:
mapObj = containers.Map({key1,key2,...},{val1,val2,...})
(1)查看所有的值
(2)读取map对象
(3)访问多个值
(1)删除键值对
根据键名删除对应的键值对
(2)添加键值对
要求添加的键值对和map中其余的键值对的类型要一致
(3)修改键值对
仅修改key做不到,只能删除再添加
仅修改value可以通过覆盖实现修改