Main Content

rcosdesign

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

说明

示例

b = rcosdesign(beta,span,sps) 返回对应于平方根升余弦 FIR 滤波器的系数 b,其滚降因子由 beta 指定。该滤波器截断为 span 个符号,并且每个符号周期包含 sps 个采样。滤波器的阶数 sps*span 必须为偶数。滤波器能量为 1。

示例

b = rcosdesign(beta,span,sps,shape)shape 设置为 "sqrt" 时返回平方根升余弦滤波器,在 shape 设置为 "normal" 时返回普通升余弦 FIR 滤波器。

示例

全部折叠

指定滚降因子为 0.25。将滤波器截断为 6 个符号,并用 4 个采样表示每个符号。验证 "sqrt"shape 参数的默认值。

h = rcosdesign(0.25,6,4);
mx = max(abs(h-rcosdesign(0.25,6,4,"sqrt")))
mx = 0
impz(h)

比较普通升余弦滤波器和平方根余弦滤波器。理想(无限长)普通升余弦脉冲整形滤波器等效于级联形式的两个理想平方根升余弦滤波器。因此,FIR 普通滤波器的冲激响应应该类似于使用其自身进行卷积的平方根滤波器的冲激响应。

创建一个滚降为 0.25 的普通升余弦滤波器。指定该滤波器跨 4 个符号,每个符号 3 个采样。

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

h1 = rcosdesign(rf,span,sps,"normal");
impz(h1)

普通滤波器在 sps 的整数倍处有过零点。因此,它满足零符号间干扰的奈奎斯特准则。但是,平方根滤波器不满足该准则:

h2 = rcosdesign(rf,span,sps,"sqrt");
impz(h2)

将平方根滤波器与其自身进行卷积。从最大值开始向外截断冲激响应,使其长度与 h1 相同。使用最大值归一化响应。将卷积平方根滤波器与普通滤波器进行比较。

h3 = conv(h2,h2,"same");

stem(0:span*sps,[h1/max(abs(h1));h3/max(abs(h3))]',"filled")
xlabel("Samples")
ylabel("Normalized Amplitude")
legend("h1","h2 * h2")

卷积响应因其长度有限而与普通滤波器不吻合。增大 span,使响应更加一致,更符合奈奎斯特准则。

此示例说明如何使信号通过平方根升余弦滤波器。

指定滤波器参数。

rolloff = 0.25;     % Rolloff factor
span = 6;           % Filter span in symbols
sps = 4;            % Samples per symbol

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

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);

有关如何使用平方根升余弦滤波器对信号进行插值和抽取的信息,请参阅Interpolate and Decimate Using RRC Filter (Communications Toolbox)

输入参数

全部折叠

滚降因子,指定为不大于 1 的非负实数标量值。滚降因子确定滤波器的多余的带宽。零滚降对应于矩形滤波器,单位滚降则对应于纯升余弦滤波器。

数据类型: double | single

符号数量,指定为正整数标量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

每个符号的采样数(过采样因子),指定为正整数标量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

升余弦窗的形状,指定为 "normal""sqrt"

输出参量

全部折叠

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

数据类型: double

提示

  • 如果您有 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++ 代码。

版本历史记录

在 R2013b 中推出

另请参阅

主题