MATLAB中的基础数据类型主要包括数值类型、字符串、结构、单元数组和函数句柄等数据类型。本文主要介绍这些基础数据类型及其相关的基础操作。
一、数值类型
数值类型按数值在计算机中存储与表达的基本方式进行分类,主要有整数、单精度浮点数和双精度浮点数三类,如表所示。在默认情况下,MATLAB对所有数值按照双精度浮点数类型进行存储和操作。
数据格式 | 示例 | 说明 |
Int8,uint8 Int16,uint16 Int32,uint32 Int64,uint64 | 输入: Int16(2^15) 得到:: ans=32767 | 分别表示有符号和无符号的整数类型:相同数值的整数类型占用的内存更少 |
single | single(0.1) | 单精度浮点类型 |
double | 6.732、1.562-0.425i | 双精度浮点型,默认数据类型 |
相对于双精度浮点数类型数据,整数型与单精度浮点型数据的优点在于节省变量占用的内存空间:要在满足精度要求的情况下,可以考虑优先采用。需要时,可以指定系统按照整数型或单精度浮点型对指定的数字或数组进行存储、运算等操作。
1. 整数类型
MATLAB中提供了4种有符号和4种无符号整数类型;有符号整数类型可表示正整数、负整数和零,而无符号整数类型仅能表示正整数和零。这8种类型的存储占用位数、能表示的数值范围和转换函数均不同,在此不作赘述。
由于MATLAB中数值默认存储类型是双精度浮点型,因此将变量设置成整数类型时,需眼使用转变函数。如下表:
函数 | 运算法则 | 示例 |
floor | 向下取整 | floor(1.4)=1 floor(3.5)=3 floor(-2.3)=-3 |
Ceil | 向上取整 | ceil(1.4)=2 ceil(3.5)=4 ceil(-2.3)=-2 |
round | 取最接近的整数;如果小数部分是0.5,则向绝对值大的方向取整 | round(1.4)=1 round(3.5)=4 round(-2.3)=-2 |
Fix | 向0取整 | fix(1.4)=1 fix(3.5)=3 fix(-2.3)=-2 |
2. 浮点数类型
MATLAB中提供了单精度浮点整数类型和双精度浮点类型,其存储位宽、能够表示的数值范围、数值精度各方面均不同,见下表
类型 | 位宽 | 数位意义 | 数值范围 | 转换函数 |
单精度 | 32 | 31位表示符号(0正1负) 30~23位表示指数部分 22~0位表示小数部分 | -3.40282e+038~-1.17549e-038 | Single |
双精度 | 64 | 63位表示符号(0正1负) 62~52位表示指数部分 51~0位表示小数部分 | -1.79769e+038~-2.22507e-038 与 2.22507e-038~1.79769e+038 | double |
MATLAB中的默认数值类型为双精度浮点类型,但可以通过转换函数来创建单精度浮点类型。
3. 复数
复数由实部和虚部两部分构成。在MATLAB中,字符i或j默认作为虚部标志。创建复数时,可以直接按照复数形式进行输入或利用complex函数。
关于复数的函数如下表:
函数 | 说明 | 函数 | 说明 |
complex(a,b) | 构造以a为实部,b为虚部的复数 | i,j | |
real(z) | 返回复数z的实部 | imag(z) | 返回复数z的虚部 |
abs(z) | 返回复数z的模 | angle(z) | 返回复数z的福角 |
conj(z) | 返回复数z的共轭复数 |
例:复数基本操作实例。
输入:
输出:
1. 无穷量(Inf)和非数值量(NaN)
MATLAB中使用Inf和-Inf分别代表正无穷量和负无穷量,NaN表示非数值量。正负无 穷量的产生一般由 于运算溢出产生,非数值量则是由于类似0/0或Inf/Inf类型的非正常运算
MATLAB提供Inf 函数和NaN函数来创建指定数值类型的无穷量和非数值量,生成结果默认为双精度浮点类型中还有一种特殊的指数类型的数据叫做非数,通常表示运算得到的数值结果超出了运算范围。非数的实部用NaN表示,虚部用InF表示。
例:无穷量及非数值量的产生和性质。
输入:
输出结果如下:
一、字符与字符串
MATLAB将文本作为特征字符串或简单地当作字符串。这些字符串能够显示在屏幕上, 也可以用来构成一些命令。字符串是存储在行向量中的文本,这行向量中的每一个元素代表
实际上,元素中存放的是字符的内部代码,即ASCII码。但在屏幕上显示字符变量的值时,显示出来的是文本,而不是ASCII编码:这是因为在显示前已经对ASCII编码进行了输
字符串一般是ASCII值的数值数组,它作为字符串表达式进行显示。字符串可以通过其 下标对其中的任一元素进行访问, 也可以通过矩阵下标索引进行访问,但是矩阵的每行字符数必须相同。
例:字符串属性示例。
输入:
输出:
二、函数句柄
在MATLAB中,可以实现对函数的间接调用;这归功于函数句柄提供了一种间接调用函数的方法。
创建函数句柄需要使用到操作符@,对MATLAB库函数中提供的各种M文件中的函数和使用者自主编写的程序中的内部函数,也都可以创建函数句柄,进而可以通过函数句柄来实现对这些函数的间接调用。
创建函数句柄的一般句法格式为:
Function_Handle=@Function_Filename;
其中,
Function_Filename是函数所对应的M文件的名称或MATLAB内部函数的名称;
@是句柄创建操作符;
Function_Handle变量保存了这一句柄,并在后续的运算中作为数据流进行传递。
例:函数句柄的创建与调用。
输入:
输出:
MATLAB库函数提供了大量处理函数句柄的操作函数,将函数句柄的功能与其他数据类型联系起来;这扩展了函数句柄的应用。函数句柄的简单操作函数见下表:
函数名称 | 函数功能 |
function_handle或@ | 间接调用函数 |
func2str | 将函数句柄转换为函数名称字符串 |
str2func | 将字符串代表的函数转换为函数句柄 |
function(funhandle) | 返回一个存储函数名称、函数类型及函数M文件位置的结构体 |