vector<float>
gr_firdes::root_raised_cosine (double gain,
double sampling_freq,
double symbol_rate,
double alpha,
int ntaps)
{
ntaps |= 1; // ensure that ntaps is odd
double spb = sampling_freq/symbol_rate; // samples per bit/symbol
vector<float> taps(ntaps);
double scale = 0;
for(int i=0;i<ntaps;i++)
{
double x1,x2,x3,num,den;
double xindx = i - ntaps/2;
x1 = M_PI * xindx/spb;
x2 = 4 * alpha * xindx / spb;
x3 = x2*x2 - 1;
if( fabs(x3) >= 0.000001 ) // Avoid Rounding errors...
{
if( i != ntaps/2 )
num = cos((1+alpha)*x1) + sin((1-alpha)*x1)/(4*alpha*xindx/spb);
else
num = cos((1+alpha)*x1) + (1-alpha) * M_PI / (4*alpha);
den = x3 * M_PI;
}
else
{
if(alpha==1)
{
taps[i] = -1;
continue;
}
x3 = (1-alph
[c++]根升余弦滤波器
最新推荐文章于 2024-07-24 22:32:28 发布
这段代码展示了如何使用C++实现根升余弦滤波器,包括核心函数`gr_firdes::root_raised_cosine`的详细实现。函数计算滤波器系数并进行归一化,但其工作原理未被详细解释。
摘要由CSDN通过智能技术生成