信道编码结课论文基于MATLAB的信道编码分析.docx

上传人:b****1 文档编号:15118108 上传时间:2023-06-30 格式:DOCX 页数:17 大小:197.31KB
下载 相关 举报
信道编码结课论文基于MATLAB的信道编码分析.docx_第1页
第1页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第2页
第2页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第3页
第3页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第4页
第4页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第5页
第5页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第6页
第6页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第7页
第7页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第8页
第8页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第9页
第9页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第10页
第10页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第11页
第11页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第12页
第12页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第13页
第13页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第14页
第14页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第15页
第15页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第16页
第16页 / 共17页
信道编码结课论文基于MATLAB的信道编码分析.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

信道编码结课论文基于MATLAB的信道编码分析.docx

《信道编码结课论文基于MATLAB的信道编码分析.docx》由会员分享,可在线阅读,更多相关《信道编码结课论文基于MATLAB的信道编码分析.docx(17页珍藏版)》请在冰点文库上搜索。

信道编码结课论文基于MATLAB的信道编码分析.docx

信道编码结课论文基于MATLAB的信道编码分析

 

题目:

基于MATLAB的通信系统仿真

———信道编码对通信系统性能的影响

 

专业:

通信工程

姓名:

崔校通

学号:

201300484316

 

日期:

2016.12.22

目录

一、引言2

二、信道编码理论2

2.1、信道编码的目的2

2.2、信道编码的实质3

2.3、信道编码公式3

三、线性分组码的编译码原理3

3.1、线性分组码的基本概念3

3.2、生成矩阵和校验矩阵4

四、MATLAB仿真5

4.1仿真5

4.1.1原理说明5

4.1.2各子函数说明5

4.2仿真源程序5

4.2.1信道编码5

4.2.2信道解码6

4.2.3交织6

4.2.4解交织7

4.2.5信道衰落7

六程序及仿真图8

1、file1:

信道编码对通信系统性能的影响,有无信道编码的影响8

2、file2:

在周期性深衰落的信道条件下,交织对通信系统性能的影响10

3、file3:

在交织条件下,不同时长的周期性深衰落对系统性能影响的比较13

 

基于MATLAB的通信系统仿真

———信道编码对通信系统性能的影响

摘要:

简述信道编码理论,详细说明分组码的编译原理、实现方法及检错纠错能力,用MATLAB仿真有无信道编码条件下对通信系统性能的影响及信道编码在不同信道下对通信系统性能的影响,如AWGN信道和深衰落信道。

关键词:

信道编码、分组码、MATLAB仿真、性能

一、引言

提高信息传输的有效性和可靠性始终是通信技术所追求的目标,而信道编码能够显著的提升信息传输的可靠性。

1948年,信息论的奠基人C.E.Shannon在他的开创性论文“通信的数学理论”中,提出了著名的有噪信道编码定理.他指出:

对任何信道,只要信息传输速率R不大于信道容量C,就一定存在这样的编码方法:

在采用最大似然译码时,其误码率可以任意小.该定理在理论上给出了对给定信道通过编码所能达到的编码增益的上限,并指出了为达到理论极限应采用的译码方法.在信道编码定理中,香农提出了实现最佳编码的三个基本条件:

(1)采用随机编译码方式;

(2)编码长度L→∞,即分组的码组长度无限;(3)译码采用最佳的最大似然译码算法。

二、信道编码理论

2.1、信道编码的目的

在数字通信系统中由于信道内存在加性噪声及信道传输特性不理想等容易造成码间串扰同时多用户干扰、多径传播和功率限制等也导致错误译码。

为了确保系统的误比特率指标通常采用信道编码。

信道编码是为了保证信息传输的可靠性、提高传输质量而设计的一种编码。

它是在信息码中增加一定数量的多余码元,使码字具有一定的抗干扰能力。

2.2、信道编码的实质

信道编码的实质就是在信息码中增加一定数量的多余码元(称为监督码元),使它们满足一定的约束关系,这样由信息码元和监督码元共同组成一个由信道传输的码字。

举例而言,欲传输k位信息,经过编码得到长为n(n>k)的码字,则增加了n-k=r位多余码元,我们定义R=k/n为编码效率。

【2】

2.3、信道编码公式

令信息速率为fb,经过编码以后的速率为ft,定义:

R=fb/ft为编码率。

则对于任何一个信道,总存在一个截止速率R0,只要RR0,总可以达到:

BERCR2-nR0,其中CR为某个常数,n为编码的约束长度。

对于等概二进码、AWGN信道,有:

 

