主要内容

Reed-Solomon编码估计AWGN中QPSK的误码率

在AWGN信道上使用QPSK传输Reed-Solomon编码数据。对接收到的信号进行解调和解码,并收集误差统计。计算编码和非编码数据的理论误码率。绘制误码率结果以比较性能。

定义示例参数。

rng (1993);%种子随机数生成器可重复的结果M = 4;调制阶数bps = log2(M);每个符号的比特数%N = 7;% RS码字长度K = 5;% RS消息长度

创建调制器、解调器、AWGN通道和错误率对象。

pskModulator = com . pskModulator (“ModulationOrder”米,“BitInput”,真正的);pskDemodulator = com . pskDemodulator (“ModulationOrder”米,“BitOutput”,真正的);awgnChannel = com . awgnChannel (“BitsPerSymbol”个基点);errorRate = com . errorRate;

创建一个接受位输入的(7,5)Reed-Solomon编码器和解码器对。

rsEncoder = com . rsEncoder (“BitInput”,真的,“CodewordLength”N“MessageLength”、K);rsDecoder = com . rsDecoder (“BitInput”,真的,“CodewordLength”N“MessageLength”、K);

设置范围 E b / N 0 计算RS编码增益。初始化错误统计矩阵。

ebnoVec = (3:0.5:8)';ebnoVecCodingGain = ebnoVec + 10*log10(K/N);占RS编码增益errorStats = 0 (length(ebnoVec),3);

估计每一个的误码率 E b / N 0 价值。模拟运行到100个错误或 1 0 7 遇到比特。主要的仿真回路处理包括编码、调制、解调和解码。

i = 1:length(ebnoVec) awgnChannel。EbNo = ebnoVecCodingGain(i);重置(errorRate)errorStats(i,2) < 100 && errorStats(i,3) < 1e7 data = randi([0 1],1500,1);生成二进制数据encData = rsEncoder(data);% RS编码modData = pskModulator(encData);%调节rxSig = awgnChannel(modData);信号通过AWGN传递rxData = pskDemodulator(rxSig);%解调decData = rsDecoder(rxData);% RS解码errorStats(i,:) = errorRate(data,decData);收集错误统计信息结束结束

拟合曲线的误码率数据使用berfit.生成有或没有编码的QPSK性能的估计值bercoding而且berawgn功能。

berCurveFit = berfit(ebnoVecCodingGain,errorStats(:,1));berwCoding = bercoding(ebnoVec,“RS”“硬”, N, K,相移键控的米,“nondiff”);berNoCoding = berawgn(ebnoVec,相移键控的米,“nondiff”);

绘制RS编码的误码率数据,误码率数据的曲线拟合,有RS编码的理论性能,和没有RS编码的理论性能。(7,5) RS代码改进了 E b / N 0 达到 1 0 - 2 误码率约为1.2 dB。

semilogy (ebnoVecCodingGain errorStats (: 1)," b *’...ebnoVecCodingGain berCurveFit,“c -”ebnoVecCodingGain berwCoding,“r”、ebnoVec berNoCoding) ylabel (“方方面面”)包含(“Eb /不(dB)”)传说(“RS编码误码率”“曲线拟合”“编码理论”“无编码理论”网格)

图中包含一个轴对象。axis对象包含4个line类型的对象。这些对象代表了RS编码的误码率、曲线拟合、有编码的理论、无编码的理论。