使用。来纠正符号定时和频率偏移误差comm.SymbolSynchronizer
和comm.CarrierSynchronizer
系统对象。
初始化仿真参数。
M = 16;%调制顺序nSym = 2000;数据包中的符号数sps = 2;每个符号百分比样本spsFilt = 8;每符号%的样品过滤器和信道spsSync = 2;用于同步器的每个符号%采样lenFilt = 10;% RRC滤波器长度
为发射机和接收机创建一对匹配的根凸起余弦(RRC)滤波器系统对象。
txfilter = comm.RaisedCosineTransmitFilter ('FilterSpanInSymbols'lenFilt,…“OutputSamplesPerSymbol”spsFilt,“获得”、sqrt (spsFilt));rxfilter = comm.RaisedCosineReceiveFilter ('FilterSpanInSymbols'lenFilt,…“InputSamplesPerSymbol”spsFilt,“DecimationFactor”spsFilt / 2,“获得”、sqrt (1 / spsFilt));
创建一个相频偏移系统对象来引入100 Hz的多普勒频移。
多普勒= comm.PhaseFrequencyOffset (“FrequencyOffset”, 100,…“PhaseOffset”45岁的“SampleRate”1 e6);
创建一个可变延迟系统对象来引入时间偏移量。
varDelay = dsp.VariableFractionalDelay;
创建载波和符号同步器系统对象,以分别校正多普勒频移和定时偏移。
carrierSync = comm.CarrierSynchronizer (“SamplesPerSymbol”, spsSync);symbolSync = comm.SymbolSynchronizer (…“TimingErrorDetector”,早期的后期(non-data-aided)”,…“SamplesPerSymbol”, spsSync);
创建星座图系统对象以查看结果。
refConst = qammod (0: M - 1 M,“UnitAveragePower”,真正的);cdReceive = comm.ConstellationDiagram (“ReferenceConstellation”refConst,…“SamplesPerSymbol”spsFilt,“标题”,接收信号的);cdDoppler = comm.ConstellationDiagram (“ReferenceConstellation”refConst,…“SamplesPerSymbol”spsSync,“标题”,“频率校正信号”);cdTiming = comm.ConstellationDiagram (“ReferenceConstellation”refConst,…“SamplesPerSymbol”spsSync,“标题”,“的频率和定时同步信号”);
主处理回路:
生成随机符号并应用QAM调制。
滤除调制信号。
应用频率和时间偏移。
将发送的信号通过AWGN信道。
过滤接收到的信号。
校正多普勒频移。
校正定时偏移。
为数据= randi([0 M-1],nSym,1);modSig = qammod(数据、米“UnitAveragePower”,真正的);txSig = txfilter (modSig);txDoppler =多普勒(txSig);txDelay = varDelay (txDoppler k / 15);rxSig = awgn (txDelay 25);rxFiltSig = rxfilter (rxSig);rxCorr = carrierSync (rxFiltSig);rxData = symbolSync (rxCorr);结束
绘制所接收的信号的星座图,频率校正的信号,以及频率和定时同步信号。特定星座点不能在所接收的信号被识别,并且可以仅部分地确定在所述频率校正的信号。然而,时序和频率同步信号对准与预期QAM星座点。
cdReceive (rxSig)
cdDoppler (rxCorr)
cdTiming (rxData)