QPSK和OFDM与MATLAB系统对象
本例演示如何模拟一个基本通信系统,其中信号首先被QPSK调制,然后进行正交频分复用。信号在被解复用和解调之前通过加性高斯白噪声信道。最后,计算误码数。该示例展示了MATLAB®System objects™的使用。
设置仿真参数。
M = 4;调制字母k = log2(M);%比特/符号numSC = 128;OFDM子载波数%cpLen = 32;% OFDM循环前缀长度maxBitErrors = 100;最大误码数maxNumBits = 1e7;最大传输比特数
构造仿真所需的系统对象:QPSK调制器、QPSK解调器、OFDM调制器、OFDM解调器、AWGN信道和错误率计算器。使用名称-值对设置对象属性。
设置QPSK调制器和解调器,使它们接受二进制输入。
qpskMod = com . qpskmodulator (“BitInput”,真正的);qpskDemod = com . qpskdemo解调器(“BitOutput”,真正的);
根据仿真参数设置OFDM调制器和解调器对。
ofdmMod = com . ofdmmodulator (“FFTLength”numSC,“CyclicPrefixLength”, cpLen);ofdmDemod = com . ofdm解调器(“FFTLength”numSC,“CyclicPrefixLength”, cpLen);
设置NoiseMethod
属性的AWGN通道对象方差
并定义VarianceSource
属性,以便可以从输入端口设置噪声功率。
通道= com . awgnchannel (“NoiseMethod”,“方差”,...“VarianceSource”,输入端口的);
设置ResetInputPort
财产真正的
使错误率计算器在模拟过程中重置。
errorRate = com . errorRate (“ResetInputPort”,真正的);
使用信息
的功能ofdmMod
对象,以确定OFDM调制器的输入和输出尺寸。
ofdmdim = info(ofdmMod)
ofdmDims =带字段的结构:DataInputSize: [117 1] OutputSize: [160 1]
方法确定数据子载波的数量ofdmDims
结构变量。
numDC = ofdmDims.DataInputSize(1)
numDC = 117
根据数据子载波的数量和每个符号的比特数确定OFDM帧大小(以比特为单位)。
frameSize = [k*numDC 1];
根据期望的Eb/No范围、每个符号的比特数以及数据子载波数与子载波总数的比值来设置信噪比向量。
EbNoVec = (0:10)';snrVec = EbNoVec + 10*log10(k) + 10*log10(numDC/numSC);
初始化误码率和错误统计数据数组。
berVec = 0(长度(EbNoVec),3);errorStats = 0 (1,3);
模拟Eb/No值范围内的通信链路。对于每个Eb/No值,模拟运行到任意一个为止maxBitErrors
是否被记录或总传输比特数超过maxNumBits
.
为m = 1:length(EbNoVec) snr = snrVec(m);而errorStats(2) <= maxBitErrors && errorStats(3) <= maxNumBits dataIn = randi([0,1],frameSize);生成二进制数据qpskTx = qpskMod(dataIn);采用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(dataIn,dataOut,0);收集错误统计信息结束berVec(m,:) = errorStats;保存误码率数据errorStats = errorRate(dataIn,dataOut,1);重置错误率计算器结束
使用berawgn
函数来确定QPSK系统的理论误码率。
n .理论;理论;理论;相移键控的米,“nondiff”);
将理论数据和模拟数据绘制在同一图形上,以比较结果。
图semilogy (EbNoVec berVec (: 1),‘*’)举行在semilogy (EbNoVec berTheory)传说(“模拟”,“理论”,“位置”,“最佳”)包含(“Eb /不(dB)”) ylabel (“误码率”网格)在持有从
模拟结果与理论数据吻合较好。