✅ 一、什么是导频极性序列?
导频极性序列是一串长度为 127 的 ±1 序列,用于让每个 OFDM 符号中的导频子载波发生 ±1 的变化(即反转或不反转),增强鲁棒性。
它是由一个简单的伪随机序列生成器(线性反馈移位寄存器,LFSR)产生的,但它是标准里写死的序列,接收机完全知道。
✅ 二、用途和目的
- 避免导频恒定不变而引起周期性频谱泄露
- 增强频偏、相位漂移估计的效果
- 提高多符号平均时导频识别的随机性(抗周期干扰)
✅ 三、在哪些子载波上使用?
在 802.11a/n 系统的每个 OFDM 符号中,4 个导频子载波使用该极性序列(分别在位置 -21, -7, +7, +21)。
每个导频子载波的符号是:
Pk[n]=Pk⋅polarity[n] P_k[n] = P_k \cdot \text{polarity}[n] Pk[n]=Pk⋅polarity[n]
其中:
- PkP_kPk:该导频子载波的“静态值”(±1)
- polarity[n]\text{polarity}[n]polarity[n]:当前第 nnn 个 OFDM 符号对应的极性序列值(±1)
✅ 四、极性序列怎么得来的?
它是一个 长度 127 的伪随机序列,由如下 LFSR 生成:
-
多项式:
x7+x4+1 x^7 + x^4 + 1 x7+x4+1
-
初始状态:全 1(即
1111111
) -
序列周期:127
-
输出:±1(即 0 映射为 +1,1 映射为 -1)
📘 标准中直接定义了该极性序列的前 127 个值(按 OFDM 符号编号顺序)
✅ 五、序列表(前 10 项)
符号编号 nnn | 极性值 polarity[n]\text{polarity}[n]polarity[n] |
---|---|
0 | +1 |
1 | +1 |
2 | +1 |
3 | -1 |
4 | +1 |
5 | +1 |
6 | -1 |
7 | -1 |
8 | +1 |
9 | -1 |
…
这个序列一共 127 项,然后循环使用:
第 128 个 OFDM 符号使用的是序列第 1 项。
✅ 六、在接收端如何用?
- 接收机知道当前是第几个 OFDM 符号
- 查表获得
polarity[n]
- 将接收的导频符号除以该极性因子(或在接收前乘 conjugate)
- 得到标准的 ±1 导频,参与相位追踪或频偏估计
✅ 七、MATLAB 代码生成(可直接跑):
% 生成导频极性序列
lfsr = ones(1,7); % 初始状态
polarity = zeros(1,127);
for i = 1:127
new_bit = xor(lfsr(4), lfsr(7));
polarity(i) = lfsr(7); % 输出位
lfsr = [new_bit lfsr(1:6)];
end
% 映射到 ±1
polarity = 1 - 2*polarity;
✅ 总结一句话:
导频极性序列是一个长度为 127 的 ±1 伪随机序列,用于让导频符号在不同 OFDM 符号中发生“翻转”变化。它是公开、预定义的,接收端可以完全同步计算出该极性序列。