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);
设置范围 计算RS编码增益。初始化错误统计矩阵。
ebnoVec = (3:0.5:8)';ebnoVecCodingGain = ebnoVec + 10*log10(K/N);占RS编码增益errorStats = 0 (length(ebnoVec),3);
估计每一个的误码率 价值。模拟运行到100个错误或 遇到比特。主要的仿真回路处理包括编码、调制、解调和解码。
为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代码改进了 达到 误码率约为1.2 dB。
semilogy (ebnoVecCodingGain errorStats (: 1)," b *’,...ebnoVecCodingGain berCurveFit,“c -”ebnoVecCodingGain berwCoding,“r”、ebnoVec berNoCoding) ylabel (“方方面面”)包含(“Eb /不(dB)”)传说(“RS编码误码率”,“曲线拟合”,“编码理论”,“无编码理论”网格)