在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8273|回复: 11

[其它] matlab浮点算法转定点C步骤

[复制链接]
发表于 2011-5-11 20:01:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
matlab的浮点定点化是信号处理中常遇到的问题,在这里贴出方法,便于大家学习。

matlab浮点算法转定点C步骤
1.  用matlab设计浮点算法。
2.  将浮点算法中的变量用matlab的fi object重新定义(定点定标),比较matlab浮点与 定点算法的误差,
    调整fi object定标直到误差可接受。
3.  将ETSI 定点C基本运算函数编译成DLL,供matlab调用。
4.  将2中的matlab定点代码用3中的基本函数重新实现。
5.  将4中的matlab定点代码转化成定点C代码。4与5的算法输出结果应该比特一致。
6.  根据性能需求优化5中的C代码。

        浮点数(x)转换为定点数(xq):xq=(int)x* 2Q
        定点数(xq)转换为浮点数(x):x=(float)xq*2-Q

function y = qfilter(h,x);
h = fix(h);
x = fix(x);
y = zeros(size(x));
for i = 1:length(x)
for k = 1:i
y(i) = fix( y(i) + fix( x(i-k+1)*h(k) ) );
end
end

////////转化成定点函数///////
double fix(double x,int Q)
{
        long int y;
        double z;
        y=(int)(x*pow(2,Q));
        z=y/pow(2,Q);
        return z;
}
//////转化成定点函数////////////
//////乘法运算////////////////////
double multi(double x,double y,int Q)
{
        double z;
        z=fix(x*y,Q);
        return z;
}
//////乘法运算////////////////////
//////除法运算////////////////////
double div(double x,double y,int Q)
{
        double z;
        z=fix(x/y,Q);
        return z;
}
//////除法运算////////////////////
/////加法运算///////////////////
double add(double x,double y,int Q)
{
        double z;
        z=fix(x+y,Q);
        return z;
}
/////加法运算///////////////////
double minus(double x,double y,int Q)
{
        double z;
        z=fix(x-y,Q);
        return z;
}
发表于 2011-5-11 21:34:08 | 显示全部楼层
学习一个
发表于 2011-5-14 09:08:55 | 显示全部楼层
A学习下  好东西  能否有更加详细的转化过程 以及DLL调用的解释?
发表于 2011-5-14 10:43:18 | 显示全部楼层
谢谢楼主
发表于 2011-5-23 11:15:09 | 显示全部楼层
学习一下
发表于 2011-5-29 16:39:55 | 显示全部楼层
ddddd
发表于 2011-6-15 15:44:31 | 显示全部楼层
thanks
this information is very good for me
发表于 2012-4-5 14:17:10 | 显示全部楼层
学习下~~~
发表于 2015-8-6 00:01:32 | 显示全部楼层
回复 1# shirya


    学习学习
发表于 2016-1-28 16:35:26 | 显示全部楼层
学习啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-6 08:06 , Processed in 0.025084 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表