gpt4 book ai didi

python - 使用 Python 和 Numpy 实现根升余弦 (RRC) 滤波器的简单方法

转载 作者:行者123 更新时间:2023-12-04 12:22:39 24 4
gpt4 key购买 nike

SciPy/Numpy 似乎支持许多过滤器,但不支持根升余弦过滤器。有没有一种技巧可以轻松创建一个而不是计算传递函数?近似值也可以。

最佳答案

commpy包中包含几个过滤器。返回变量的顺序在较早版本中切换(截至本次编辑,当前版本为 0.7.0)。安装,强调文字说明herehere .
以下是 QAM16 的 1024 个符号的使用示例:

import numpy as np
from commpy.modulation import QAMModem
from commpy.filters import rrcosfilter
N = 1024 # Number of symbols
os = 8 #over sampling factor
# Create modulation. QAM16 makes 4 bits/symbol
mod1 = QAMModem(16)
# Generate the bit stream for N symbols
sB = np.random.randint(0, 2, N*mod1.num_bits_symbol)
# Generate N complex-integer valued symbols
sQ = mod1.modulate(sB)
sQ_upsampled = np.zeros(os*(len(sQ)-1)+1,dtype = np.complex64)
sQ_upsampled[::os] = sQ
# Create a filter with limited bandwidth. Parameters:
# N: Filter length in samples
# 0.8: Roll off factor alpha
# 1: Symbol period in time-units
# 24: Sample rate in 1/time-units
sPSF = rrcosfilter(N, alpha=0.8, Ts=1, Fs=over_sample)[1]
# Analog signal has N/2 leading and trailing near-zero samples
qW = np.convolve(sPSF, sQ_upsampled)
下面是对参数的一些解释。 N是波特采样的数量。您需要的位数是样本的 4 倍(在 QAM 的情况下)。我做了 sPSF数组返回 N元素,以便我们可以看到带有前导和尾随样本的信号。见 Wikipedia Root-raised-cosine filter page参数说明 alpha . Ts是以秒为单位的符号周期, Fs是每 Ts 个过滤器样本的数量.我喜欢假装 Ts=1为简单起见(单位符号率)。然后 Fs是每个波特点的复数波形样本数。
如果您使用来自 rrcosfilter 的返回元素 0要获得采样时间索引,您需要在 Ts 中插入正确的符号周期和过滤采样率。和 Fs以正确缩放索引值。

关于python - 使用 Python 和 Numpy 实现根升余弦 (RRC) 滤波器的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14614966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com