半精度数据输入万博1manbetx
信号和块输出可以指定半精度数据类型。半精度数据类型支持用于参数和块子集的模拟和代码生成。万博1manbetx
半精确的数学运算
在仿真万博1manbetx软件®,对执行算术运算、关系运算和二进制运算的块的半精度输入总是转换为单精度,并且该操作在单精度下执行。如果块的输出数据类型设置为一半
时,块的输出被转换回半精度数据类型。
在MATLAB®,但是,有些函数通过模拟半精度浮点数学来执行半精度输入的算术运算。例如,在MATLAB中,下面的代码是使用半精度浮点算法执行的。
Y = mod(1 / 2 (u1) 1 / 2 (u2))
在Si万博1manbetxmulink中,使用国防部
的功能数学函数块,同样的操作将通过将输入转换为单精度并在单精度浮点数学中执行操作来执行。然后将算术运算的结果转换回一半精度。
Y = half(mod(single(half(u1)), single(half(u2))))
软件特性支持半精度万博1manbetx
“正常”、“加速”和“快速加速”模式支持半精度数据类型。万博1manbetx半精度数据类型也支持SIL、PIL和外部模式。万博1manbetx
的C/ c++代码生成支持半精度万博1manbetx
.ert
目标。在生成的代码中,半精度变量存储在一个类中,模拟值的位模式。
对于原生支持半精度的特殊类型的嵌入式硬件目标,支持原生半精度C代码生成。万博1manbetx有关更多信息,请参见从Simulink模型生成本地半精度C代码万博1manbetx.
使用HDL Coder™生成HDL代码。
有关更多信息,请参见开始使用HDL编码器原生浮点支持万博1manbetx(高密度脂蛋白编码器).
MATLAB系统块支持半精度万博1manbetx数据类型与实值。
在Si万博1manbetxmulink中,半精度数据类型只支持实值。万博1manbetx复杂值不能有半精度数据类型。
支持半精度的块万博1manbetx
要查看支持半精度的块,在命令行输入:万博1manbetx
showblockdatatypetable
块,支持半精度显示和万博1manbetxX
在标签栏中一半.
为半精度系统生成代码
您可以生成C代码目标.ert
使用半精度数据类型的Si万博1manbetxmulink模型目标。代码生成.ert
targets需要一个Embedded Coder®许可证。
打开ex_half_arithmetic
模型。该模型执行若干算术运算。所有参数值和输出数据类型都指定半精度数据类型。
open_system (“ex_half_arithmetic”);
要为模型生成C代码,请按Ctrl + B.在代码生成报告中,打开ex_half_arithmetic.c
文件。半精度变量是生成代码中的类型real16_T
.例如,请参见rtb_Gain
变量。
在生成的代码中,半精度变量存储在模拟值的位模式的结构中。
算术运算的半精度输入变量被转换为单精度,并且算术运算在单精度下执行。如果块的输出数据类型设置为一半
时,操作的结果被转换回半精度数据类型。例如,请参阅计算增益块输出的代码。