MATLAB®具有四个有符号和四个无符号整数类。有符号类型使您能够处理负整数和正整数,但不能像无符号类型那样表示范围广泛的数字,因为一位用于指定数字的正号或负号。无符号类型提供了更广泛的数字范围,但这些数字只能是零或正。
MATLAB支万博1manbetx持整数数据的1、2、4和8字节存储。如果使用容纳数据的最小整数类型,可以为程序节省内存和执行时间。例如,不需要32位整数来存储值100
.
以下是八个整数类、每种类型可存储的值范围以及创建该类型所需的MATLAB转换函数:
等级 |
价值范围 |
转换函数 |
---|---|---|
有符号8位整数 |
-27.到27.-1 |
|
有符号16位整数 |
-215到215-1 |
|
有符号32位整数 |
-231到231-1 |
|
有符号64位整数 |
-263到263-1 |
|
无符号8位整数 |
0比28.-1 |
|
无符号16位整数 |
0比216-1 |
|
无符号32位整数 |
0比232-1 |
|
无符号64位整数 |
0比264-1 |
|
MATLAB将数字数据存储为双精度浮点(双重的
)默认情况下。要将数据存储为整数,需要从双重的
到所需的整数类型。使用上表中所示的转换函数之一。
例如,存储325
作为分配给变量的16位有符号整数x
,类型
x=int16(325);
如果要转换为整数的数字包含小数部分,则MATLAB将舍入到最接近的整数。如果分数部分正好是0.5
,然后从两个相等接近的整数中,MATLAB选择绝对值较大的整数:
x=325.499;int16(x)ans=int16 325 x=x+.001;int16(x)ans=int16 326
如果需要使用除默认值外的舍入方案对数字进行舍入,MATLAB提供四个舍入函数:圆形的
,修理
,地板
,及(用熟石膏、木板等)装天花板
这个修理
函数使您可以覆盖默认值和舍入值接近零当存在非零分数部分时:
x=325.9;int16(固定(x))ans=int16 325
同时涉及整数和浮点的算术运算总是导致整数数据类型。必要时,MATLAB根据默认的舍入算法对结果进行舍入。下面的例子给出了1426.75
然后将其舍入到下一个最高整数:
int16(325)*4.39 ans=int16 1427
将其他类(如字符串)转换为整数时,整数转换函数也很有用:
str=‘Hello World’;int8(str)ans=1×11 int8行向量72 101 108 111 32 87 111 114 108 100
如果你转换一个楠
值转换为整数类,结果是0
在那个整数类中。例如
int32(NaN)ans=int32 0
MATLAB可以对以下类型的数据执行整数运算:
相同整数数据类型的整数或整数数组。这将生成与操作数具有相同数据类型的结果:
x=uint32([132 347 528])*uint32(75);类别(x)ans=uint32
整数或整数数组和标量双精度浮点数。这将生成与整数操作数具有相同数据类型的结果:
x=uint32([132 347 528])*75.49;类别(x)ans=uint32
对于其中一个操作数是整数数据类型数组的所有二进制操作(64位整数除外)另一个是标量双精度运算,MATLAB使用逐元素双精度算法计算运算,然后将结果转换回原始整数数据类型。对于涉及64位整数数组和标量双精度的二进制运算,MATLAB计算运算就像使用80位扩展精度算法一样,以防止失去精确性。
不支持涉及整数类型的复数的操作。万博1manbetx
对于每种整数数据类型,都有一个可以用该类型表示的最大值和最小值。下表所示整数在“值的范围”列中列出每个整数数据类型的最大值和最小值。
您还可以使用获取这些值intmax
和intmin
功能:
intmax('int8')ans=int8 127 intmin('int8')ans=int8-128
如果将大于整数数据类型最大值的数字转换为该类型,则MATLAB将其设置为最大值。类似地,如果将小于整数数据类型最小值的数字转换为最小值。例如,
x=int8(300)x=int8 127 x=int8(-300)x=int8-128
此外,当涉及整数的算术运算结果超过数据类型的最大(或最小)值时,MATLAB将其设置为最大(或最小)值:
x=int8(100)*3x=int8 127 x=int8(-100)*3x=int8-128