Matlab:如何在不扩展基础数据类型的情况下执行定点算术?

继承句柄

Google在此问题上保持沉默。我目前在Matlab中仅在16位有符号固定点上实现数字计算器。但是对16位定点进行算术运算会导致将数据类型扩展到以下类型

>> a = int16(1.5 * 4)
a = 6
>> T = numerictype(1, 16, 2)

T = DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 2
>> dis = reinterpretcast(a, T)

dis = 1.5000

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 2
>> c = dis * dis

c = 2.2500

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 32
        FractionLength: 4

我希望变量c保持在WordLength 16,FractionLength 2中。是否有可能在不扩展基础数据类型的情况下完成16位固定点的算术运算?我要冒任何上溢和下溢的风险。任何帮助都是极好的。

编辑:键入fimath命令窗口导致错误。为什么会发生此错误?

>> F = fimath('OverflowAction','Wrap', 'RoundingMethod', 'Floor', ...
           'ProductWordLength', 16, 'ProductFractionLength', 2);
No public field OverflowAction exists for class embedded.fimath.

Error in fimath (line 72)
  this.(varargin{k}) = varargin{k+1};
Mohsen Nosratinia

本地解决方案:您可以使用一个fimath对象来指定乘积结果的精度

F = fimath('OverflowMode','Wrap', 'RoundMode', 'Floor', ...
           'ProductMode', 'SpecifyPrecision', ...
           'ProductWordLength', 16, 'ProductFractionLength', 2);
dis.fimath = F;

那么结果将是:

>> dis*dis
ans =
         2.25

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 2

             RoundMode: floor
          OverflowMode: wrap
           ProductMode: SpecifyPrecision
     ProductWordLength: 16
 ProductFractionLength: 2
               SumMode: FullPrecision
      MaxSumWordLength: 128

全局解决方案:或者,如果您希望将此方法应用于所有定点变量,则可以使用

globalfimath('OverflowMode','Wrap', 'RoundMode', 'Floor', ...
             'ProductMode', 'SpecifyPrecision', ...
             'ProductWordLength', 16, 'ProductFractionLength', 2);

请注意,要限制为16位,您还需要指定sum的精度(的使用SumModeSumWordLength属性fimath),否则sum的字长为17:

>> dis+dis
ans =
     3

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 17
        FractionLength: 2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Matlab:如何在不扩展基础数据类型的情况下执行定点运算?

来自分类Dev

如何在不丢失Mysql中的数据的情况下更改列数据类型

来自分类Dev

如何在不丢失数据类型的情况下读取 xlsx 文件

来自分类Dev

如何在不使用求和类型或副本的情况下创建异构数据类型的列表

来自分类Dev

如何在不删除依赖项的情况下更改数据类型

来自分类Dev

如何在嵌入符号的情况下解码数字数据类型?

来自分类Dev

如何在不丢失数据的情况下更改数据类型并添加带有迁移的列?(laravel 5.3)

来自分类Dev

如何在不扩展Hybris的情况下重新声明核心模型属性类型

来自分类Dev

如何在不扩展Hybris的情况下重新声明核心模型属性类型

来自分类Dev

如何在不执行数据库查询的情况下创建新记录?

来自分类Dev

如何在不执行mysql db query的情况下从缓存中获取数据

来自分类Dev

如何在不使用任何用户定义的数据类型的情况下,用C或C ++构建大小为n的全新数据类型?

来自分类Dev

如何在不使用任何用户定义的数据类型的情况下,在C或C ++中构建大小为n的全新数据类型?

来自分类Dev

如何在没有数据类型的情况下从DataFrame打印字符串值

来自分类Dev

如何在列数据类型为NON INTEGER的情况下添加NOT NULL约束(例如VARCHAR(50))

来自分类Dev

Apex Set:如何在不知道数据类型的情况下迭代一个集合?

来自分类Dev

如何在不更改React.Component的所有用法的情况下扩展React Component prop类型

来自分类Dev

如何在不丢失数据的情况下安装Ubuntu?

来自分类Dev

如何在不丢失数据的情况下“关闭” juju?

来自分类Dev

如何在不刷新数据的情况下打开Excel

来自分类Dev

如何在不破坏画布的情况下刷新数据

来自分类Dev

如何在不丢失数据的情况下安装 ubuntu

来自分类Dev

如何在不覆盖的情况下加载数据?

来自分类Dev

如何在不丢失数据的情况下“关闭” juju?

来自分类Dev

如何在不丢失数据的情况下将 Varchar 类型列更改为日期类型列

来自分类Dev

如何在不创建新列表的情况下检索 IEnumerable 的基础列表?

来自分类Dev

在var的情况下分配特定数据类型

来自分类Dev

MySQL在不丢失数据的情况下将CHAR(32)数据类型转换为BINARY(16)

来自分类Dev

该程序如何在不知道其数据类型的情况下接受数据?

Related 相关文章

  1. 1

    Matlab:如何在不扩展基础数据类型的情况下执行定点运算?

  2. 2

    如何在不丢失Mysql中的数据的情况下更改列数据类型

  3. 3

    如何在不丢失数据类型的情况下读取 xlsx 文件

  4. 4

    如何在不使用求和类型或副本的情况下创建异构数据类型的列表

  5. 5

    如何在不删除依赖项的情况下更改数据类型

  6. 6

    如何在嵌入符号的情况下解码数字数据类型?

  7. 7

    如何在不丢失数据的情况下更改数据类型并添加带有迁移的列?(laravel 5.3)

  8. 8

    如何在不扩展Hybris的情况下重新声明核心模型属性类型

  9. 9

    如何在不扩展Hybris的情况下重新声明核心模型属性类型

  10. 10

    如何在不执行数据库查询的情况下创建新记录?

  11. 11

    如何在不执行mysql db query的情况下从缓存中获取数据

  12. 12

    如何在不使用任何用户定义的数据类型的情况下,用C或C ++构建大小为n的全新数据类型?

  13. 13

    如何在不使用任何用户定义的数据类型的情况下,在C或C ++中构建大小为n的全新数据类型?

  14. 14

    如何在没有数据类型的情况下从DataFrame打印字符串值

  15. 15

    如何在列数据类型为NON INTEGER的情况下添加NOT NULL约束(例如VARCHAR(50))

  16. 16

    Apex Set:如何在不知道数据类型的情况下迭代一个集合?

  17. 17

    如何在不更改React.Component的所有用法的情况下扩展React Component prop类型

  18. 18

    如何在不丢失数据的情况下安装Ubuntu?

  19. 19

    如何在不丢失数据的情况下“关闭” juju?

  20. 20

    如何在不刷新数据的情况下打开Excel

  21. 21

    如何在不破坏画布的情况下刷新数据

  22. 22

    如何在不丢失数据的情况下安装 ubuntu

  23. 23

    如何在不覆盖的情况下加载数据?

  24. 24

    如何在不丢失数据的情况下“关闭” juju?

  25. 25

    如何在不丢失数据的情况下将 Varchar 类型列更改为日期类型列

  26. 26

    如何在不创建新列表的情况下检索 IEnumerable 的基础列表?

  27. 27

    在var的情况下分配特定数据类型

  28. 28

    MySQL在不丢失数据的情况下将CHAR(32)数据类型转换为BINARY(16)

  29. 29

    该程序如何在不知道其数据类型的情况下接受数据?

热门标签

归档