为什么使用函数FI时数据将变为零?

19次观点(最近30天)
迈克·约翰
迈克·约翰 2021年6月30日
评论: 迈克·约翰2021年7月1日
fm = get_fimath();
IDX = FI(1,0,1,0,FM);
a =(idx+fi(2,0,2,0,fm))*fi(1/3,0,16,17,fm);
k = fi(a,0,17,0,FM)
功能fm = get_fimath()
fm = fimath('圆形刺激',,,,'地面',,,,...
“溢出”,,,,'裹',,,,...
'ProductMode',,,,“ Full Precision”,,,,...
“ maxproductwordlength”,128,...
“汇总”,,,,“ Full Precision”,,,,...
“ maxsumwordlength”,128);
结尾
使用MATLAB编码器时会生成此代码。我想知道为什么k等于零?是因为1/3分区吗?

接受的答案

Divyam Gupta
Divyam Gupta 2021年6月30日
嗨,迈克,
在里面 fimath 功能,您已经设置了 圆形的 参数为 地面 。1/3当地板导致0作为答案。这就是为什么你得到 k AS 0。您可以考虑更改 圆形的 根据您所需的结果参数。
希望这可以帮助。
3条评论

登录发表评论。

更多答案(1)

安迪·巴特利特(Andy Bartlett)
编辑:安迪·巴特利特(Andy Bartlett) 2021年6月30日
就像科学符号一样
对“为什么分数长度可以大于WordLength?”的简短答案。
漫长的答案是以下内容。
二进制点的概念对于对定点类型的初始理解非常有用。同样,小数点的概念对于理解整数以外的值很有用。但是,对于很大或很少的数字,使用小数点变得非常笨拙。为了使代表非常大或很小的价值观变得容易,科学符号非常有价值。
非常有用的= 3E-200;
非常比词= 7E123;
从本质上讲,该符号将值分为两个部分,即给定碱基的整数指数。
Y = Mantissa。* 10.^指数
固定点遵循相同的概念
  • 基础为2
  • Mantissa必须是一个整数
  • 指数是固定的,即它是变量类型的一部分,并且不会改变变量的寿命
y = intmantissa。* 2^固定Expent
由于fractionLength = -fixedeptonent,我们也可以按以下方式编写。
y = intmantissa。* 2^-FractionLength
关于FI的一件好事是,我们可以让它找出缩放缩放,从而为常数提供最佳的精度。
esmmallnumberfi = fi(3e-200,0,8)
非常bignumberfi = fi(7E123,0,8)
注意产生的670和-404的非常大的正分数和负分数。
非常有用的=
3.00068384319763E-200
数字型(0,8,670)
eslybignumberfi =
6.982403670347E+123
Numerictype(0,8,-404)
FI使用8位未签名的整数Mantissas近似于原始的双值。
147 * 2^-670
169 * 2^404
这只是基础2中的科学符号。

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!