matlab支持定点计算,官方提供定点数转换工具箱,并在文档有详细教程,主要流程为:
下面将按步骤一一详细描述:
在matlab中创建定点数据
一般的,可以使用fixed-point designer fi对象创建数据。较常使用的为:
a=fi(v,s,w,f);
其中v为指定生成对象的值,s为有无符号,为1时表示有符号数,w为字长,f为小数长度。
除此之外,fi对象还有:
a=fi(v,T);
a=fi(_,Name,Value);
第一个用法,指定对象数据类型和T一样;第二个指定一些属性值,包括溢出模式OverflowAction、舍入模式RoundingMode、乘法模式ProductMode、求和模式SumMode等(这一部分与fimath有关,在算术部分详细展开)。关于fi对象部分,参考文档Construct fixed-point numeric object - MATLAB。
除了fi对象,一些常见的matlab算法也支持定点数生成创建。举个例子:
X = zeros('like',p);
X = zeros(n,'like',p);
X = ones('like',p);
X = ones(n,'like',p);
两个函数的第一个是生成标量,第二个是生成n维矩阵。用到的关键的地方就是这个'like', p,意思是生成的数据类型和p一样。或许创建变量型的函数大多支持生成浮点数,方便先用fi生成想要的定点数模板变量,然后批量生成定点数变量。更多有关定点数的函数可以参考