我想在 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 的方法来移动数组中的复杂值?