循环码的性能分析Word格式文档下载.docx

上传人:b****3 文档编号:16852238 上传时间:2022-11-26 格式:DOCX 页数:17 大小:173.67KB
下载 相关 举报
循环码的性能分析Word格式文档下载.docx_第1页
第1页 / 共17页
循环码的性能分析Word格式文档下载.docx_第2页
第2页 / 共17页
循环码的性能分析Word格式文档下载.docx_第3页
第3页 / 共17页
循环码的性能分析Word格式文档下载.docx_第4页
第4页 / 共17页
循环码的性能分析Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

循环码的性能分析Word格式文档下载.docx

《循环码的性能分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《循环码的性能分析Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

循环码的性能分析Word格式文档下载.docx

循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。

环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。

循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。

关键词:

MATLAB循环码

Abstract

Cyclecodeislinearspace-timeblockcodesinthemostimportantofaseed,isthepresentresearchmorematurekindofcode.Cycliccodehasmanyspecialalgebraicproperties,thesepropertiestohelpinaccordancewiththerequirementsoftheerrorcorrectionabilitytoconstructthesystemofthiskindofcode,andsimplifieddecodingalgorithm,andthemostofthelinearcodeandfoundthatthereisacloserelationshipbetweencycliccode.Cycliccodeandiseasytorealizethecharacteristic,iseasytousewiththefeedbacktheshiftregisterrealizeitshardware.

Keywords:

MATLABcyclecode

1.引言

MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。

MATLAB通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数,函数功能覆盖了现代通信系统的各个方面。

这些函数包括:

信号源产生函数、信源编码/解码函数、接错控制编码/解码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMAFDMACDMA!

数、同步函数、工具函数等。

以纠错控制编解码函数为例:

