matlab中升余弦滤波器的使用

348 views
Skip to first unread message

Sabrina Dong

unread,
Jun 17, 2009, 10:15:46 PM6/17/09
to ScicomToolbox
这是网上找的解释,挺精辟的。
首先我按照winwalk兄的做法,发现弹出的错误有两种:一是要求0<fc<fs/2,二是要求0<fc+/-Df/2<fs/2即winwalk兄
所说的fc(1+a)<=fs/2。
一般情况下,平方根升余弦滤波器(SRRC)用于基带成形滤波,其截至频率(cutoff frequency,fc)等于数据的波特率(也叫符号
率)。而SRRC的抽样频率fs并不是我们经常说的码率或者比特率,它的含义有所不同。我们通常基带成形滤波的数据都是符号(即数据经过星座图影射后生
成的符号),当然SRRC认为这些符号就是它要处理的数据了,而抽样率就是指针对这些符号的抽样率——这些符号在经SRRC滤波(即基带成形)前要插
0,然后经SRRC滤波后,这些0值都变成非零值,这个过程即所谓的基带成形内插滤波,这样原本为矩形脉冲的数字信号就变成了近似光滑的类模拟信号(其
实说白了就是DA的过程),用来射频调制发送。
所以fs必须为fc的整数倍(因为不可能有的符号后插0,有的不插0,这样接收端就没办法采样了),而且至少是2倍(如果不插0,则也不符合
Nyquist准则了,呵呵),因而0<fc<fs/2,Df是transition bandwidth,即过渡带宽,Df=fc*a,fc
(1+a)即为信道带宽,根据奈氏准则要求采样率是信道带宽的二倍。

以下是对firrcos参数的解释。
b = firrcos(n,F0,r,fs,'rolloff')。
n:阶数,点数
F0:截止频率
r:滚降系数
fs:抽样频率

1/F0决定了时域脉冲的宽度,1/fs是取样间隔。所以fs是F0的整倍数。n规定了取样点数。
以上所述都是针对升余弦滤波器。如果想生成根升余弦的系数,还需要加上参数‘sqrt’。

例如:
n=16;
alpha = 0.5;
F0=1;
fs=4
h =firrcos(n,F0,alpha,fs,'rolloff','sqrt');

h为系数,因为是根升余弦,所以对h自卷积后得到的才是升余弦的滤波器系数。
由于fs/F0=4,主瓣由4个点表示。
n=16,根升余弦生成17个系数,卷积后有33个系数。

Reply all
Reply to author
Forward
0 new messages