发现使用MATLAB coder定点化时,在某些情况下索引为0。 例如,下一个代码k
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 ) function fm=get_fimath ) FM=fimath ) ' roundingmethod ',' floor ', ' OverflowAction . ' SumMode ',' FullPrecision ', ' MaxSumWordLength ',128 ); 之后发现end错误的原因是,由于RoundingMethod设置为floor,a无限接近1但小于1,所以k在定点为0。
之后,在寻找错误的原因时,我觉得WordLength和FractionLength的理解发生了偏差。
WordLength :表示表示整数部分所需的位数,而不是定点数据的全长
表示应以FractionLength为底的乘数,即二进制中小数部分的长度。
例如,上式中的fi(1/3、0、16、17、fm )表示这点在小于0.5的数) 0.33333 )。
以上内容均请参考此答案
33559 www.mathworks.com/MATLAB central/answers/868528-why-do-the-data-become-zero-when-using-the-ffff