成形滤波器和匹配滤波器

为了消除码间串扰,根据奈奎斯特第一准则,分析用平方根升余弦滚降滤波器来想实现无码间干扰。

以下摘自通信原理--樊昌信--P151

成形滤波器和匹配滤波器成形滤波器和匹配滤波器成形滤波器和匹配滤波器

该理想滤波器,物理不可实现,还需要寻找另外的设计----- 为了解决理想低通特性存在的问题,可以使理想低通滤波特性的边沿缓慢下降,这成为"滚降"。

成形滤波器和匹配滤波器

成形滤波器和匹配滤波器

----------------------------这是通信原理里面的,以后就参照这个来看,论文里面的有的讲的不全面,容易断章取义--------------------
那么,该成形滤波器怎么设计呢?

首先讨论,是用升余弦滚降滤波器还是平方根升余弦滚降滤波器。在fdatool里面,随便设计这两个滤波器对比一下:


成形滤波器和匹配滤波器

成形滤波器和匹配滤波器

成形滤波器和匹配滤波器

成形滤波器和匹配滤波器

从这4个图来看,我只能看出时域的 normal 和平方根的区别是,一个正好在归零点,一个有偏差。从这一点来看,不是应该用normal比较好吗,为什么大家都在用平方根的?这是因为“平方根的频率比较收敛(这个我没看出来,是别人和我说的)”。但是,平方根的归零点有偏差,这怎么办?所以,就需要再接受端添加一个与法发送端一摸一样的滤波器作为匹配滤波器。

那么如何用matlab设计平方根升余弦滤波器呢?

1、用fdatool

2、调用函数 firrcos

3、调用函数 rcosfir

下面分别介绍:这几种方法,参数都按照符号速率9.6Khz,送入滤波器前倍插值4倍,采样率为38.4Khz(注意,这里虽然是插值了4倍,但是符号速率不变),滚降系数为0.35,截止频率设计为符号速率的一半4.8Khz(好像标准的都应该这么设计,1、小周周童鞋高速我是符号速率的一半,2、有一个参考代码里调用函数,也是设计成符号速率的一半。其实我还犹豫,为什么不是(1+a)*符号速率/2),滤波器阶数33阶。

1、用fdatool实现平方根升余弦滤波器


成形滤波器和匹配滤波器

成形滤波器和匹配滤波器

导出M文件和系数,就可以完成设计.

2、调用函数 firrcos 实现平方根升余弦滤波器(对比一下,这个其实就是fdatool导出M文件时候的函数)

Fs = 38.4; % Sampling Frequency
N = 32; % Order
Fc = 4.8; % Cutoff Frequency
TM = 'Rolloff'; % Transition Mode
R = 0.3; % Rolloff
DT = 'Normal'; % Design Type
Beta = 0.5; % Window Parameter
win = kaiser(N+1, Beta);
b = firrcos(N, Fc/(Fs/2), R, 2, TM, DT, [], win);

b = firrcos(NUM_TAPS, CUT_OFF_FREQ, .3, AUDIO_FS, 'rolloff');

3、调用函数 rcosfir实现平方根升余弦滤波器

psf=rcosfir(R,NT,rate,T,'filt_type');

下面详细介绍用rcosfir函数实现该滤波器的方法。

rcosfir是升余弦滚降滤波器的函数,其中:

R:滚降系数(0和1之间),滚降系数越大,PSF的拖尾衰减越快,对定位时精度要求越低。 R = 0.3

NT:是个标量,或者长度为2的向量(n_t(1),n_t(2))。若为标量,相当于(-n_t,n_t)的向量。它和rate一起确定PSF的长度。等于(n_t(2) - n_t(1))*rate +1. NT = 4,则N = (4+4)*4 +1 = 32;

rate:输入符号的频率是1/T,则输出符号的频率为1/T *rate。(rate理解为,调制后的码元,经过多少倍过采样后送入SRRC滤波器,如果经过了4倍过采样,则此处就是4)

T:输入符号的周期(原始符号周期,没有经过过采样的)。T = 9.6k

filt_type:加窗类型。'sqrt'意思是,该滤波器设计为平方根升余弦滚降滤波器。

注意,这个设计和前面的不一样,因为,我没有添加窗函数,后面再研究。


matlab中,有 了滤波器系数,怎么画频谱图?有两种办法

1、直接调用函数 freqz (B,A)系统函数为 H = B/A 。

成形滤波器和匹配滤波器

这两个图是用 freqz 画出来的,但是这个单位怎么转化为频率呢?横坐标pi rad/sample怎么转化为HZ?

答:1对应PI , 其他如0.5对应0.5PI, W = 0.5PI,r然后根据w = 2*PI*Fc /Fs 得到 0.5PI =2*PI*Fc /Fs ,化简得 飞= 0.5 *Fs/2。

2、画频率密度函数

Hs=spectrum.periodogram;
figure(5);
Fs=1/T; %原始数据的采样率
psd(Hs,psf,'Fs',Fs*rate); %psf就是时域的数,Fs*rate注意,如果有过采样,要乘以过采样值

我现在的设计是19.2KBIT/S 的数据速率,传输在25KHZ的带宽(射频)上,则么用?

分析:那前面所讲的 ”那么如何用matlab设计平方根升余弦滤波器呢?“是标准的一套设计方法,没有问题。但是,按照截止频率基本上设计为符号速率的一半,即9.6K/2 = 4.8K。经过上变频之后,这里的带宽也就是9.6Khz,明显和25KHZ差很多,不满足要求啊。经过分析,不按照上面设计此滤波器的标准方案来,将截止频率加大试试。

成形滤波器和匹配滤波器

本来截止频率应该是4.8K 的,这里设计成为9.6K,看时域的图,也能满足插值4倍以后,中间每3个点之后就会归零,不会产生码间串扰。只是中间会不会多采样一个点出来?会造成什么影响就不知道了。

从频率的角度来看,带宽加大了,我在http://baike.so.com/doc/1698282-1795657.html中找到这样一段:


成形滤波器和匹配滤波器

所以,我加大了带宽,码间串扰实际上会变小。呵呵,也说不明白所以然,就这么设计吧。反正是带宽加大没问题,减小就肯定不对了,最起码要满足奈奎斯特带宽。

该滤波器到底用在系统的哪个地方?紧接调制?还是需要插值?如果是插值,插多少合适?要紧挨着上变频吗?下面是别人的系统设计,看看。

成形滤波器和匹配滤波器


成形滤波器和匹配滤波器

所以,应该是先插值一定倍数之后,再进行成形滤波。基本上插值倍数都不是很大,通常是4倍。

过采样的数字信号处理起来对低通滤波器的要求相对较低,如果不过采样,滤波器设计的过渡带需要很陡峭,指标会很严格