0

我想在 python 中旋转、缩放(标准化)和循环 Q 延迟(移位)QAM 坐标。

我编写了发送器和接收器函数来按给定值旋转和缩放输入星座(基于 DVB-T2 标准)

我遇到了循环 Q 延迟(也称为移位)的问题。给定标准通过dvb-t2 标准中的这个公式公式指定那些操作

我的发射器功能如下所示:

def transmitter_rotation_and_Qdelay(phase_deg, r_phasor, input_constelation, number_of_points_in_constelation): 
phasor_norm, phasor_mod = phasor_normalization(phase_deg, r_phasor) # function to change phazor to phasor_norm - e^jfi2 phasor_mod - r

g_out_array = np.zeros(number_of_points_in_constelation, dtype=complex) 
iterator = 0
for i in input_constelation:
    in_mod = np.abs(i)  # abs from input conselation point gives this r*e^jfi
    in_norm = i / in_mod  # in_norm - e^jfi
    g_out_array[iterator] = (in_norm * phasor_norm) * (in_mod * phasor_mod) # implementation of formula from standard
    iterator = iterator + 1

所以我的问题是:如何使用 python 正确执行星座转换以及如何执行反向操作?

编辑

一段时间后我发现,要实现上述公式,我只需要(我认为)在星座中移动复数。

我试过这样做:

    shifted_input_constelation = np.real(input_constelation) + np.roll(np.imag(input_constelation), 1)

这里出现问题。

移位数组将其值更改为

 0000 = {float64} -1.2649110640673518
 0001 = {float64} 0.0
 0002 = {float64} -1.8973665961010275
 0003 = {float64} -1.2649110640673518
 0004 = {float64} 0.0

有没有办法使用 numpy 的方法来移动数组中的复杂值?

4

0 回答 0