三、线性分组码的编译码原理

3.1、线性分组码的基本概念

一个[n,k]线性分组码,是把信息划成k个码元为一段(称为信息组),通过编码器变成长为n个码元的一组,作为[n,k]线性分组码的一个码字。

若每位码元的取值有q种(q为素数幂),则共有qk个码字。

n长的数组共有qn组,在二进制情况下,有2n个数组。

显然,qn个n维数组(n重)组成一个GF(q)上的n维线性空间。

如果qk(或2k)个码字集合构成了一个k维线性子空间,则称它是一个[n,k]线性分组码。

即将k维k重信息空间的元素线性映射到n维n重矢量空间(接收矢量/收码)的k维n重子空间(码空间)。

如下图为[7,3]码

3.2、生成矩阵和校验矩阵

生成矩阵:

G称为生成矩阵,因为可以用它产生整个码组A,即有

生成矩阵的性质:

具有[IkQ]形式的生成矩阵称为典型生成矩阵。

由典型生成矩阵得出的码组A中,信息位的位置不变,监督位附加于其后。

这种形式的码组称为系统码。

矩阵G的各行也必须是线性无关的。

如果已有k个线性无关的码组,则可以将其用来作为生成矩阵G,并由它生成其余码组。

【3】

监督矩阵:

监督矩阵可用来校验和纠错。

四、MATLAB仿真

4.1仿真

4.1.1原理说明

采用模块化编程,力求把每个功能独立成各个模块,让程序更清晰。

首先介绍各个子程序及其实现的基本功能。

此次还采用了交织与解交织,其主要作用是,一个实际上的突发信道,经过发送端交织和接收端解交织的信息处理后,就完全等效成一个随机独立差错信道,信道交织编码实际上就是一类信道改造技术,它将一个突发信道改造成一个随机独立差错信道。

它本身并不具备信道编码检、纠错功能,起到信号预处理的作用

4.1.2各子函数说明

运行环境为Matlab7.0版本

通信过程的每个模块写成子程序函数:

Channelcoding为信道编码函数

Channeldecoding为信道解码纠错子函数

Interwaving为交织子函数

Deinterwaving为解交织子函数

addfade为向信道加入衰落参数的子函数

awgn为库函数,向信源加高斯白噪声

pskmod为库函数,用于信号调制,输出为复数

pskdemod为库函数,用于信号解调

4.2仿真源程序

4.2.1信道编码

%信道编码子函数,sym为编码码流,G为生成矩阵,k为编码方式的长度,如(7,4)码的4

functionbitcoded=channelcoding(sym,G,k)

A=vec2mat(sym,k);

U=A*G;

U=mod(U,2);

