这个问题是21icbbs 上的一个网友提出的,我第一反应就是迭代。在很多场合下,比如计算热电流thermal current,或是其他一些使用如下公式的应用:
y(t) = K * (1 - exp(-t / T))) (1)
y(t) = K * exp(-t / T)) (2)
where T is the time constant of the system and K is the magnitude.
公式(1),(2)不能直接应用在实际计算中,因为 t并没有确切的数值。 对 (1) 微分后得:
dy = - K * exp(-t / T)) /T = ( K - K*(1 – exp(-t/T))) / T
= (K – y) / T (3)
对 (2) 微分后得:
dy = - K * exp(-t / T)) /T = - y /T (4)
当 K=0, 则 (3)成为 (4)。假设采样时间为 Ts, 把(3) 转成迭代方程:
y(k+1) = y(k) + Ts/T * (K – y(k)) (5)
只要知道初始值 y(0) 就可计算,与时间 t 无关。如果在 s domain ,转换则更简单:把 s = (1- z)/Ts

本文探讨了如何通过迭代方法和CORDIC算法来计算exp函数,特别是针对16位整数的情况。通过构造系数矩阵将乘法问题转化为加法和移位操作,适合FPGA和DSP实现。提供的C程序代码展示了如何用这两种方法计算exp函数,并给出了计算结果的对比。
最低0.47元/天 解锁文章
6715

被折叠的 条评论
为什么被折叠?



