一文理解matlab的成型滤波器设计

一文理解matlab的成型滤波器设计
成型滤波器 是在发送端将信号经过成形滤波器进行带限,使信号带宽匹配信道带宽。
(如果没有成型滤波。时域上0、1信号是矩形信号,频域得无限宽才能传输,没有这样的信道;而信号带限就会引入码间串扰,会导致接收信号波形失真。所以成型滤波)

rcosdesign

b = rcosdesign(beta,span,sps,shape)
用来模拟升余弦滤波器(成型滤波器)
beta:滚降系数,取值范围(0,1)
span:实际升余弦滤波器拖尾无限长,而matlab无限长时数据量很多,而且拖尾远处的值均接近于0,故截取一定长度,span是表示模拟的拖尾所能够影响的数据长度(原始数据的长度,未经采样的数据的长度)
sps:每个数据的采样点数
shape:可选参数。选择根升余弦sqrt还是升余弦normal
eg:

fir=rcosdesign(1,128,4);
 fvtool(fir,'Analysis','impulse');%滤波器可视化
 %拖尾影响的数据长度为128位,即左右各64位,每位数据采样点数为4,再加上本位数据,所以一共128*4+1=513个点数

upfirdn up上采样 fir滤波 dn下采样

x = upfirdn(data, fir, p,q);
data:原始数据
fir:滤波器
p:上采样q:下采样 上采样就是内插或插值 下采样就是一般意义上的采样,隔几个取一个值
upfirdn(xn,hn,length) 作用为把xn中的每个值乘以序列hn,然后移位相加,length表示了移位的长度。其中xn、hn的点数分别为N1、N2,输出点数为 N2+(N1-1)×length 。(不用下采样的话,可以不写q,或写1)
注意upfirden和upsample的区别。
VDB_burst_ups=upsample(VDB_burst,4);是原数据之间插入三个0.

fir=rcosdesign(1,128,4);
data = 2 * randi([0 1], 200, 1) - 1;
x = upfirdn(data, fir, 4,1);%因为fir中sps是4,所以这里p也设置为4,q默认1,或不写
plot(x);

代码里,N1=200,N2=513,length=4.
我自己写matlab爱细抠,比如这里的经过成型滤波器后数据点数怎样变化的,我觉着此文就可以解释清楚,关键是知道1设计的升余弦滤波器点数是怎样的,和span,sps的关系,2经过upfirdn后点数变化是怎样的(输出点数为 N2+(N1-1)×length)
参考:https://blog.csdn.net/lanluyug/article/details/80401943

补充2020.2.11:对比GPS接收机与D8PSK系统的一点理解
GPS扩频信号为什么不用成型滤波?
答:GPS一个数据码长度20ms,包含20个CA码周期,一个CA码周期1023个码,为保障1.023Mb/s的伪码速率,采样速率也得几倍于伪码速率。也就是说一个数据码得几千个数据点,那么有码间干扰就有吧,干扰相邻的一些点也没关系了。一累加再判决这点干扰也就不算什么了。
GPS接收机没有用到定时同步也是基于这个原因,点数太多了,也不用在最佳判决点上进行采样,况且后面有载波同步。

你可能感兴趣的:(matlab)