主要内容

误码率分析

分析通信系统的误码率性能

描述

误码率分析app计算误码率(BER)为每比特能量与噪声功率谱密度比(Eb/N0).使用这个应用程序,你可以:

  • 为通信系统生成误码率数据并使用以下方法分析性能:

    • MATLAB蒙特卡罗仿真®函数和Simulink万博1manbetx®模型。

    • 选定类型的通信系统的理论封闭形式表达式。

    • 运行包含在MATLAB仿真函数或Simulink模型中的系统。万博1manbetx创建模拟系统的函数或模型后,将误码率分析应用程序迭代你的选择Eb/N0确定并收集结果。

  • 在一组坐标轴上绘制一个或多个误码率数据集。您可以将仿真数据与理论结果或来自一系列通信系统模型的仿真数据进行图形化比较。

  • 拟合一组模拟数据的曲线。

  • 绘制模拟数据的置信水平。

  • 将BER数据发送到MATLAB工作区或文件以进行进一步处理。

有关更多信息,请参见使用误码率分析App

打开误码率分析App

  • MATLAB工具条:在应用程序选项卡,在信号处理与通信,点击应用程序图标。

  • MATLAB命令提示符:输入bertool

例子

全部展开

生成AWGN中16-QAM链路误码率性能的理论估计。

打开误码率分析应用程序。

bertool

误码率分析应用掩码

在“理论”页签,将这些参数设置为指定的值:Eb/ N0范围0:10调制类型QAM,调制顺序16

通过单击绘制误码率曲线情节

使用自定义的MATLAB函数来模拟误码率。默认情况下,应用程序使用viterbisim.m模拟。

打开误码率分析应用程序。

bertool

蒙特卡罗选项卡,设置Eb/ N0范围参数1: .5:6.运行模拟并通过单击绘制估计的BER值运行

理论选项卡,设置Eb/ N0范围1:6并设置调制顺序4.通过选择启用卷积编码卷积.点击情节将误码率曲线的理论上界添加到图中。

中给出的模拟函数模板中添加代码仿真函数模板中运行的主题蒙特卡罗的标签。误码率分析

准备功能

中复制模板仿真函数模板主题到一个新的MATLAB文件中的MATLAB编辑器。使用文件名将文件保存在MATLAB路径下的文件夹中bertool_simfcn

将用于初始化参数或创建模拟中使用的对象的代码行放置在标记的模板部分中设置初始参数.这段代码将模拟变量映射到模板输入参数。例如,信噪比映射到EbNo

设置初始参数。Siglen = 1000;%每次试验的比特数M = 2;% DBPSK是二进制的snr = EbNo;%因为二进制调制创建一个ErrorRate计算器系统对象进行比较%解码后的符号转换为原始传输的符号。errorCalc = com . errorrate;

将核心模拟任务的代码放在已标记的模板部分中进行模拟.这段代码包括核心的模拟任务,在所有的设置工作已经执行。

msg = randi([0,M-1],siglen,1);生成消息序列txsig = dpskmod(msg,M);%调节hChan。SignalPower =...计算和分配信号功率(txsig * txsig) /长度(txsig);Rxsig = awgn(txsig,snr,“测量”);%添加噪音decodmsg = dpskdemod(rxsig,M);%解调berVec = errorCalc(msg, decomsg);计算误码率totErr = totErr + berVec(2);numBits = numBits + berVec(3);

将这两个代码部分插入模板后,将bertool_simfcn功能兼容误码率分析结果代码类似于下面的代码段。

函数[ber,numBits] = bertool_simfcn(EbNo,maxNumErrs,maxNumBits,varargin)参见BERTOOL和VITERBISIM。The MathWorks, Inc.版权所有初始化与退出条件相关的变量。totErr = 0;%观察到的错误数numBits = 0;%已处理的比特数设置模拟参数。---%——在这里插入代码。设置初始参数。Siglen = 1000;%每次试验的比特数M = 2;% DBPSK是二进制的。snr = EbNo;%因为二进制调制创建一个ErrorRate计算器系统对象进行比较%解码后的符号转换为原始传输的符号。errorCalc = com . errorrate;模拟直到错误数超过maxNumErrs%或处理的比特数超过maxNumBits。((totErr < maxNumErrs) && (numBits < maxNumBits))检查用户是否单击了BERTool的停止按钮。如果isBERToolSimulationStopped(变长度输入宗量{}):打破结束%——继续模拟。%——更新totErr和numBits。%——在这里插入代码。msg = randi([0,M-1],siglen,1);生成消息序列txsig = dpskmod(msg,M);%调节hChan。SignalPower =...计算和分配信号功率(txsig * txsig) /长度(txsig);Rxsig = awgn(txsig,snr,“测量”);%添加噪音decodmsg = dpskdemod(rxsig,M);%解调berVec = errorCalc(msg, decomsg);计算误码率totErr = totErr + berVec(2);numBits = numBits + berVec(3);结束%循环结束计算误码率。ber = totErr/numBits;

