MATLAB 和 Simulink 中的定点数据
Simulink 中的定点数据
您可以使用 Simulink® 中的 fixdt
函数来指定定点数据类型。fixdt
函数会创建一个 Simulink.NumericType
对象。
定点数据类型和定标表示法
Simulink 数据类型名称必须为少于 128 个字符的有效 MATLAB® 标识符。数据类型名称提供有关容器类型、数字编码和定标的信息。
下表对 Simulink 产品中出现的各种表示定点值数据类型和定标的各种符进行了说明。
符号 | 描述 | 示例 |
---|---|---|
容器类型 | ||
| 无符号定点数据类型 |
|
| 有符号定点数据类型 |
|
| 无符号定点数据类型 ( |
|
| 有符号定点数据类型 ( |
|
数字编码 | ||
| 10^ |
|
| 负值 |
|
| 小数点 |
|
定标编码 | ||
| 斜率 |
|
| 偏置 |
|
| 固定指数 (2^) 负的固定指数描述小数长度 |
|
| 斜率调整因子 |
|
C、c、D 或 d | 偏置的压缩编码 注意 如果将此字符向量传递给 | 没有可用的示例。仅用于向后兼容。 要识别和替换对 |
T 或 t | 斜率的压缩编码 注意 如果将此字符向量传递给 | 没有可用的示例。仅用于向后兼容。 要识别和替换对 |
MATLAB 中的定点数据
要将定点数据类型赋给数字或 MATLAB 中的变量,请使用 fi
(Fixed-Point Designer) 构造函数。产生的定点值称为 fi
对象。例如,以下代码创建 fi
对象 a 和 b,其属性显示在显示画面上,我们可以在构造变量时指定所有这些属性。请注意,当未指定 FractionLength
属性时,它会自动设置为给定字长的“最佳精度”,保留值的最高有效位。当未指定 WordLength
属性时,它默认为 16 位。
a = fi(pi)
a = 3.1416015625 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
b = fi(0.1)
b = 0.0999984741210938 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 18
从工作区读取定点数据
使用 From Workspace 模块将定点数据从 MATLAB 工作区读入 Simulink 模型。为此,数据必须采用结构体格式,在 values
字段中有 fi
对象。在数组格式中,From Workspace 模块只接受双精度实数数据。
将定点数据写入工作区
您可以通过 To Workspace 模块以数组或结构体格式将模型的定点输出写入 MATLAB 工作区。由 To Workspace 模块以结构体格式写入工作区的定点数据可以由 From Workspace 模块以结构体格式读回到 Simulink 模型中。
定标双精度
定标双精度值混合了浮点数和定点数。Fixed-Point Designer™ 将它们存储为保留定标、符号和字长信息的双精度值。例如,定点数据类型 sfix16_En14
的存储容器是 int16
。等效定标双精度数据类型 flts16_En14
的存储容器是浮点 double
。Fixed-Point Designer 将定标信息应用于存储的浮点双精度值以获得真实值。以双精度格式存储值几乎总能消除溢出和精度问题。
另请参阅
函数
fi
(Fixed-Point Designer) |fimath
(Fixed-Point Designer) |fixdt
|Simulink.NumericType