相关疑难解决方法(0)

正弦表插值

我想把一个SDR系统放在一起,最初调整AM,后来调整FM等.我打算用来做这个的系统将有一个正弦查找表用于直接数字合成(DDS).为了正确调谐,我希望能够精确控制馈送到混频器的正弦波频率(在这种情况下为乘法器).我预计线性插值会很接近,但认为非线性方法会提供更好的结果.

什么是用于正弦表的良好且快速的插值方法.乘法和加法在目标系统上很便宜; 分工是昂贵的.

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

任何SDR经验都会有所帮助.

interpolation trigonometry signal-processing radio nonlinear-functions

2
推荐指数
1
解决办法
7191
查看次数

又一个快速三角学

float sinx(float x)
{
    static const float a[] = {-.1666666664,.0083333315,-.0001984090,.0000027526,-.0000000239};
    float xsq = x*x;
    float temp = x*(1 + a[0]*xsq + a[1]*xsq*xsq + a[2]* xsq*xsq*xsq+a[3]*xsq*xsq*xsq*xsq+ a[4]*xsq*xsq*xsq*xsq*xsq);
    return temp;
}
Run Code Online (Sandbox Code Playgroud)

这些常数是如何计算的?如何计算costan使用这种方法?我可以扩展它以获得更高的精度吗?我想我需要添加更多常量?


上面描述的"快速"正弦的误差相对于等度的泰勒多项式的曲线图.

c floating-point precision trigonometry numerical-methods

2
推荐指数
1
解决办法
655
查看次数

在没有cmath的情况下计算罪

我被要求使用C++计算sin(x)的值而不使用任何数学库.我怎样才能进入他们(比如说2弧度)并在2时给他们一个sin函数的值?

谢谢.

c++ math

2
推荐指数
1
解决办法
2194
查看次数

是否有可能使这个矢量化的MATLAB代码更快?

在我的程序中,我需要计算总和:

和.

我计算这个总和与新值2500倍Cz.

参数z可以是矢量.我编写了简单的for循环和矢量化版本代码,如下所示:

K = 200;
n_z = 40000;
C = ones(K,1); % an example, in real life the arey some coefficients (at next call will be new)
k = 0:K-1;
z = linspace(0, 2*pi, n_z); % at next call will be new

tic;
    my_sum_for = zeros(1, K);
    for i=1:n_z
       my_sum_for(i) = C' * tan(k' * z(i));
    end
toc; % Elapsed time is 1.820485 seconds.

tic;
     my_sum = C' * tan(k' * z); …
Run Code Online (Sandbox Code Playgroud)

matlab vectorization

1
推荐指数
1
解决办法
310
查看次数