概述
MATLAB中的Communication System Toolbox中的bertool图像化工具bertool提供了极为方便的通信仿真环境以测试仿真模型的误比特率性能,并且可以很好地和理论值进行对比。在MATLAB的命令行中输入bertool即可打开如下窗口:
以上篇文章的QPSK调制为例,讲解bertool的使用方法。首先切换到Monte Carlo Carlo选择栏,指定需要仿真的MATLAB文件,该MATLAB文件为一个自定义的函数,函数需要设置以下输入,包括Eb/N0值、停止条件,其中停止条件包括最大误比特数和最大比特数,当满足其中一个停止条件时,仿真循环停止。其中自定义仿真代码部分如下所示
function [ber, bits]=qpsk(EbNo, maxNumErrs, maxNumBits) % 输入参数及输出参数设置,需按模板书写
%% 初始化
persistent Modulator AWGN DeModulator BitError
if isempty(Modulator)
Modulator = comm.QPSKModulator('BitInput',true);
AWGN = comm.AWGNChannel;
DeModulator = comm.QPSKDemodulator('BitOutput',true);
BitError = comm.ErrorRate;
end
%% 相关仿真常数
FRM=2048;
M=4; k=log2(M);
snr = EbNo + 10*log10(k);
AWGN.EbNo=snr;
%% 仿真主循环
numErrs = 0; numBits = 0;results=zeros(3,1);
while ((numErrs < maxNumErrs) && (numBits < maxNumBits))
% 发射器
u = randi([0 1], FRM,1); % Random bits generator
mod_sig = Modulator.step(u); % QPSK Modulator
% 信道
rx_sig = AWGN.step(mod_sig); % AWGN信道
% 接收器
demod = DeModulator.step(rx_sig); % QPSK Demodulator
y = demod(1:FRM); % 输出bit
results = BitError.step(u, y); % 更新BER
numErrs = results(2);
numBits = results(3);
end
%% 重置误比特率统计模块
ber = results(1); bits= results(3);
reset(BitError);
编写好仿真文件后,对bertool中的参数进行如下设置:
仿真结束后会自动产生误比特率曲线如下:
将bertool的tab标签切到'Theoretical'下,填写Eb/N0的范围、信道类型、调制模式及信道编码即方便地得到该调制方式在何种信道类型及信道编码情况下的理论误比特率,参数填写如下:
最终可以得到在其他情况相同的情况下,仿真和理论误比特率的曲线图:
可以看出理论与仿真的误比特率曲线能够较好地重合,说明仿真部分代码无误,该工具主要解决了对各种仿真参数设置的麻烦,通过界面选择填写即可解决。
参考文献
- Understanding LTE with MATLAB
其中代码主要源自《Understanding LTE with MATLAB》,本文主要对其进行注释、分析与方便自己仔细理解代码思路,学习写文章的过程,后期将放上自己学习过程中写的其他一些分析与代码!!
欢迎大家评论、私信交流、批评与指正!!
最后
以上就是温暖白羊为你收集整理的matlab中step_使用MATLAB中bertool进行通信仿真的全部内容,希望文章能够帮你解决matlab中step_使用MATLAB中bertool进行通信仿真所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复