主要内容

二元同步通信

二进制对称信道

描述

Ndata = bsc(数据,概率)传递二进制输入信号数据通过具有指定错误概率的二进制对称信道。通道引入一个比特误差并处理输入的每个元素数据独立。数据必须是一个二进制数数组或GF(2)中的伽罗瓦数组。概率必须是0到1之间的标量。

Ndata = bsc(数据,概率,流句柄)使用来生成均匀噪声样本的随机流句柄兰德.方法提供随机流句柄或使用重置(RandStream)函数可以生成可重复的噪声样本。有关更多信息,请参见RandStream

Ndata = bsc(数据,概率,种子)接受一个种子值,用于初始化均匀随机数生成器,兰德.如果你想生成可重复的噪声样本,那么在调用之前重置随机流输入二元同步通信或者使用相同的种子输入。

[ndata,err] = bsc(___返回包含通道错误的数组,使用上述语法中的任何一种。

例子

全部折叠

使用二元同步通信函数,在概率为0.15的随机矩阵的位中引入误码。

Z = randi([0 1],100,100);%随机矩阵Nz = bsc(z,.15);二进制对称通道[numerrs, pcterrs] = biterr(z,nz)错误数和百分比
数字= 1509
pcters = 0.1509

下面的输出是典型的。对于相对较小的数据集,在大多数试验中误码率都不是15%。如果矩阵的大小z较大,则误码率将更接近于指定的确切概率。

使用二元同步通信函数,在概率为0.01的随机矩阵的位中引入误码。使用维特比解码器解码消息数据。

为维特比解码器定义网格。生成和编码消息数据。

Trel = poly2trellis([4 3],[4 5 17;7 4 2]);MSG = ones(10000,1);

为卷积编码器、维特比解码器和错误率计算器创建对象。

hEnc = comm.ConvolutionalEncoder(trel);hVitDec = com . viterbidecoder (trel,“InputFormat”“硬”“TracebackDepth”...2,“TerminationMethod”“截断”);hErrorCalc = com . errorrate;

对消息数据进行编码。引入误码。显示错误总数。

代码= hEnc(msg);[ncode,err] = bsc(code,.01);Numchanerrs = sum(sum(err))
Numchanerrs = 158

对数据进行解码,并检查解码后的错误数。

dcode = hVitDec(ncode);berVec = hErrorCalc(msg, dcode);ber = berVec(1)
Ber = 0.0049
numsyserrs = berVec(2)
Numsyserrs = 49

扩展功能

版本历史

R2006a之前介绍过

Baidu
map