脉冲整形滤波器
脉冲整形滤波器往往在数字调制解调系统中使用,又称为匹配滤波器。这里介绍在Matlab中脉冲整形滤波器实现。
1.使用fdesign.pulseshaping
在matlab中可以使用fdesign.pulseshaping设计脉冲整形滤波器。具体如下所示:
%*************升余弦*******************************
d = fdesign.pulseshaping(8,'Raised Cosine','Ast,Beta',50,0.3);
H = design(d);
fvtool(H)
fvtool(H, 'impulse');
%*************高斯*******************************
d = fdesign.pulseshaping(8,'Gaussian','Nsym,BT',4,0.2);
滤波器形状和脉冲响应如下所示:
- 关键参数说明
主要有以下参数,
sps | 过采样率 |
shape | 滤波器类型,有升余弦、根升余弦和高斯 |
spec | Ast:stopband attenuation,阻带幅度,单位dB; Beta: 滚降系数,0~1; N : 滤波器阶数,必须为偶数,最终滤波器系数长度为N+1; Nsym: 在高斯滤波器时使用,表示码元阶数,默认为6,最终滤波器系数 长度为Nsym*sps+1,Nsym*sps必须为偶数。 BT: 在高斯滤波器时使用,表示3dB带宽,为正实数,默认为0.3 |
2.使用rcosdesign实现
使用方式如下:
b = rcosdesign(beta,span,sps,shape)
- 关键参数说明:
Beta: | 滚降系数,0~1; |
span: | 码元阶数 |
sps: | 过采样率,最终滤波器系数为span*sps+1, span*sps必须为偶数 |
shape: | 'sqrt':表示根升余弦滤波器,'normal':表示升余弦滤波器 |
输出的b则为滤波器系数。
假设需要滤波,则使用upfirdn,如下:
y = upfirdn(x, b, sps);
x为输入信号,b为滤波器,sps则为插值倍数;
如果想降低采样率,则如下使用:
y = upfirdn(x, b,1, sps);