函数库提供了线性分组码、汉明码、循环码、BCH码、里德一索洛蒙码(REED---SOLOMON卷积码等6种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。

2.设计原理

2.1循环码介绍

循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。

循环码的编码和解码设备都不太复杂,且检(纠)错能力强。

它不但可以检测随机的错误,还可以检错突发的错误。

(n,k)循环码可以检测长为n-k

或更短的任何突发错误,包括首尾相接突发错误。

循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。

符合这个特点的有多种方案,但循环码只能是表中的那种。

循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。

这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。

循环码就是这样一种编码,它可以在卡诺图中依次循环得到。

循环码又称格雷码

(GreyCode)。

循环码最大的特点就是码字的循环特性,所谓循环特性是指:

循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。

(an1an2aia。

)为一循环码组,则(a.2a.3a。

a.1)、

(an3an4an1an2)还是许用码组。

也就是说,不论是左移还是右

移,也不论移多少位,仍然是许用的循环码组。

2.1.1循环码的多项式表示

其中ai为二进制数,通常把码组中各码元当做二进制的系数,即把上式中长为n

的各个分量看做多项式:

的各项系数,则码字与码多项式一一对应,这种多项式中,x仅表示码元位置的

标记,因此我们并不关心x的取值,这种多项式称为码多项式

2.1.2(n,k)循环码的生成多项式

按模(xn1)运算,

(n,k)循环码的生成多项式写为g(x),它是(n,k)循环码码集中唯一的,幕次为n-k的码多项式,则xkg(x)是一个幕次为n的码多项式

此时:

从上式中可以看出,生成多项式g(x)应该是xn1的一个因式,即循环码

多项式应该是xn1的一个n-k次因式。

2.1.3循环码的生成矩阵和一致校验矩阵

对所有的i=0,1,2,……k-1,用生成多项式g(x)除xnki,有:

xnkiai(x)g(x)bi(x)(2—7)

式中bi(x)是余式,表示为:

bi(x)bi,nk1xnk1bi,1xbi,0(2—8)

因此,xnkib(x)是g(x)的倍式,即xnk1bi(x)是码多项式,由此得到系统形式的生成阵

它是一个k

n阶

的矩阵。

1

bk1,nk1

bk1,1

bk1,0

G

bk2,nk1

bk2,1

bkx,0

00

b0,nk1

b0,1

b0,0

同样,由GHT=0可以得到系统形式的一致校验矩阵为:

H

(2—10)

bk2,0

如已知(7,4)循环码的生成多项式和校验多项式分别为:

g(x)x3x1,

h(x)x4x2x1。

写得其生成矩阵和校验矩阵分别为:

(2—11)

 

(2—12)

01

2.2循环码编码原理

有信息码构成信息多项式m(x)mk1xk1m0,其中最高幂次为k-1;

用xnk乘以信息多项式m(x),得到的xnkm(x),最高幕次为n-1,该过程相

当于把信息码(mki,mk2,,mi,m°

)移位到了码字德前k个信息位,

其后是r个全为零的监督位;

用g(x)除xnkm(x)得到余式r(x),其次数必小于g(x)的次数,即小于(n-k),将此r(x)加于信息位后做监督位,即将r(x)于xnkm(x)相加,得到的多项式必为一码多项式。

根据上面的讨论,可得到在(7,4)循环码编码的程序框图如图1所示:

图2.2.1编码程序框图

2.3循环码的纠错原理

纠错码的译码是该编码能否得到实际应用的关键所在。

译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。

根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。

通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;

如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。

用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。

而用于检错目的循环码,一般使用ARC通信方式。

检测过程也是将接受到的码组

进行除法运算,如果除尽,则说明传输无误;

如果未除尽,则表明传输出现差错,要求发送端重发。

用于这种目的的循环码经常被成为循环冗余校验码,即CRC校验码。

CRC校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。

在通过MODE传输文件的协议如ZMODEWXMODE协

如果信道产生的错

议中均用到了CRC校验技术。

在磁盘、光盘介质存储技术中也使用该方法

当码字c通过噪声信道传送时,会受到干扰而产生错误误图样是e,译码器收到的n重接受矢量是y,则表示为:

yce(2—15)

上式也可以写成多项式形式:

y(x)c(x)e(x)(2—16)

A

译码器的任务就是从y(x)中得到e(x),然后求的估值码字c(x)y(x)e(x)(2—17)

并从中得到信息组m(x)。

循环码译码可按以下三个步骤进行:

(1)有接收到的y(x)计算伴随式s(x);

(2)根据伴随式s(x)找出对应的估值错误图样e(x);

AAA

(3)计算c(x)y(x)e(x),得到估计码字c(x)。

若c(x)c(x),则译码正确,否则,若c(x)c(x),则译码错误。

由于g(x)的次数为n-k次,g(x)除E(x)后得余式(即伴随式)的最高次数为n-k-1次,故S(x)共有2n-k个可能的表达式,每一个表达式对应一个错误格式。

可以知道(7,4)循环码的S(x)共有2(7-4)=8个可能的表达式,可根

据错误图样表来纠正(7,4)循环码中的一位错误,其伴随式如表1所示BCH(7,4)循环码错误图样表:

错误图样

错误图样码字

伴随式S(x)

伴随式

E6(X)=X6

1000000

2x

100

E5(X)=X5

0100000

2

x+x

110

E4(x)=x4

0010000

X2+X+1

111

E3(x)=x3

0001000

x+1

011

E2(x)=x2

0000100

X+1

101

E1(x)=x1

0000010

X

010

Eo(x)=xo

0000001

001

E(x)=0

0000000

000

表1BCH(7,4)循环码错误图样

上式指出了系统循环码的译码方法:

将收到的码字R(x)用g(x)去除,如果除尽则无错;

否则有错。

如果有错,可由余式S(x)找出对应图样,然后将

错误图样E(x)与R(x)模2和,即为所求码字qx),从而实现纠错目的。

根据前面的讨论,可得(7,4)循环码译码的程序框图如图2.3.1所示:

6欢迎下载

图2.3.1译码程序框图

3程序与仿真

3.1程序函数介绍

MATLAB^提供了循环码的编码和译码函数,本程序直接调用进行编程。

(1)encode函数

功能:

编码函数

语法:

code=encode(msg,N,K,method,opt)

说明:

用method指定的方法完成纠错编码。

其中msg代表信息码元,是一个K列矩阵,N是编码后的码字长度;

K是信息位的长度;

opt是有些编码方式需要的参数。

(2)decode函数

译码函数

msg=decode(code,N,K,method,opt1,opt2,opt3,opt4);

这个函数对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同。

它对接收到的码字,按method指定的方式进行译码;

optl,…,opt4是可选项的参数。

(3)cyclpoly函数

生成循环码的生成多项式。

