win7下asp.net网站发布,网络设计原则是什么,找装修,扬州市江都区城乡建设局网站目录
一. 写在前面
二. 如何计算误码率
三. 带噪声的误码率分析
3.1 代码思路
3.2 MATLAB源代码及分析
四. 总结
4.1 输入参数
4.2 规定比特长度
4.3 特殊形式比较 一. 写在前面
#xff08;1#xff09;本文章主要讨论如何仿真误码率随着信噪比变化的图像
#…目录
一. 写在前面
二. 如何计算误码率
三. 带噪声的误码率分析
3.1 代码思路
3.2 MATLAB源代码及分析
四. 总结
4.1 输入参数
4.2 规定比特长度
4.3 特殊形式比较 一. 写在前面
1本文章主要讨论如何仿真误码率随着信噪比变化的图像
2本文章的源代码参考自MATLAB官方文件
3每行代码我都尝试写清楚含义非常适合初学者 二. 如何计算误码率
MATLAB代码及分析
%清除所有无关变量
clear;clc;close all;x[1 0;0 0;0 0;0 0];
%4行2列的矩阵一共8个元素y[0 0;0 0;0 0;1 1];
%4行2列的矩阵numerrs1biterr(x,y)
%计算有多少个位置比特不一致
%很明显结果为3
%biterr函数在无线通信中经常会用到numerrs2biterr(x,y,[],column-wise)
%每个矩阵都有两列比对每列有多少个元素不一样numerrs3biterr(x,y,[],row-wise)
%%每个矩阵都有四行比对每行有多少个元素不一样numerrs4biterr(x,y,[],overall)
%计算两个矩阵整个有多少个元素不一样
%跟最原始的numerrs1biterr(x,y)命令是一样的
输出结果 numerrs1 3
解释很明显x和y一共有3个位置比特不一样 numerrs2 2 1
解释第一列x和y有两个2位置不一样第二列有一个位置不一样 numerrs3 1 0 0 2
解释第一行有1个比特不一样第二行完全一样第三行完全一样第四行有2个比特不一样 numerrs4 3
解释很明显x和y一共有3个位置比特不一样 三. 带噪声的误码率分析
本代码是基于QAM调制的有关QAM调制相关的分析可看此篇文章
基于MATLAB的QAM调制与星座图附完整代码与分析-CSDN博客
3.1 代码思路
第一步随机产生二进制数据每k个为一组作为一个symbolk的选择取决于QAM调制数
第二步对数据符号进行QAM调制
第三步将调制后的信号输入到加性高斯白噪声AWGN信道中
第四步对接收到的信号进行解调
第五步将解调后的信号转为二进制数据
第六步计算出现误差的比特数
3.2 MATLAB源代码及分析
%清除所有无关变量
clear;clc;close all;M64;
%QAM调制阶数为64
%星座图中一共有64个点klog2(M);
%每个symbol包含的比特数EbNoVec(5:15);
%比特信噪比向量从5~15内取所有整数
%Eb代表每笔特信号的能量Energy bit
%No代表噪声的功率谱密度
%Eb/No为比特信噪比单位也是dBnumSymPerFrame100;
%一共产生100个QAM symbolssnrdBconvertSNR(EbNoVec,ebno,snr,BitsPerSymbolk);
%ebno代表energy per bit to noise power spectral density ratio (Eb/N0)
%snr代表信噪比
%对输入数据EbNoVec利用convertSNR函数将比特信噪比转为信噪比
%BitsPerSymbolk需要解释每个symbol包含的比特数berEstzeros(size(EbNoVec));
%初始化误码率为0注意误码率为向量for n1:length(snrdB)
%对每处信噪比的误码率均进行计算
%length代表snrdB的向量长度numErrs0;
%初始化误差比特数为0numBits0;
%初始化总传输比特数为0while numErrs200 numBits1e7
%要么出现错误比特数超过200个要么传输总的比特数超过10^7程序就会停止dataInrandi([0 1],numSymPerFrame*k,1);
%从0或1内随机选择比特数一共numSymPerFram*k行1列dataSymbit2int(dataIn,k);
%以k比特为一组将其转为10进制的数txSigqammod(dataSym,M);
%对信号dataSym进行QAM调制调制阶数为M
%默认编码方式为格雷码,发射信号rxSigawgn(txSig,snrdB(n),measured);
%对调制后的信号txSig输入到AWGN信道中加性高斯白噪声
%snrdB(n)代表信噪比向量的第n个数
%measured凸显根据信号与信噪比可计算对应的噪声水平rxSymqamdemod(rxSig,M);
%对接收到的信号rxSig进行解调解调阶数为MdataOutint2bit(rxSym,k);
%将信号从十进制转为二进制以k比特为一组nErrorsbiterr(dataIn,dataOut);
%计算调制前与调制后的错误比特数numErrsnumErrsnErrors;
%总的误差比特数numBitsnumBitsnumSymPerFrame*k;
%每循环一轮都会增加numSymPerFrame*k比特数end
%while语句的结束berEst(n)numErrs/numBits;
%计算误码率end
%for语句的结束berTheoryberawgn(EbNoVec,qam,M);
%不同的比特信噪比EbNoVec
%M-QAM调制计算理论上的误码率semilogy(EbNoVec,berEst,*)
%画半对数图横轴为EbNoVec纵轴为经过对数计算的berEst用*点表示
%一共11个点hold on
%画在同一个图上semilogy(EbNoVec,berTheory)
%半对数图grid
%出现格子legend(计算出的BER,理论上的BER)
%图像说明xlabel(Eb/No(dB))
%x轴说明ylabel(Bit Error Rate(BER))
%纵轴说明
运行结果 解释
随着比特信噪比从5dB增大到15dB误码率从降低到.理论曲线与实际计算的点是相符合的。 四. 总结
4.1 输入参数
计算误码率的标准MATLAB语法为
[number,ratio]biterr(x,y)
输入的x和y可以是向量也可以是矩阵。要求取值均非负。biterr函数会自动把x和y转为二进制的比特串来进行对比。
在输出的结果中number代表不一样的比特数量。
ratio代表误码率。 4.2 规定比特长度
如果使用的语句为
biterr(x,y,k)
其中k代表比较的比特长度。
当然通常我们是不会写的就默认k为最大的数所对应的比特长度。 4.3 特殊形式比较
还可以在语句的最后面添加“overall”或者“row-wise”或者“column wise”。具体看上面的代码比较好理解这里就不重复了。