matlab中step_使用MATLAB中bertool进行通信仿真
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演示系统,基于Matlab的通信原理演示系统的设计与应用
基于 Matlab的通信原理演示系统的设计与应用 李 强 , 明 艳 , 吴坤君 (重庆邮电大学 通信学院 , 重庆 400065) 摘 要 : 利用 Matlab图形用户界面的开发环境和强大的通信仿 ...
- [MATLAB]从已知矩阵中取出子阵
首先要知道冒号表示法,如下: EX: 如上有4×6矩阵,假设我们要取出第一行,第二行,第四行,则可以有B=A([1 2 4],:) 假设要取出第一行,第二行,第四行的1-2列和4-6列,可以有B=A( ...
- 怎么把dll库写成MATLAB接口,如何在Matlab中应用动态连接库接口技术
1 引言 Matlab是当前应用最为广泛的数学软件,具有强大的数值计算.数据分析处理.系统 分析.图形显示甚至符号运算等功能.利用这一完整的数学平台,用户可以快速实现十分 复杂的功能,极大地提高工程分 ...
- matlab fft simulink,在Simulink中复制MATLAB的FFT?
很抱歉也许不准确地说出这个问题,但我对Simulink和Stack都很新 . 我正试图在simulink中处理语音信号,就像我在Matlab中所做的那样,我的输出有问题 . 在Matlab中,FFT看 ...
- matlab变量区表示函数,MATLAB中的工作区,变量和函数
本文概述 工作空间 工作区包含我们在MATLAB中工作时创建的所有变量. 每当我们为变量分配值时, 它都会自动在工作空间中获取空间. 关闭环境后, 工作空间变量将消失, 因此请将这些变量保存在文件中以 ...
- 用matlab求残余误差,matlab在测量误差分析中的应用
matlab在测量误差分析中的应用 MATLAB在测量误差分析中的应用 在技术测量中,按照误差的特点与性质,误差可分为:系统误差,粗大误差和随机误差.在假定不含有系统误差的情况下,可借助MATLAB对 ...
- matlab语法手册下载,MATLAB及其在理工课程中的应用指南 第4版.pdf
作 者 :陈怀琛 出版发行 : 西安:西安电子科技大学出版社 , 2018.02 ISBN号 :978-7-5606-4737-1 页 数 : 262 原书定价 : 39.00 开本 : 16开 主题 ...
- python中numpy与matlab的对应关系
详见以下两篇博文 (1) python中numpy与matlab的对应关系 (2)https://blog.csdn.net/ouening/article/details/546679 ...
- matlab yalmip安装教程,如何在matlab路径中安装yalmip Matlab R2014a添加yalmip图文教程
yalmip是什么?可以说,yalmip是一位"集大成者",它不仅自己包含基本的线性规划求解算法,比如linprog(线性规划).bintprog(二值线性规划).bnb(分支界定 ...
最新文章
- 动手写 framebuffer 画点、划线程序 (七)
- Sratch-gui 中文文档
- JAVA——基于HttpClient的全国大学英语四、六级考试(CET4CET6)[2019年下半年]查询DEMO
- mysql 5.6 5.7不兼容_同一条sql在mysql5.6和5.7版本遇到的问题。
- java备份mysql的单个表_MySQL 使用java备份某张表的操作
- 浅谈跨平台框架 Flutter 的优势与结构 1
- [转]java中的io笔记
- (4)Jquery1.8.3快速入门_基本选择器
- 如何运行python代码将各个表格的信息集合在一起_如何利用Python编程批量处理Excel来提高日常工作效率!...
- 九九乘法表——C语言
- linux 升级内核 声卡 失效,Deepin 20升级后系统无声音的另一种解决方案
- 【毕设论文——必修篇】开题报告要写些什么?这里有参考模板
- java过滤器定义_Java ---Filter过滤器
- 如何通过电感+MOS管实现BUCK降压和Boost升压
- 大型软件设计——进度报告
- CRC-16/MODBUS的高低位之说
- 电话自动拨号自动录音
- 10G 网络变压器 万兆以太网技术
- 一个资深测试员的感悟
- CPU分几核几核的是什么意思?
热门文章
- who killed my time?
- 用Python做科学计算
- java十进制输出_JAVA输入一个十进制数N,输出r进制的数
- python构造和析构_python魔法方法 构造和析构实例讲解
- 一个页面区分管理者和普通用户如何设计_电商系统:优惠券原型设计说明(二)...
- oracle 丁勇 从零开始学_8.3.1 多表查询分类
- java activemq demo_Spring与ActiveMQ的整合的完整demo
- python与数学的故事_我与数学的故事作文800字
- php td内容换行,table单元格内容过多换行显示
- android studio项目总结,android studio 3.0 升级 项目遇到的问题及更改思路(问题小结)...