使用该方法修正符号定时和频率偏移错误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));
创建一个相位频率偏移System对象来引入100hz的多普勒频移。
多普勒= comm.PhaseFrequencyOffset (“FrequencyOffset”, 100,...“PhaseOffset”45岁的“SampleRate”1 e6);
创建一个变量delay System对象来引入定时偏移。
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通道传输传输的信号。
过滤接收到的信号。
修正了多普勒频移。
修正了定时偏差。
为k = 1:15 data = 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)