signal-processing - 正弦表插值

标签 signal-processing trigonometry interpolation radio nonlinear-functions

我想建立一个SDR系统,该系统最初会调谐AM,之后会调谐FM等。
我计划用于执行此操作的系统将具有用于直接数字合成(DDS)的正弦查找表。
为了正确调谐,我期望需要能够精确控制馈入混频器(在本例中为乘法器)的正弦波的频率。我希望线性插值将很接近,但是认为非线性方法会提供更好的结果。

什么是用于正弦表的良好且快速的插值方法。在目标系统上乘法和加法很便宜;划分成本很高。

编辑:
我计划使用乘法/移位函数实现常数以将常数归一化为可缩放整数。中间值将使用宽加法,乘法将使用18或17位。可以使用浮点“预计算”,但不能在目标平台上使用。当我说“划分是昂贵的”时,我的意思是必须使用乘法器和大量代码来实现。这不是不可想象的,但是应该避免。但是,真正的浮点IEEE方法将在此平台以及自定义实现上占用大量资源。

任何SDR经验都将有所帮助。

最佳答案

如果使用线性插值无法获得很好的结果,则可以尝试三角关系。

求和与差公式

sin(A+B)=sinA*cosB + cosA*sinB
sin(A-B)=sinA*cosB - cosA*sinB
cos(A+B)=cosA*cosB - sinA*sinB
cos(A-B)=cosA*cosB + sinA*sinB

您可以预先计算A,B范围的sin和cos值,即
A range: 0, 10, 20, ... 90
B range: 0.01 ... 0.99

关于signal-processing - 正弦表插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1164492/

相关文章:

matlab - MATLAB 中的曲线拟合,对于超过 8 项的正弦函数?

python - Python 中的双线性插值

python - 不卡在对齐点上的 scipy.interpolate.griddata 的替代品

c - 使用 C 在显示屏上通过停止/暂停/播放按钮绘制正弦波

database - 将 MIT-BIH 心律失常心电图数据库加载到 MATLAB

java - 你如何创建一个音调生成器,其音调可以在 "live"或在 java 中即时操作?

java - 绘制正弦和余弦函数

function - 为什么没有类似于atan2()的asin2()和acos2()函数?

java - 以一定角度移动实体?

matlab - MATLAB中的错误处理和插值