记录一个matlab仿真定点数处理算法时获取数据位宽的函数

1 函数

  • 函数名:get_width
  • 变量:
    • var 输入:待处理有符号数。
    • width_i 输入:定点数处理过程的数据位宽。
    • width_o 输出:输出有符号数的实际位宽。
  • 说明:
    返回有符号数的数据位宽,如果未溢出,则输出“info”,如果溢出则输出“warning”。
    值得注意一点的是,为了避免2^N的误判,取出最大值后加1再计算位宽。而对于负数的边界,留有2裕量不影响FPGA位宽的设计。
    代码:
function width_o = get_width(var,width_i)
% 获取变量的位宽,判断是否溢出
% var:待处理变量
% width_i:数据最大位宽
% width_o:实际位宽 

% matlab 版本低于2018 max函数不支持all选项。
% width_o = ceil(log2(max(max(max(max(var)))) )) + 1;
width_o = ceil(log2( max(abs(var) + 1, [], 'all') )) + 1; % 增加一位符号位
var_name = inputname(1);
fprintf("info: width of "+var_name + " = %d\n",width_o) ;

if nargin > 1
    if width_o > width_i
        fprintf(2,"warning: "+var_name + "overflow!\n") ;
    end
end

end

2 使用

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lu-ming.xyz

觉得有用的话点个赞吧 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值