均衡 BPSK 信号
使用具有最小均方 (LMS) 算法的线性均衡器均衡 BPSK 信号。
生成随机二进制数据并应用 BPSK 调制。
M = 2; data = randi([0 1],1000,1); modData = pskmod(data,M);
对调制信号应用二抽头静态衰落并添加 AWGN 噪声。
rxSig = conv(modData,[0.02+0.5i; 0.05]); rxSig = awgn(rxSig,30);
创建一个线性均衡器 System object™,配置为使用 LMS 自适应算法、8 个抽头、0.1 步长,并将第 4 个抽头作为参考抽头。将星座图设置为与发射信号的调制匹配。
lineq = comm.LinearEqualizer( ... NumTaps=8, ... StepSize=0.1, ... Constellation=complex([-1 1]), ... ReferenceTap=4)
lineq =
comm.LinearEqualizer with properties:
Algorithm: 'LMS'
NumTaps: 8
StepSize: 0.1000
Constellation: [-1.0000 + 0.0000i 1.0000 + 0.0000i]
ReferenceTap: 4
InputDelay: 0
InputSamplesPerSymbol: 1
TrainingFlagInputPort: false
AdaptAfterTraining: true
InitialWeightsSource: 'Auto'
WeightUpdatePeriod: 1
均衡接收信号 rxSig。使用前 200 个数据位作为一个训练序列。显示在均衡前后接收信号的星座图。
trSeq = modData(1:200); [eqSig,err] = lineq(rxSig,trSeq); constdiag = comm.ConstellationDiagram( ... NumInputPorts=2, ... ChannelNames={'Before equalization','After equalization'}, ... ReferenceConstellation=pskmod([0 M-1],M)); constdiag(rxSig(400:end),eqSig(400:end))

绘制误差估计的幅值。如误差信号的减小和稳定所示,均衡在不到 200 位内收敛。
plot(abs(err)) title('Error Estimate') xlabel('Bits') ylabel('Amplitude (V)')