该函数具有用于指定应用程序和标量的输入EbNomaxNumErrs,maxNumBits由应用程序提供的误码率分析app是一个输入,因为该函数监视并响应app中的stop命令bertool_simfcn函数排除与绘图、曲线拟合和置信区间相关的代码,因为误码率分析App可以让你在不编写代码的情况下交互式地完成类似的任务。

使用Prepared函数

运行bertool_simfcn误码率分析应用程序。

打开误码率分析应用程序,然后选择蒙特卡罗选项卡。

输入如下参数:Eb/ N0范围0:10模拟环境MATLAB函数名bertool_simfcn错误数量5,比特数1 e8

误码率分析应用程序的蒙特卡洛选项卡中的参数设置。

点击运行

误码率分析应用程序计算结果,然后绘制它们。在这种情况下,结果似乎不是沿着平滑的曲线下降,因为模拟中每个值只需要5个误差EbNo

误差数设置为5时生成的DBPSK调制误码率图。

方法将曲线拟合到误码率图窗口中的点序列适合参数。

误码率分析应用程序的数据查看器窗格中列出的数据集

误码率分析App绘制拟合曲线,如图所示。

拟合曲线的DBPSK调制误码率图。

使用误码率分析的函数来计算误码率 E b / N 0 .该应用程序通过MATLAB®函数和Simulink®模型的蒙特卡罗模拟或选定类型的通信系统的理论封闭形式表达式分析性能。万博1manbetx的代码mpsksim.m函数提供了一个M-PSK模拟,您可以从蒙特卡罗应用程序的标签。

打开误码率分析从“应用程序”选项卡或运行bertool函数在MATLAB命令窗口。

蒙特卡罗选项卡,设置 E b / N 0 范围参数1:1:5函数名参数mpsksim

打开mpsksim编辑、设置功能M = 2,并保存修改后的文件。

运行mpsksim.m单击,完成配置运行蒙特卡罗标签在应用程序。

之后的应用程序模拟的集合 E b / N 0 点,通过选择更新BER数据集结果的名称simulation0误码率数据集字段和类型M = 2重命名结果集。BER图上的图例将标签更新为M = 2

更新的值mpsksim函数,重复此过程48,16.例如,这些图误码率分析app和BER图窗口显示结果为变化值。

并行信噪比扫描使用误码率分析应用程序

的默认配置为蒙特卡罗处理误码率分析应用程序自动使用并行池处理来处理单个 E b / N 0 当您有并行计算工具箱™软件,但用于处理您的模拟代码时:

  • 任何parfor模拟代码中的函数循环按标准执行循环。

  • 任何parfeval(并行计算工具箱)模拟代码中的函数调用是串行执行的。

  • 任何spmd(并行计算工具箱)模拟代码中的语句调用是串行执行的。

The MathWorks, Inc.版权所有

使用Simu万博1manbetxlink仿真模型在蒙特卡罗的标签。误码率分析将Simulink仿真结果的误码率性能与理论误码率结果进行比较。万博1manbetx

准备模型

通过输入打开模型doc_bpsk在MATLAB命令提示符。

doc_bpsk

万博1manbetxSimulink模型的BPSK调制仿真。

初始化MATLAB工作区中的参数,以避免使用未定义的变量作为块参数。

EbNo = 0;maxNumErrs = 100;maxNumBits = 1e8;

确保误码率分析的对话框,应用程序每次运行模拟时使用正确的噪声量AWGN信道块,并验证Es /不参数设置为EbNo

请注意

对于BPSK调制,E年代/N0等于Eb/N0

确保误码率分析应用程序使用正确的停止条件为每个迭代:

  • 控件的对话框错误率计算阻塞并验证目标错误数设置为maxNumErrs最大符号数设置为maxNumBits

  • 验证模拟停止时间设置为

启用误码率分析应用程序访问的BER结果错误率计算块计算,通过确保误码率变量名参数与变量名参数。到工作空间(万博1manbetx模型)控件的输出错误率计算块。

提示

选择到工作空间块从DSP系统工具箱™/ sink子库。有关更多信息,请参见通信系统模拟的工作区块配置

使用准备好的模型

运行doc_bpsk模型中的误码率分析应用程序。

打开误码率分析应用程序,然后选择蒙特卡罗选项卡。

