cordic指数matlab,不能理解用于计算指数函数的CORDIC算法

我读了一两篇关于CORDIC的文章,但并不完全理解它。然而,我从互联网上下载了一个使用这种算法计算指数函数的代码。它非常有用,并且帮助我在FPGA上推动功能的指数项。但现在我正在尝试编写一份报告,但我无法解释CORDIC部分如何工作,而且我无法涉及通用CORDIC算法。 PLZ帮助我,并提前谢谢你。不能理解用于计算指数函数的CORDIC算法

function fx = exp_cordic (x, n)

a_length = 25;

a = [ ...

1.648721270700128, ...

1.284025416687742, ...

1.133148453066826, ...

1.064494458917859, ...

1.031743407499103, ...

1.015747708586686, ...

1.007843097206488, ...

1.003913889338348, ...

1.001955033591003, ...

1.000977039492417, ...

1.000488400478694, ...

1.000244170429748, ...

1.000122077763384, ...

1.000061037018933, ...

1.000030518043791, ...

1.0000152589054785, ...

1.0000076294236351, ...

1.0000038147045416, ...

1.0000019073504518, ...

1.0000009536747712, ...

1.0000004768372719, ...

1.0000002384186075, ...

1.0000001192092967, ...

1.0000000596046466, ...

1.0000000298023228 ];

e = 2.718281828459045;

x_int = floor (x);

%

% Determine the weights.

%

poweroftwo = 0.5;

z = x - x_int;

for i = 1 : n

w(i) = 0.0;

if (poweroftwo < z)

w(i) = 1.0;

z = z - poweroftwo;

end

poweroftwo = poweroftwo/2.0;

end

%

% Calculate products.

%

fx = 1.0;

for i = 1 : n

if (i <= a_length)

ai = a(i);

else

ai = 1.0 + (ai - 1.0)/2.0;

end

if (0.0 < w(i))

fx = fx * ai;

end

end

%

% Perform residual multiplication.

%

fx = fx ...

* (1.0 + z ...

* (1.0 + z/2.0 ...

* (1.0 + z/3.0 ...

* (1.0 + z/4.0))));

%

% Account for factor EXP(X_INT).

%

if (x_int < 0)

for i = 1 : -x_int

fx = fx/e;

end

else

for i = 1 : x_int

fx = fx * e;

end

end

return

end

和我做了一些修改,并删除了一些代码,并试图使其更简单,它的工作,我不知道我做了什么,以及为什么它仍然是工作!!!!

a = [ ...

1.648721270700128, ...

1.284025416687742, ...

1.133148453066826, ...

1.064494458917859, ...

1.031743407499103, ...

];

e = 2.718281828459045;

x_int = floor (x);

z = x - x_int;

fx = 1.0;

for i = 1 : n

if (2^(-i) < z)

z=z-2^(-i);

fx = fx * a(i);

end

end

if (x_int < 0)

for i = 1 : -x_int

fx = fx/e;

end

else

for i = 1 : x_int

fx = fx * e;

end

end

return

end

2015-11-13

elec_hi

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值