主要内容

biterr

误码数和误码率(BER)

描述

例子

数量= biterr(x, y中元素的无符号二进制表示x对于那些y.函数返回数量,比较中不同的比特数,以及,的比值数量到总比特数。函数决定了比较的顺序x而且y根据它们的大小。有关更多信息,请参见算法部分。

数量= biterr(x, yk还指定了k中每个元素的最大比特数x而且y.如果无符号二进制表示中的任何元素xy不仅仅是k数字,函数错误。

例子

数量= biterr(x, yk国旗指定一个国旗覆盖函数如何比较元素和计算输出的默认设置。有关更多信息,请参见算法部分。

数量个人= biterr(___的二进制比较结果x而且y为矩阵个人.您可以指定前面语法中的任何输入参数组合。

例子

全部折叠

创建两个二进制矩阵。

X = [0 0;0 0;0 0;0 0]
x =4×20 0 0 0 0 0 0
Y = [0 0;0 0;0 0;1 (1)
y =4×20 0 0 0 0 0 1 1

确定误码数。

数字= biterr(x,y)
Numerrs = 2

计算逐列错误的数量。

biterr(x,y,[],“列”
numerrs =1×21

计算逐行错误的数量。

biterr(x,y,[],一点的行操作的
numerrs =4×10 0 0 2

计算总体错误的数量。行为与默认行为相同。

biterr(x,y,[],“整体”
Numerrs = 2

解调一个有噪声的64-QAM信号并估计Eb/No值范围内的误码率(BER)。将误码率估计值与理论值进行比较。

设置仿真参数。

M = 64;调制阶数k = log2(M);每个符号的比特数%EbNoVec = (5:15)';% Eb/No值(dB)numSymPerFrame = 100;每帧QAM符号的百分比

初始化结果向量。

berEst = 0 (size(EbNoVec));

主处理循环执行这些步骤。

  • 生成二进制数据并转换为64元符号。

  • qam -调制数据符号。

  • 将调制信号通过AWGN信道传递。

  • 解调接收信号。

  • 将解调后的符号转换为二进制数据。

  • 计算误码数。

循环继续处理数据,直到遇到200个错误或传输1e7位。

n = 1:长度(EbNoVec)将Eb/No转换为信噪比snrdB = EbNoVec(n) + 10*log10(k);重置错误和位计数器数字errs = 0;numBits = 0;numErrs < 200 && numBits < 1e7生成二进制数据并转换为符号dataIn = randi([0 1],numSymPerFrame,k);dataSym = bi2de(dataIn);% QAM调制使用'灰色'符号映射txSig = qammod(dataSym,M);%通过AWGN通道rxSig = awgn(txSig,snrdB,“测量”);解调噪声信号rxSym = qamdemod(rxSig,M);将接收到的符号转换为比特dataOut = de2bi(rxSym,k);计算误码数errors = biterr(dataIn,dataOut);增加错误计数器和比特计数器number errs = number errs + nErrors;numBits = numBits + numSymPerFrame*k;结束估计误码率berEst(n) = numErrs/numBits;结束

确定理论误码率曲线使用berawgn函数。

n .理论;理论;理论;“qam”, M);

绘制估计误码率和理论误码率数据。估计的误码率数据点与理论曲线很好地对齐。

semilogy (EbNoVec大麦的一种,‘*’)举行符号学(EbNoVec,berTheory)“估计误码率”“理论误码率”)包含(“Eb /不(dB)”) ylabel (“误码率”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示估计误码率,理论误码率。

输入参数

全部折叠

要进行比较的输入,指定为单独的参数,如非负整数元素的向量或矩阵。函数转换的每个元素x而且y与它的无符号二进制表示进行比较。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

的输入元素的最大比特数x而且y,指定为正整数。中任何元素的二进制表示所需的比特数xy大于k,函数错误。

如果不设置k,函数将其设置为中最大元素的二进制表示中的位数x而且y

数据类型:|

标志,以覆盖函数的默认设置,指定为“整体”一点的行操作的,或“列”.Flag指定函数如何比较输入中的元素x, y然后计算输出。有关更多信息,请参见算法部分。

数据类型:字符串|字符

输出参数

全部折叠

误码数,返回为非负整数或整数向量。

数据类型:|

误码率,作为标量返回。是误码数,数量,到二进制表示中使用的总比特数。总比特数为k乘以输入中较小者的输入数x, y

每个单独的二进制比较的结果,作为一个矩阵返回,其维度是输入中较大的那些x而且y.每个元素指定了元素对中不同的比特数。有关更多信息,请参见算法部分。

数据类型:|

算法

全部折叠

根据大小比较输入

函数使用的大小x而且y来确定比较它们元素的顺序。

  • 如果输入是相同维度的矩阵,则该函数逐个元素比较输入。数量在本例中为非负整数。例如,参见图中的情况(a)。

  • 如果一个输入是一个矩阵,另一个输入是一个列向量,那么该函数将矩阵的每一列逐个元素与列向量进行比较。矩阵中的行数必须等于列向量的长度。换句话说,如果矩阵有维数——- - - - - -n,则列向量必须有维数1。例如,参见图中的情形(b)。

  • 如果一个输入是一个矩阵,另一个输入是一个行向量,那么该函数将矩阵的每一行逐个元素与行向量进行比较。矩阵的列数必须等于行向量的长度。换句话说,如果矩阵有维数——- - - - - -n,那么行向量的维数必须是1 × -n.例如,参见图中的情况(c)。

基于Flag比较输入

该表描述了如何根据的不同值计算输出国旗x在这个表中被认为是一个矩阵的大小y是多种多样的。

的大小y 国旗价值 比较类型 数量价值 总比特数
矩阵 “整体”(默认) 逐个元素 总误码数 k乘以元素的个数y
一点的行操作的 第Th行x第Th行y 列向量,其元素表示每一行的误码 k乘以元素的个数y
“列” 的第Th列x的第Th列y 行向量,其元素表示每列的误码 k乘以元素的个数y
行向量 “整体” y每一行x 总误码数 k乘以元素的个数x
一点的行操作的(默认) y每一行x 列向量,其元素表示数组中每一行的误码x k乘以y
列向量 “整体” y的每一列x 总误码数 k乘以元素的个数x
“列”(默认) y的每一列x 行的向量,其元素表示的每列的误码x k乘以y

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

R2006a之前介绍

Baidu
map