bitcoded=reshape(U',1,[]);

4.2.2信道解码

functionbitdecoded=channeldecoding(recode,Etab,Smatrix,H,n,k)

%前向纠错函数,实现纠错功能

%bidecoded为纠错后返回的比特流

%recode为输入的比特流

%E为错误图样表,S为对应的伴随式表

%H为监督矩阵,n,k为码的类型,如(7,4)码,n=7,k=4

row=length(recode)/n;%行数

E=zeros(row,n);%错误图样

RM=zeros(row,n);%纠错之后的矩阵

R=vec2mat(recode,n);

S=R*H';%伴随矩阵

S=mod(S,2);

fori=1:

row

forj=1:

2^(n-k)%查表纠错

if(S(i,:

)==Smatrix(j,:

))

E(i,:

)=Etab(j,:

);

RM(i,:

)=R(i,:

)+E(i,:

);

RM(i,:

)=mod(RM(i,:

),2);

break;

end

end

end

bitdecoded=reshape(RM',1,[]);%转化为比特流

 

4.2.3交织

functionretbit=interweaving(bitstream,row,col)

%功能:

实现对输入比特的交积

%retbit为交积后返回的比特流向量

%bitstream为需要交积的比特流向量

%row和col为交积器的行和列,

%通过改变col就可以改变交积深度

retbit=zeros(1,length(bitstream));

bitarr=vec2mat(bitstream,row);

bitarr=bitarr';

fori=1:

length(bitstream)/(row*col)

temp=bitarr(:

((i-1)*col+1):

i*col);

retbit(1,((i-1)*(row*col)+1):

(i*(row*col)))=reshape(temp',1,[]);

end

4.2.4解交织

functionretbits=deinterweaving(bitstream,row,col)

%功能:

实现对输入比特的解交积

%rebits为解交积后返回的比特流

%bitstream输入的比特流

%row和col为交积器的行和列,通过改变col就可以改变交积器的长度

retbits=zeros(1,length(bitstream));

bitarr=vec2mat(bitstream,col);

fori=1:

length(bitstream)/(row*col)

temp=bitarr((i-1)*row+1:

i*row,:

);

retbits(1,(i-1)*row*col+1:

i*row*col)=reshape(temp,1,[]);

end

4.2.5信道衰落

functioncode=addfade(modcode,Tf,isperiod,isfade)

%功能:

向传输序列modcode叠加衰落性信道的衰落参数k(t)

%code为加入衰减参数之后返回的序列。

%modcode为调制之后的序列

%Tf为衰落时间,以ms为单位,小于10ms,

%Tf=1,表示衰落1ms

%isperiod周期衰落和一次性衰落的标志,

%isperiod=1表示周期性衰落,0表示一次性衰落

%isfade表示是否存在衰落,1存在,0不存在衰落直接返回modcode

if(isfade==1)

if(isperiod==1)%周期性衰落

fork=1:

length(modcode)/(100*Tf)

a=(k-1)*100*Tf+31;

b=(k-1)*100*Tf+30+10*Tf;

modcode(1,a:

b)=0.1*modcode(1,a:

b);

end

else%一次衰落

a=31;

b=30+10*Tf;

modcode(1,a:

b)=0.1*modcode(1,a:

b);

end

code=modcode;

else

code=modcode;

end

六程序及仿真图

1、file1:

信道编码对通信系统性能的影响,有无信道编码的影响

执行时间:

Elapsedtimeis355.023518seconds.

tic

clc

%功能:

有无信道编码性能比较

M=2;%进制

b=log2(M);%每符号比特数

n=128*10000;%符号数

G=[1111000;1010100;0110010;1100001];%生成矩阵

H=[1001101;0101011;0011110];%监督矩阵

Etab=[0000000;0000001;%错误图样

0000010;0000100;

0001000;0010000;

0100000;1000000];

Smatrix=Etab*H';%对应的伴随式

sym=randint(n,1,M);

sym=de2bi(sym,'left-msb');%模拟信源编码

bitcoded=channelcoding(sym,G,4);%信道编码,(7,4)码

modbit=pskmod(bitcoded,M);

%在传输序列modbit加入AWGN噪声

Snr=0:

0.2:

15;%噪声为0到15d

L=length(snr)

ser=zeros(1,L);

ser2=zeros(1,L);

fork=1:

L

y=awgn(modbit,10*log10(b)+snr(k),'measured');

zsym=pskdemod(y,M);%复数解调

zbit=de2bi(zsym,'left-msb');

recode=reshape(zbit',1,[]);

Rstream=recode;

err=(Rstream~=bitcoded);

errnum=sum(err);

ser(k)=log10(errnum/length(bitcoded));

%纠错

bitdecoded=channeldecoding(Rstream,Etab,Smatrix,H,7,4);

err=(bitdecoded~=bitcoded);

errbits=sum(err);

ser2(k)=log10(errbits/(length(bitcoded)));

end

plot(snr,ser,'b-*')

holdon

plot(snr,ser2,'r-o')

gridon

legend('没有信道编码','信道编码');

xlabel('Eb/No(dB)');

ylabel('SER');

title('2PSK有无信道编码性能比较');

toc%

Elapsedtimeis278.288819seconds.程序运行时间

结论:

由上图在较高信噪比的时候编码增益很明显大大提高了误码性能,但是在低信噪被的时候编码增益较小甚至可能是负值,则是因为编码后信息比特能量扩散到多个编码比特上,每个编码比特能量有所降低,如果信噪比低的话,编码冗余带来的性能增益可能弥补不了编码比特的能量的降低,因此信道中信噪比的波动会显著降低编码性能

2、file2:

在周期性深衰落的信道条件下,交织对通信系统性能的影响

tic

clc

%功能:

有无信道编码性能比较

M=2;%进制

b=log2(M);%每符号比特数

n=128*10000;%符号数

interrow=8;intercol=10;%交积矩阵的行和列

G=[1111000;1010100;0110010;1100001];%生成矩阵

H=[1001101;0101011;0011110];%监督矩阵

Etab=[0000000;0000001;%错误图样

0000010;0000100;

0001000;0010000;

0100000;1000000];

Smatrix=Etab*H';%对应的伴随式

sym=randint(n,1,M);

sym=de2bi(sym,'left-msb');%模拟信源编码

bitcoded=channelcoding(sym,G,4);%信道编码,(7,4)码

interv=interweaving(bitcoded,interrow,intercol);%交积向量

modbit=pskmod(bitcoded,M);

modbit2=pskmod(interv,M);

%向传输序列modcode叠加衰落性信道的衰落参数k(t)

modbitfade=addfade(modbit,1,1,1);

modbitfade2=addfade(modbit2,1,1,1);%1ms周期性衰落

modbitfade3=addfade(modbit2,2,1,1);%衰落时长2ms

%在传输序列modbit加入AWGN噪声

snr=0:

0.2:

25;%噪声为0到25d

L=length(snr)

ser=zeros(1,L);

ser2=zeros(1,L);

fork=1:

L

y=awgn(modbitfade,10*log10(b)+snr(k),'measured');

y2=awgn(modbitfade2,10*log10(b)+snr(k),'measured');

y3=awgn(modbitfade3,10*log10(b)+snr(k),'measured');

zsym=pskdemod(y,M);%复数解调

zsym2=pskdemod(y2,M);

zsym3=pskdemod(y3,M);

zbit=de2bi(zsym,'left-msb');

zbit2=de2bi(zsym2,'left-msb');

zbit3=de2bi(zsym3,'left-msb');

recode=reshape(zbit',1,[]);

recode2=reshape(zbit2',1,[]);

recode3=reshape(zbit3',1,[]);

deinterv=deinterweaving(recode2,interrow,intercol);%解交积向量

deinterv3=deinterweaving(recode3,interrow,intercol);

Rstream=recode;

Rstream2=deinterv;

Rstream3=deinterv3;

%纠错

bitdecoded=channeldecoding(Rstream,Etab,Smatrix,H,7,4);

bitdecoded2=channeldecoding(Rstream2,Etab,Smatrix,H,7,4);

bitdecoded3=channeldecoding(Rstream3,Etab,Smatrix,H,7,4);

err=(bitdecoded~=bitcoded);

errbits=sum(err);

ser(k)=log10(errbits/(length(bitcoded)));

err2=(bitdecoded2~=bitcoded);

errbits2=sum(err2);

ser2(k)=log10(errbits2/(length(bitcoded)));

err3=(bitdecoded3~=bitcoded);

errbits3=sum(err3);

ser3(k)=log10(errbits3/(length(bitcoded)));

end

plot(snr,ser,'b-*')

holdon

plot(snr,ser2,'r-o')

holdon

plot(snr,ser3,'k-+')

gridon

legend('有信道编码没有交织1ms衰落','有信道编码有交织1ms衰落','有信道编码有交织2ms衰落');

xlabel('Eb/No(dB)');

ylabel('SER');

title('2PSK衰落信道有无交织性能比较');

toc%Elapsedtimeis1504.524053seconds.%该程序运行时间

结论:

衰落信道使系统的误码性能大大的降低,尤其是时延扩展远大于码元宽度的衰落,如瑞利衰落信道,此时信道属于慢深衰落,容易使得传输的信息出现连续的错误,当出现的错误大于信道编码的纠错能力时,就无法产生编码增益,甚至可能是性能恶化。

此时必须使用交织把连续的错误打破分到不同的编解码分组中,尽量使没组只有少量甚至一个错误,此时编码增益将会大大提高,就如上图所示。

3、file3:

在交织条件下,不同时长的周期性深衰落对系统性能影响的比较

图表在下一页,程序由file2中修改参数即可,故在此不贴源程序。

结论:

程序只需在file2的基础上修改加衰落函数addfade的参数即可改变衰落时长:

File2中信道是1ms的周期性衰落,信息传输速率是10kbps,所以会出现周期性的连续10个比特出现深衰落,此时交织深度为10,可以解决深衰落带来的影响。

但在file3中信道变为2ms的周期性衰落,交织深度依旧为10,此时每个分组中可能有两个以上的错误,超出了汉明码的纠错能力,误码性能将会恶化。

此时的SNR-SER曲线如下图中间那条所示,性能介于没有交织的1ms深衰落和交织的1ms深衰落之间。

如果要改善系统的误码性能,就只能增加交织深度,知道满足信道编码的纠错能力,但是交织深度加深的话,会加大编译码的时延,不适合实时通信,所以应该根据实际通信系统的需求在两者之间取一个平衡。

 

参考文献:

【1】傅祖芸,赵建中.信息论与编码.电子工业出版社,2006

【2】田宝玉,信息论基础,人民邮电出版社

【3】AndreaGoldsmith,无线通信,人民邮电出版社

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2