MATLAB 支持各种数字类,包括符号和无符号的整数及单精度和双精度浮点数。默认情况下,MATLAB 存储所有数值为双精度浮点数。
可以选择存储任何数字或数字为整数或单精度数字阵列。
所有的数字类型支持基本的数组运算和数学运算。
MATLAB提供各种数字数据类型转换为以下功能:
函数 | 目的 |
---|---|
double | Converts to double precision number |
single | Converts to single precision number |
int8 | Converts to 8-bit signed integer |
int16 | Converts to 16-bit signed integer |
int32 | Converts to 32-bit signed integer |
int64 | Converts to 64-bit signed integer |
uint8 | Converts to 8-bit unsigned integer |
uint16 | Converts to 16-bit unsigned integer |
uint32 | Converts to 32-bit unsigned integer |
uint64 | Converts to 64-bit unsigned integer |
创建一个脚本文件,并键入下面的代码:
x = single([5.32 3.47 6.28]) .* 7.5
x = double([5.32 3.47 6.28]) .* 7.5
x = int8([5.32 3.47 6.28]) .* 7.5
x = int16([5.32 3.47 6.28]) .* 7.5
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
当运行该文件,它显示了以下结果:
x = 39.9000 26.0250 47.1000 x = 39.9000 26.0250 47.1000 x = 38 23 45 x = 38 23 45 x = 38 23 45 x = 38 23 45
让我们扩展前面的例子多一点。创建一个脚本文件,并键入下面的代码:
x = int32([5.32 3.47 6.28]) .* 7.5 x = int64([5.32 3.47 6.28]) .* 7.5 x = num2cell(x)
当运行该文件,它显示了以下结果:
x = 38 23 45 x = 38 23 45 x = [38] [23] [45]
函数intmax() 和 intmin()返回的最大和最小的值,它可以表示所有类型的整数。
这两个功能整数数据类型作为参数,例如,intmax(int8) 或intmin(int64)最大值和最小值值,可以表示的整数数据类型并返回。
下面的例子说明如何得到最小值和最大值的整数。创建一个脚本文件,它编写以下代码:
% displaying the smallest and largest signed integer data str = 'The range for int8 is: %d to %d '; sprintf(str, intmin('int8'), intmax('int8')) str = 'The range for int16 is: %d to %d '; sprintf(str, intmin('int16'), intmax('int16')) str = 'The range for int32 is: %d to %d '; sprintf(str, intmin('int32'), intmax('int32')) str = 'The range for int64 is: %d to %d '; sprintf(str, intmin('int64'), intmax('int64')) % displaying the smallest and largest unsigned integer data str = 'The range for uint8 is: %d to %d '; sprintf(str, intmin('uint8'), intmax('uint8')) str = 'The range for uint16 is: %d to %d '; sprintf(str, intmin('uint16'), intmax('uint16')) str = 'The range for uint32 is: %d to %d '; sprintf(str, intmin('uint32'), intmax('uint32')) str = 'The range for uint64 is: %d to %d '; sprintf(str, intmin('uint64'), intmax('uint64'))当运行该文件,它显示了以下结果:
ans = The range for int8 is: -128 to 127 ans = The range for int16 is: -32768 to 32767 ans = The range for int32 is: -2147483648 to 2147483647 ans = The range for int64 is: -9223372036854775808 to 9223372036854775807 ans = The range for uint8 is: 0 to 255 ans = The range for uint16 is: 0 to 65535 ans = The range for uint32 is: 0 to 4294967295 ans = The range for uint64 is: 0 to 1.844674e+19
这函数realmax() 和realmin() 返回的最大值和最小值的值,可以表示为浮点数。
这两个函数调用时的参数'单',返回的最大值和最小值值,可以代表单精度数据类型以及何时被称为'双'的参数,返回的最大值和最小值值,可以表示双精度数据类型。
下面的例子说明如何获得最大和最小的浮点数。创建一个脚本文件,它编写以下代码:
%g to %g'; sprintf(str, -realmax('single'), -realmin('single'), ... realmin('single'), realmax('single')) % displaying the smallest and largest double-precision % floating web3 number str = 'The range for double is: %g to %g and %g to %g'; sprintf(str, -realmax('double'), -realmin('double'), ... realmin('double'), realmax('double'))当运行该文件,它会显示以下结果:
ans = The range for single is: -3.40282e+38 to -1.17549e-38 and 1.17549e-38 to 3.40282e+38 ans = The range for double is: -1.79769e+308 to -2.22507e-308 and 2.22507e-308 to 1.79769e+308