输入如下参数:Eb/ N0范围0:9模拟环境万博1manbetx函数名doc_bpsk错误数量One hundred.,比特数1 e8

误码率分析应用程序的蒙特卡洛选项卡中的参数设置。

点击运行

误码率分析应用程序计算结果,然后绘制它们。

BSPK调制的误码率图。

将这些模拟结果与理论结果进行比较理论页中的误码率分析App和设置Eb/ N0范围0:9

为BPSK调制配置的误码率分析应用程序的理论选项卡。

点击情节

误码率分析app将理论曲线与之前的仿真结果一起绘制在误码率图窗口中。

BSPK调制的误码率图与理论结果曲线。

参数

理论

范围的Eb/N0用于计算误码率的值,指定为标量或向量。单位为dB。

例子:5:10指定对Eb/N0值超过范围[5,10],增量为1 dB。

用于计算误码率的信道类型,指定为情况下瑞利,或Rician.的瑞利而且Rician选项对应于平坦衰落通道。

通信链路的调制类型,指定为相移键控DPSKOQPSK帕姆QAM移频键控MSK的,或CPFSK

通信链路的调制顺序,指定为2481632,或64

选择此参数可启用输入数据的差分编码。

相关系数,指定为范围[- 1,1]内的实标量。

依赖关系

若要启用该参数,请设置调制类型移频键控

调制指数,指定为正的实标量。

依赖关系

若要启用该参数,请设置调制类型CPFSK

  • 选择此参数可启用输入数据的相干解调。

  • 清除此参数可启用输入数据的非相干解调。

依赖关系

若要启用该参数,请设置调制类型移频键控MSK的

估计理论误码率时使用的信道编码类型,指定为没有一个卷积,或

解调过程中的同步错误,指定为完美的同步归一化定时误差,或RMS相位噪声(rad)

  • 当你设置同步完美的同步在解调过程中没有遇到同步错误。

  • 当你设置同步归一化定时误差,可以将归一化计时误差设置为范围[0,0.5]的标量。

  • 当你设置同步RMS相位噪声(rad),可以将RMS相位噪声电平设置为非负标量。单位以弧度为单位

依赖关系

若要启用该参数,请设置调制类型相移键控调制顺序2,信道编码没有一个

解码决策方法用于解码接收的数据,指定为

依赖关系

若要启用该参数,请设置信道编码卷积或一组信道编码并设置编码类型一般

卷积码网格,指定为结构变量。方法可以生成此结构poly2trellis函数。

依赖关系

若要启用该参数,请设置信道编码卷积

误码率评估中使用的块编码类型,指定为一般汉明戈利,或Reed-Solomon

依赖关系

若要启用该参数,请设置信道编码

码字长度,指定为正整数。

依赖关系

若要启用该参数,请设置信道编码并设置编码类型一般

消息长度,指定为正整数,使K小于N

依赖关系

若要启用该参数,请设置信道编码并设置编码类型一般

的最小距离(NK)块代码,指定为正整数。

依赖关系

若要启用该参数,请设置信道编码并设置编码类型一般

蒙特卡罗

范围的Eb/N0用于计算误码率的值,指定为标量或向量。单位为dB。

例子:4:2:10指定对Eb/N0超过范围[4,10],以2 dB的增量。

模拟环境,指定为MATLAB万博1manbetx

要运行蒙特卡罗模拟的应用程序的MATLAB函数的名称。

依赖关系

若要启用该参数,请设置模拟环境MATLAB

为蒙特卡罗模拟运行的应用万博1manbetx程序的Simulink模型的名称。

依赖关系

若要启用该参数,请设置模拟环境万博1manbetx

包含误码率模拟数据的变量的名称。若要将BER模拟数据输出到MATLAB工作空间,可以将此变量名分配为变量名参数的值。到工作空间(万博1manbetx模型)块。

提示

选择到工作空间块从DSP系统工具箱/ sink子库。有关更多信息,请参见通信系统模拟的工作区块配置

依赖关系

若要启用此参数,请设置模拟环境万博1manbetx

在模拟停止之前要测量的误差数,指定为正整数。通常,要产生准确的误码率估计,100个测量误差就足够了。

在模拟停止之前要处理的比特数,指定为正整数。此参数用于防止模拟运行过长时间。

请注意

当达到错误数或比特数阈值时,蒙特卡罗模拟停止。

提示

  • 单击可以停止模拟停止在“蒙特卡罗模拟”对话框中。

    蒙特卡洛模拟进度对话框,其中有一个停止按钮

版本历史

R2006a之前介绍

全部展开

R2020b的行为发生了变化