p=cyclpoly(N,K);

p=cyclpoly(N,K,fd_flag);

从p=cyclpoly(N,K)中可找到一个给定码长N和信息位长度K生成多项式p,注意不是任意给定一个多项式都可以作为生成多项式。

(4)randint函数

引起一致地分布的任意整数矩阵语法:

out=randint(m)

out=randint(m,n)

out=randint(m,n,rg)

out=randint(m,n,rg,state)

(5)awgn函数

在某一信号中加入高斯白噪声

y=awgn(x,SNR);

信噪比SNF以dB为单位。

x的强度假定为OdBW如果x是复数,就加入复噪声。

(6)quantiz函数

产生一个量化序号和输出量化值。

index=quantiz(sig,partition);

[index,quantiz]=quantiz(sig,partition,codebook);

[index,quant,distor]=quantiz(sig,partition,codebook);

这个函数根据给定的区间参数量化信号,间隔矢量必须按递增顺序排列。

3.2各部分程序说明

1、循环码编码与解码Matlab源程序(实验以(7,4)循环码进行分析)m=3;

n=2Am-1;

k=n-m;

fs=1OO;

%设置采样频率为1OOHz

snr=1O;

%设置信噪比单位:

dB

p=cyclpoly(7,4);

%(7,4)循环码生成多项式msg=round(rand(8*k,1));

%设置8个信息组,每组k个code=encode(msg,n,k,'

cyclic/binary'

p);

%编码输入code_addnoise=awgn(code,snr,'

measured'

);

%信道输出

%将浮点数转化为2进制

forindex=1:

length(code)

if(code_addnoise(index)<

0.5)noisecode(index)=0;

else

noisecode(index)=1;

end

%译码输出

newmsg=decode(noisecode,n,k,'

%求频谱

N=length(newmsg);

fft_new=fftshift(fft(newmsg,N));

f=-fs/2:

fs/N:

(fs/2-fs/N);

%画图输出波形

figure

(1);

subplot(2,2,1);

stem(msg);

title('

编码器输入信号'

subplot(2,2,2),stem(code),title('

编码器输出信号'

subplot(2,2,3),stem(newmsg),title('

译码器输出信号'

subplot(2,2,4),plot(f,abs(fft_new)/max(abs(fft_new)));

xlabel('

频率:

Hz'

ylabel('

归一化幅度'

译码器输出后频谱图'

figure

(2)

plot(code_addnoise),title('

信道输出信号'

2.误码率

m=3;

n=2Am-1;

%定义码长

k=n-m;

%信息位长

Fs=40;

%系统采样频率

Fd=1;

%码速率

N=Fs/Fd;

M=2;

%进制数

forSNR=1:

100;

%信噪比

%制造100个信息组,每组k位

msg=randint(100,k,[0,1]);

code=encode(msg,n,k,'

cyclic/binary'

%TO入噪声

殆已调信号中加入高斯白噪声

noisycode=awgn(code,SNR,'

[],'

dB'

%各浮点数转化为二进制,波形整形过程

fori=1:

fora=1:

n

ifnoisycode(i,a)<

0.5

noisycode(i,a)=0;

noisycode(i,a)=1;

%译码newmsg=decode(noisycode,n,k,'

cyclic'

%十算误码率

[number,ratio]=biterr(newmsg,msg);

result(SNR)=ratio;

disp(['

Thebiterrorrateis'

num2str(ratio)]);

%不同信噪比下循环码经过加性高斯白噪声信道的误码率

figure

(1)

stem(result);

循环码在不同信噪比下的误码率'

legend('

误码率'

'

*'

信噪比'

在加性高斯白噪声下的误码率'

运行结果:

F;

.

FileEditViewInsertToolsDesktopWindowHelp

□ahI®

^^ia|■国|■口

循环玛在不同價噪比下的误码率

~IIIII||]I

一0「衆码率

0Q6

Q-1O.1

14

JI

--U

02

IS

信噪比

Thebiterrorrateis0.215

Thebiterrorrateis0.1825

Thebiterrorrateis0.1325

Thebiterrorrateis0.1475

Thebiterrorrateis0.0975

Thebiterrorrateis0.0475

Thebiterrorrateis0.0175

Thebiterrorrateis0.0125

Thebiterrorrateis0

Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0The

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1