主要内容

QPSK和Matlab系统对象的OFDM

该示例显示了如何模拟其中信号是第一个QPSK的基本通信系统,然后经受正交频分复用。然后在解复用和解调之前通过添加白色高斯噪声通道的信号。最后,计算比特错误的数量。该示例展示了MATLAB®系统对象™的使用。

设置仿真参数。

m = 4;%调制字母表k = log2(m);%位/符号numsc = 128;%数量的OFDM子载波cplen = 32;%OFDM循环前缀长度maxbiterrors = 100;%最大比特错误数maxnumbits = 1E7;传输的最大比特数

构建模拟所需的系统对象:QPSK调制器,QPSK解调器,OFDM调制器,OFDM解调器,AWGN通道和错误率计算器。使用名称值对设置对象属性。

设置QPSK调制器和解调器,以便它们接受二进制输入。

qpskmod = comm.qpskmodulator('bitInpul',真的);qpskdemod = comm.qpskdemodulator('bitoup',真的);

根据仿真参数设置OFDM调制器和解调器对。

OFDMMOD = COMM.OFDMMODULATOR('fftlength',numsc,'cyclicprefixlength',cplen);OFDMDEMOD = COMM.OFDMDEMOMOMOMOULATOR('fftlength',numsc,'cyclicprefixlength',cplen);

设定noisemethod.AWGN通道对象的属性方差并定义varianceSource.属性使噪声功率可以从输入端口设置。

channel = comm.awgnchannel('noisemethod''方差'......'varianceource''输入端口');

设定resetInputport.财产真的在模拟期间启用错误率计算器要重置。

errorrate = comm.errorrate('resetInputport',真的);

使用信息功能的功能OFDMMOD.对象确定OFDM调制器的输入和输出尺寸。

OFDMDIMS = INFO(OFDMMOD)
OFDMDIMS =结构与字段:DataInputSize:[117 1]输出:[160 1]

确定数据子载波的数量Ofdmdims.结构变量。

numdc = ofdmdims.datainputsize(1)
numdc = 117

从数据子载波的数量和每个符号的比特数确定OFDM帧大小(以位)。

框架= [k * numdc 1];

根据所需的EB / No范围,每个符号的比特数以及数据子载波的数量与子载波总数的比率设置SNR向量。

EBNOVEC =(0:10)';SNRVEC = EBNOVEC + 10 * log10(k)+ 10 * log10(numdc / numsc);

初始化BER和错误统计数组。

Bervec = Zeros(长度(EBNOVEC),3);errorstats = zeros(1,3);

模拟EB / NO值范围内的通信链路。对于每个EB / NO值,模拟运行直到或maxbiterrors.记录或传输比特的总数超过maxnumbits.

为了m = 1:长度(EBNOVEC)SNR = SNRVEC(M);尽管errorstats(2)<= maxbiterrors && errorstats(3)<= maxnumbits datain = randi([0,1],帧质化);%生成二进制数据QPSKTX = QPSKMOD(数据);%应用QPSK调制txsig = OFDMMOD(QPSKTX);%应用OFDM调制PowerDB = 10 * log10(var(txsig));%计算TX信号功率Noisevar = 10. ^(0.1 *(PowerDB-SNR));%计算噪声方差rxsig = channel(txsig,noisevar);%通过嘈杂的频道传递信号QPSKRX = OFDMDEMOD(RXSIG);%申请OFDM解调dataout = qpskdemod(qpskrx);%应用QPSK解调errorstats = errorrate(数据,数据,0);%收集错误统计信息结尾Bervec(m,:) = errorstats;%保存BER数据errorstats = errorrate(日期,dataout,1);%重置错误率计算器结尾

使用Berawgn.用于确定QPSK系统的理论BER的功能。

Bertheory = Berawgn(Ebnovec,'psk',m,'nondiff');

绘制相同图表上的理论和模拟数据以比较结果。

图半径(EBNOVEC,Bervec(:,1),'*') 抓住Semilogy(Ebnovec,Bertheory)传奇('模拟''理论''地点''最好的')xlabel('EB / NO(DB)')ylabel('误码率') 网格抓住离开

图包含轴。轴包含2个类型的型号。这些对象代表仿真,理论。

观察模拟和理论数据之间存在良好的一致性。