MATLAB中的数值类型

MATLAB中的数值类型

浮点数

MATLAB® 以双精度或单精度格式表示浮点数。默认为双精度,可以通过一个简单的转换函数将任何数值转换为单精度数值(single())。

浮点数的定义

  • 双精度浮点
    MATLAB 根据适用于双精度的 IEEE® 754 标准
    来构造双精度(即 double)数据类型。以 double 形式存储的任何值都需要 64 位。
含义
63 符号(0 = 正号、1 = 负号)
62 - 52 指数,偏置为 1023
51 到 0 数值 1.f 的小数 f(十进制)

创建方式:

a = 1.234567
b = double(1.234567) %%模型就是double类型,很MATLAB
  • 单精度浮点
    MATLAB 根据适用于单精度的 IEEE® 754 标准
    来构造单精度(即 single)数据类型。以 single 形式存储的任何值都需要 32位。
含义
31 符号(0 = 正号、1 = 负号)
30 - 23 指数,偏置为 127
22 到 0 数值 1.f 的小数 f(十进制)
b= single(1.235678);

可以试一下

b= single(1.2356789);

超过了8位有效数字,不能精确表示,精度和表示问题可以参照 IEEE® 754 标准和浮点数的精度。
使用32位的single 类型的数值,与使用 64 位的 double 类型的数值相比,前者需要的内存更少。但是,由于它们是使用较少的位存储的,因此 single 类型的数值所呈现的精度要低于 double 类型的数值。

一般使用双精度来存储大于 3.4 x 1038 或约小于 -3.4 x 1038 的值。对于位于这两个范围之间的数值,可以使用双精度,也可以使用单精度,但单精度需要的内存更少。

浮点数的算术运算

双精度浮点
可以使用 double 和以下的任何其他类来执行基本算术运算。如果一个或多个操作数为整数(标量或数组),则 double 操作数必须为标量。运算结果默认为 double 类型,除非另有说明:

  • single - 结果为 single 类型
  • double
  • int* 或 uint* - 结果与整数操作数具有相同的数据类型
  • char
  • logical

单精度浮点数
使用 single 和以下的任何其他类来执行基本算术运算。运算结果始终为 singlesingle不能与整数直接运算):

  • single
  • double
  • int* 或 uint* - 结果与整数操作数具有相同的数据类型 (single类型不能与int类型做运算)
  • char
  • logical

整数

MATLAB® 具有四个有符号整数类(int8、int16、int32、int64分别占用字节 1、 2、 4、 8个)和四个无符号整数类(uint8、uint16、uint32、uint64同样占用字节 1、 2、 4、 8个,其中u为unsigned的缩写)。

定义方式:

a = 6;
b = single(a);

%%%%有符号整数
c = int64(a);
d = int32(a);
e = int16(a);
f = int8(a);

%%%%无符号整数
g = uint64(a);
h = uint32(a);
i = uint16(a);
j = uint8(a)

MATLAB 默认情况下以双精度浮点形式 (double) 存储数值数据。要以整数形式存储数据,您需要从 double 转换为所需的整数类型。使用上表中所示的转换函数之一。

例如,如果要以 16 位有符号整数形式存储赋给变量 x 的值 325,请键入
x = int16(325);
如果要转换为整数的数值带有小数部分,MATLAB 将舍入到最接近的整数。如果小数部分正好是 0.5,则 MATLAB 会从两个同样临近的整数中选择绝对值大小更大的整数。
在Matlab中还有几种取整的函数分别是

  • floor() :向下取整
  • ceil():向上取整
  • round():四舍五入,取最近的整数
  • fix():向0取整,向原点方向取整

如果将大于某个整数数据类型的最大值的数值转换为该类型,MATLAB 会将其设置为最大值。同样,若小于,MATLAB 会将其设置为最小值

参考:matlab中定义数值型数据和相关函数
mathworks浮点数
mathworks整数

你可能感兴趣的:(数据分析,matlab)