rcos设计
具有"升余弦"型特性的FIR脉冲整形滤波器的设计。
库::`工程师`
争论
输入参数
# 贝塔 — 下降的陡峭程度
+
一个真正的非负标量
Details
下降的斜率,作为真正的非负标量给出,不超过 1. 下降的陡度决定了滤波器的多余带宽。 下降的零斜率对应于具有窄轮廓的滤波器,而单斜率对应于纯升高的余弦。
| 数据类型 |
|
# 跨度 — 字符数
+
正整数标量
Details
指定为正整数的字符数。
| 数据类型 |
|
# sps — 每个符号的计数数
+
正整数标量
Details
每个符号周期的采样数(过采样系数),设为正整数。
| 数据类型 |
|
例子:
使用平方根法设计具有"凸起余弦"类型特征的滤波器
Details
我们将指出下降的陡峭程度等于 0.25. 将过滤器截断为 6 让我们代表每个字符 4 通过倒计时。 让我们确保 "sqrt" -这是参数的值 形状 默认情况下。
import EngeeDSP.Functions: rcosdesign
h = rcosdesign(0.25, 6, 4)
mx = maximum(abs.(h - rcosdesign(0.25, 6, 4, "sqrt")))
0.0
n_max = 6 * 4 + 1
n = collect(1:n_max)
情节(n,impz(h),
seriestype=:茎,
标记=:圆,
标题="冲动反应",
xlabel="n(样本)",
ylabel="振幅",
传说=错误)
使用平方根法的正常FPC和fpc的脉冲特性
Details
让我们比较一个普通滤波器与"凸起余弦"类型(FPC)和使用平方根方法的FPC的特征。 一个理想的(无限长)正常脉冲产生FPC相当于两个理想的级联Fpc。 因此,正常FIR滤波器的脉冲响应应类似于使用自卷积平方根方法的滤波器的脉冲响应。
让我们创建一个陡峭下降的正常FPC 0.25. 让我们指出这个过滤器复盖 4 po符号 3 每个符号计数。
import EngeeDSP.Functions: rcosdesign
rf = 0.25
span = 4
sps = 3
h1 = rcosdesign(rf, span, sps, "normal");
n_max = span * sps + 1
n = collect(1:n_max)
plot(n, impz(h1),
seriestype = :stem,
marker = :circle,
title = "Impulse Responce",
xlabel = "n (samples)",
ylabel = "Amplitude",
legend = false)
对于整数值的整数值,正常筛选器的交点为零。 [参数:sps]. 因此,它满足零码间干扰的奈奎斯特准则。 但是,使用平方根法的滤波器不满足:
h2 = rcosdesign(rf, span, sps, "sqrt")
plot(n, impz(h2),
seriestype = :stem,
marker = :circle,
title = "Impulse Responce",
xlabel = "n (samples)",
ylabel = "Amplitude",
legend = false)
让我们使用平方根方法折叠过滤器本身。 我们将从最大值截断脉冲响应,使其长度与 h1. 我们使用最大值对特征进行归一化。 让我们比较使用平方根方法的折叠过滤器和普通过滤器。
import EngeeDSP.Functions: conv
h3 = conv(h2, h2, "same")
y = [h1/maximum(abs.(h1)) h3/maximum(abs.(h3))]'
n_max = (span * sps + 1) * 2
n = collect(1:n_max)
plot!(n, y,
seriestype = :stem,
fillrange = 0,
marker = :circle,
xlabel = "Samples",
ylabel = "Normalized Amplitude",
label = "h2 * h2")
折叠滤波器由于长度有限而与普通滤波器不匹配。 增加价值 [参数:span] 以获得响应之间的更精确匹配以及与奈奎斯特准则的更好匹配。
将信号通过具有"凸起余弦"类型特征的滤波器
Details
此示例演示如何使用平方根方法通过FPC传递信号。
指定筛选器参数。
rolloff = 0.25 # Rolloff factor
span = 6 # Filter span in symbols
sps = 4 # Samples per symbol
让我们使用平方根法生成FPC系数。
import EngeeDSP.Functions: rcosdesign
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)