1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJWblZ5v
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
通用滤波器多载波(Universal Filtered Multi-Carrier,UFMC)是一种新的非正交多载波调制技术,被认为是取代正交频分复用(OFDM),成为5G中某些通信场景下传输波形的候选方案之一。UFMC可以被看成是OFDM和滤波器组多载波(FBMC)的结合,同时保留了这两个波形技术的各自优点。UFMC主要应用在短数据包突发、低时延、宽同步的通信场景中。本文主要针对UFMC系统中的信道估计与均衡技术展开研究。首先阐述UFMC系统的基本原理,包括信号调制、发射、接收各个模块的实现及数学表达式。在此基础上,使用仿真软件搭建UFMC系统仿真平台。然后从抗时频偏差性能、峰均比、频谱效率、滤波器长度等角度对UFMC系统进行性能分析与结果仿真,并和OFDM进行对比,论证UFMC在物联网、传感网中的应用优势。关于UFMC系统的信道估计,先分析了UFMC符号在瑞利多径信道下的性能表现。UFMC的信道估计可以复用已有的OFDM信道。
4.部分源码
..................................................................
%Eye diagram
y1= eyediagram(EqualizedRxSymbols_UFMC,2);
y1.Name ='UFMC eye diagram';
y1.Position = [1180 500 350 200]
SER_UFMC = comm.ErrorRate;
rxSym = qamdemod(EqualizedRxSymbols_UFMC, 2^bitsPerSubCarrier, 'OutputType', 'integer', 'UnitAveragePower', true);
ser = SER_UFMC(symbolsIn2, rxSym);
BER_UFMC = comm.ErrorRate;
rxBits = qamdemod(EqualizedRxSymbols_UFMC, 2^bitsPerSubCarrier, 'OutputType', 'bit', 'UnitAveragePower', true);
ber_UFMC = BER_UFMC(inpData(:), rxBits);
%AWGN
rxSig_OFDM = awgn(RicianChanOut2, snrdB, 'measured');
hold on
constDiagRx_OFDM = comm.ConstellationDiagram('ShowReferenceConstellation', ...
false, 'Position', figposition([40 10 20 25]), ...
'Title', 'OFDM Pre-Equalization and filtering Symbols', ...
'Name', 'UFMC Reception', ...
'XLimits', [-0.05 0.05], 'YLimits', [-0.05 0.05]);
constDiagRx_OFDM(rxSig_OFDM)
% ODFM Receiver
rxSig_OFDM_EQ = rxSig_OFDM./RicianPathGains2;
rxSig_OFDM_EQD = ofdmdemod(rxSig_OFDM_EQ,numFFT,cpLen);
rxSim_OFDM_EQQ = rxSig_OFDM_EQD(offset+1:size(rxSig_OFDM_EQD)-offset);
constDiagRx_OFDM_EQ = comm.ConstellationDiagram('ShowReferenceConstellation', false, 'Position', figposition([60 10 20 25]), 'Title', 'OFDM Filtered channel Symbols', 'Name', 'OFDM Reception', 'XLimits', [-1.5 1.5], 'YLimits', [-1.5 1.5]);
constDiagRx_OFDM_EQ(rxSim_OFDM_EQQ)
y2=eyediagram(rxSim_OFDM_EQQ,2);
y2.Name ='OFDM eye diagram';
y2.Position = [1180 60 350 200];
SER_OFDM = comm.ErrorRate;
rxSym2 = qamdemod(rxSim_OFDM_EQQ, 2^bitsPerSubCarrier, 'OutputType', 'integer', 'UnitAveragePower', true);
ser_ODFM = SER_OFDM(symbolsIn2, rxSym2);
disp(['OFDM Reception, SER = ' num2str(ser_ODFM(1)) ' at SNR = ' num2str(snrdB) ' dB'])
BER_OFDM = comm.ErrorRate;
rxBits2 = qamdemod(rxSim_OFDM_EQQ, 2^bitsPerSubCarrier, 'OutputType', 'bit', 'UnitAveragePower', true);
ber_OFDM = BER_OFDM(inpData(:), rxBits2);
A434