我正在开发一个 802.11a 解调器,该解调器在大多数情况下都可以工作,但有一个会导致间歇性错误的错误。我还没有完成对它的表征,但似乎问题出在我的均衡器块上。
802.11a是OFDM信号,每个OFDM符号有64个子信道。其中四个子信道是导频(已知数据),位于子信道 7、21、-7 和 -21。我使用导频来校正任何剩余的载波偏移(在导频中显示为恒定相位偏移)和时间偏移(显示为线性偏移 - 即相位偏移在 bin 0 处为 0,并且随着距离的增加而增长仓 0)。
我进行简单的平均以检测载波偏移相位,并在平均之前进行一些简单的操作以检测时间相位偏移(例如,将通道-21 乘以-1,将通道-7 乘以-3,以及将通道7 乘以3)。我故意遗漏了一些不需要的细节,但希望这能说明我正在做的事情的要点。
我的问题是角度的圆形性质可能会导致平均值对于某些值以灾难性的方式表现不佳。例如,想象一下平均和。从图形上很容易看出答案应该是或,但标准平均公式给出的答案是 0,与正确答案完全相反。
平均角度的正确方法是什么?
编辑:我会试着让我正在做的事情更清楚一点。在 FFT 的输出中有两种不同的“错误条件”。首先是载波偏移,它表现为恒定的相位偏移。
对于这种情况,如约翰建议的那样,平均笛卡尔引导值而不是角度是一个好主意。谢谢你。
第二个错误条件是时间偏移,表现为线性相位偏移。时间偏移越大,相位偏移的斜率越大。斜率也可以是负数,这取决于接收器是在它应该在的位置前面还是后面。
现在,由于它是严格线性的(原点经过零),理论上我可以仅从一名飞行员计算斜率。我将首先计算载波偏移相位偏移(即错误条件#1),将其减去,然后使用四个中的任何一个来计算斜率。这将完全避免平均。问题是噪声会使这些值跳来跳去,所以如果我使用所有四个值,我的估计要好得多——因此是平均值。
希望上面的图片清楚地表明我不能只取试验值并按原样平均它们——我必须修改它们以使它们成为常数 + 噪声。我通过将 -21 飞行员的角度乘以 -1,将 -7 飞行员乘以 -3,将 7 飞行员乘以 3,将 21 飞行员乘以 1 来做到这一点。因此它们与 21 飞行员的角度相等并且可以取平均值。
我不知道在笛卡尔系统中将向量的角度乘以常数(如“3”)的好方法,所以在我看来,我必须转换为极坐标,将角度乘以 -1, -3、3 和 1 分别转换回笛卡尔坐标,平均导频,然后转换回极坐标以获得相位偏移。虽然这是可行的,但如果可能的话,我想找到一个不那么笨拙的解决方案。