循环编码Word格式文档下载.doc

上传人:b****1 文档编号:13083890 上传时间:2022-10-04 格式:DOC 页数:15 大小:237KB
下载 相关 举报
循环编码Word格式文档下载.doc_第1页
第1页 / 共15页
循环编码Word格式文档下载.doc_第2页
第2页 / 共15页
循环编码Word格式文档下载.doc_第3页
第3页 / 共15页
循环编码Word格式文档下载.doc_第4页
第4页 / 共15页
循环编码Word格式文档下载.doc_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

循环编码Word格式文档下载.doc

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

循环编码Word格式文档下载.doc

一.循环码编码和译码原理简介:

1.RS循环码编码原理与特点:

首先令和分别表示信息多项式与校验多项式,则一个RS码的多项式表达式为:

如果为一个码字,则它必须为生成多项式的位数,即:

编码的过程就是从和中寻找,它可通过除法算法来完成。

即用除以得到:

(1式)

同时令=-,则有。

2.RS循环码译码原理与特点:

(1)能纠正t个符号差错的(n,k)RS码,数据段中包含k个信息符号和2t个校验符号。

设存贮器系统数据输出的多项式(妈接收字多项式)可以表达为,差错图样多项式为,纠错后的码多项式为,伴随式多项式为,差错定位多项式为。

3.RS循环码的基本步骤及实现循环码的程序流程图:

信源

分帧

Rs(7,3)编码

BPSK调制

AWGN信道

BPSK解调

Rs(7,3)译码

合帧

误码率计算

4.主要源程序:

/*输入的信息元:

m(x)*/

voidinformation_element(unsignedcharmx[K])

{

unsignedchartem;

srand((unsigned)time(0));

for(unsignedinti=0;

i<

K;

i++) {

tem=rand()%6+1;

if(tem==1) mx[i]='

a'

;

else mx[i]=tem+48;

}

}

/*确定被除数:

x^(n-k)m(x)*/

voidcount_dividend(unsignedchardividend[],unsignedcharmx[])

{ for(inti=0;

N;

if(i>

=K) { dividend[i]='

0'

continue;

dividend[i]=mx[i];

/*gx各项乘以被除数的第一项系数;

注意:

符号'

的ASCII码为48*/

voidfor_mod2(unsignedchartem[],unsignedcharc)

{ unsignedinti;

switch(c)

{ case'

1'

:

for(i=0;

5;

i++) tem[i]=gx[i];

break;

case'

for(i=0;

i++){

if(gx[i]=='

) tem[i]='

elseif(gx[i]=='

2'

else tem[i]=gx[i]+1;

}

default:

i++)

{ if(gx[i]=='

) tem[i]=c;

) tem[i]=(int)c+1;

else tem[i]=(int)gx[i]+(int)c-48;

/*应用课本第153页的表6-7的关系式转换*/

for(i=0;

{ if(tem[i]=='

8'

if(tem[i]>

'

&

tem[i]!

='

) tem[i]-=7;

if(tem[i]=='

7'

/*与GF(2^3)扩域(课本153页)匹配*/

unsignedcharmath(unsignedcharctem[])

unsignedcharc='

//当两系数相同时(即a^i+a^i=0)为0

if(ctem[0]=='

ctem[1]=='

ctem[2]=='

) c='

3'

4'

5'

6'

returnc;

/*mod2加*/

voidmod2(unsignedchardividend[],unsignedchartem[],unsignedcharremainder[])

{ unsignedintk;

for(unsignedintj=1;

j<

j++)

{ unsignedchartem1[3];

unsignedchartem2[3];

/*被除数对应到GF(2^3)扩域,增加三位都是'

的情况*/

switch(dividend[j])

{case'

for(k=0;

k<

3;

k++) tem1[k]=GF[0][k];

break;

case'

k++) tem1[k]=GF[1][k];

k++) tem1[k]='

default:

unsignedintn=dividend[j]-48;

k++) tem1[k]=GF[n][k];

/*gx各项乘以被除数的第一项系数后对应到GF(2^3)扩域,增加三位都是'

switch(tem[j])

k++) tem2[k]=GF[0][k];

k++) tem2[k]=GF[1][k];

unsignedintm=tem[j]-48;

k++) tem2[k]=GF[m][k];

/*异或运算*/

unsignedcharctem[3];

for(k=0;

k++)

{ if(tem1[k]==tem2[k]) ctem[k]='

else ctem[k]='

remainder[j-1]=math(ctem);

/*匹配*/

/*多项式相除*/

voidpolynomial_division(unsignedchardividend[],unsignedcharremainder[],intflag)

unsignedchartem[5];

unsignedinti,n=5;

flag;

{

for_mod2(tem,dividend[0]);

mod2(dividend,tem,remainder);

/*准备下次除法的被除数,如果被除数的第一项为0则被除数数组左移一位,第一,二项都为0则停止*/

for(unsignedintj=0;

R;

j++)dividend[j]=remainder[j];

dividend[4]=dividend[n++];

if(dividend[0]=='

{

if(dividend[1]=='

)break;

for(unsignedintk=0;

k++)dividend[k]=dividend[k+1];

i++;

n++;

dividend[3]='

/*求余式*/

voidcount_remainder(unsignedcharremainder[R])

information_element(mx);

unsignedchardividend[N];

count_dividend(dividend,mx);

polynomial_division(dividend,remainder,K);

/*RS码映射成7个二进制3bit组,对应GF表*/

voidcreate_rsc(unsignedcharrsc[],unsignedcharremainder[],unsignedcharrsc_GF[N][K])

unsignedinti,k;

i++){rsc[i]=mx[i];

for(i=3;

i++){rsc[i]=remainder[i-3];

{ switch(rsc[i])

{ case'

k++)rsc_GF[i][k]=GF[0][k];

k++)rsc_GF[i][k]=GF[1][k];

k++)rsc_GF[i][k]='

unsignedintm=rsc[i]-48;

k++)rsc_GF[i][k]=GF[m][k];

/*BPSK映射:

符号‘1’映射成‘1’,符号‘0’映射成‘-’;

符号‘-’输出为‘-1’*/

voidBPSK_mapping(unsignedcharrsc_GF[N][K],unsignedcharrsc_BPSK[N][K])

{ unsignedinti,j;

{for(j=0;

{if(rsc_GF[i][j]=='

)rsc_BPSK[i

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

当前位置:首页 > 党团工作 > 党团建设

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

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