MATLAB函数——rcosdesign

rcosdesign:升余弦 FIR 脉冲整形滤波器设计


语法

b = rcosdesign(beta,span,sps)
b = rcosdesign(beta,span,sps,shape)


说明

b = rcosdesign(beta,span,sps) 返回系数 b,该系数对应于具有由 beta 指定的衰减因子的平方根升余弦 FIR 滤波器。滤波器被截断在 span 个符号范围内,并且每个符号周期都包含 sps 个样本。 滤波器的阶次,也即 sps * span 必须是偶数。滤波器的能量为 1。举例

b = rcosdesign(beta,span,sps,shape) 当将 shape 设置为 sqrt 时,将返回根升余弦滤波器;当将 shape 设置为 normal 时,将返回升余弦 FIR 滤波器。举例


示例


设计根升余弦滤波器

假定滚降系数为 0.25。将过滤器截断为 6 个符号,并用 4 个样本表示每个符号。 验证 sqrtshape 参数的默认值。

h = rcosdesign(0.25,6,4);
mx = max(abs(h-rcosdesign(0.25,6,4,'sqrt')))
mx = 0
fvtool(h,'Analysis','impulse')

设计根升余弦滤波器


升余弦和根升余弦滤波器的脉冲响应

将升余弦滤波器与根升余弦滤波器进行比较。一个理想的(无限长)升余弦脉冲整形滤波器等效于两个级联的理想的根升余弦滤波器。 因此,FIR 升余弦滤波器的脉冲响应应类似于与其自身卷积的根升余弦滤波器的脉冲响应。

设计一个衰减为 0.25 的升余弦滤波器。指定此过滤器跨越 4 个符号,每个符号 3 个样本。

rf = 0.25;
span = 4;
sps = 3;

h1 = rcosdesign(rf,span,sps,'normal');
fvtool(h1,'impulse')

升余弦滤波器
升余弦滤波器在 sps 的整数倍处具有零值点。因此,它满足无码间串扰(ISI)的 Nyquist 准则。但是,根升余弦滤波器没有这样的特性:

h2 = rcosdesign(rf,span,sps,'sqrt');
fvtool(h2,'impulse')

跟升余弦滤波器
将根升余弦滤波器与自身进行卷积。在最大值处截断脉冲响应,使其长度与 h1 相同。使用最大值归一化响应。然后,将卷积后的根升余弦滤波器与升余弦滤波器进行比较。

h3 = conv(h2,h2);
p2 = ceil(length(h3)/2);
m2 = ceil(p2-length(h1)/2);
M2 = floor(p2+length(h1)/2);
ct = h3(m2:M2);

stem([h1/max(abs(h1));ct/max(abs(ct))]','filled')
xlabel('Samples')
ylabel('Normalized amplitude')
legend('h1','h2 * h2')

升余弦和根升余弦滤波器的脉冲响应比较
卷积响应的长度是有限的,因此根升余弦滤波器与自身进行卷积得到的结果会与升余弦滤波器不一致。增加 span 可以在响应之间获得更紧密的一致,并更好地符合 Nyquist 准则。


将信号通过升余弦滤波器

本例说明如何使信号通过根升余弦滤波器。

指定过滤器参数。

rolloff = 0.25;     % 滚降因子
span = 6;           % 滤波器宽度(码元数)
sps = 4;            % 每个码元的样本数

生成根升余弦滤波器的系数。

b = rcosdesign(rolloff, span, sps);

生成双极性数据向量。

d = 2*randi([0 1], 100, 1) - 1;

上采样并过滤数据以进行脉冲整形。

x = upfirdn(d, b, sps);

添加噪声。

r = x + randn(size(x))*0.01;

对接收到的信号进行滤波和下采样以进行匹配滤波。

y = upfirdn(r, b, 1, sps);

有关如何使用根升余弦滤波器对信号进行插值和抽取的信息,请参见使用 RRC 滤波器进行插值和抽取(Communications Toolbox)。


输入参数


beta - 滚降因子

滚降系数,指定为为不大于 1实非负标量。滚降系数决定滤波器的多余带宽。 滚降因子为 0 时为矩形滤波器(brick-wall filter), 滚降因子为 1 时为纯升余弦滤波器。

数据类型double | single


span - 码元数

码元数应,指定为正整数标量

数据类型double | single


sps - 每个码元的样本数

每个码元的样本数(过采样因子),指定为正整数标量

数据类型double | single


shape - 升余弦窗的形状

升余弦窗的形状,指定为 normalsqrt


输出参数


b - FIR 滤波器系数

升余弦滤波器的系数,以列向量的形式返回。

数据类型double | single


提示

  • 如果您拥有 Communications Toolbox™ 软件的许可证,则可以执行具有流传输行为的多速率升余弦滤波。为此,请使用 System object™ 滤波器——comm.RaisedCosineTransmitFiltercomm.RaisedCosineReceiveFilter

参考

[1] Tranter, William H., K. Sam Shanmugan, Theodore S. Rappaport, and Kurt L. Kosbar. Principles of Communication Systems Simulation with Wireless Applications. Upper Saddle River, NJ: Prentice Hall, 2004.


扩展功能


C/C++ 代码生成

使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

用法说明和限制:

所有输入必须为常数。 如果表达式或变量的值不变,则也允许使用。


另请参阅

gaussdesign

主题

用 RRC 滤波器进行插值和抽取(Communications Toolbox)


在 R2013b 中推出


原文参考:https://ww2.mathworks.cn/help/signal/ref/rcosdesign.html

猜你喜欢

转载自blog.csdn.net/weixin_43870101/article/details/106794354