当前位置:首页 >> 信息与通信 >>

数字通信系统matlab仿真


课程设计报告
题目: 题目:基于 MATLAB 的通信系统仿真
———信道编码对通信系统性能的影响 ———信道编码对通信系统性能的影响

专业: 通信工程 姓名: XXX 学号: 0730xxxx

基于 MATLAB 的通信系统仿真
———信道编码对通信系统性能的影响 ———信道编码对通信系统性能的影响

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

关键词: 关键词:信道编码、分组码、MATLAB 仿真、性能 一 、引 言
提高信息传输的有效性和可靠性始终是通信技术所追求的目标, 而信道编码能够显著的 提升信息传输的可靠性。1948 年,信息论的奠基人 C.E.Shannon 在他的开创性论文“通信的 数学理论”中,提出了著名的有噪信道编码定理.他指出:对任何信道,只要信息传输速率 R 不大于信道容量 C, 就一定存在这样的编码方法:在采用最大似然译码时,其误码率可以任 意小.该定理在理论上给出了对给定信道通过编码所能达到的编码增益的上限,并指出了为 达到理论极限应采用的译码方法.在信道编码定理中,香农提出了实现最佳编码的三个基本 条件 :(1 )采用随机编译码方式 ; (2 )编码长度L→∞ , 即分组的码组长度无限 ; (3) 译码采用最佳的最大似然译码算法。 【1】

二、信道编码理论 1、信道编码的目的
在数字通信系统中由于信道内存在加性噪声及信道传输特性不理想等容易造成码间串 扰同时多用户干扰、 多径传播和功率限制等也导致错误译码。 为了确保系统的误比特率指标 通常采用信道编码。 信道编码是为了保证信息传输的可靠性、 提高传输质量而设计的一种编 码。它是在信息码中增加一定数量的多余码元,使码字具有一定的抗干扰能力。 2、信道编码的实质 信道编码的实质就是在信息码中增加一定数量的多余码元 (称为监督码元) 使它们满足 , 一定的约束关系,这样由信息码元和监督码元共同组成一个由信道传输的码字。举例而言, 欲传输 k 位信息,经过编码得到长为 n(n>k)的码字,则增加了 n - k = r 位多余码元,我 们定义 R = k / n 为编码效率。 【2】

3、 信道编码公式
令信息速率为 fb,经过编码以后的速率为 ft,定义:R=fb/ft 为编码率。则对于任何一 个信道,总存在一个截止速率 R0,只要 R<R0,总可以达到:BER<CR2 n 为编码的约束长度。 对于等概二进码、AWGN 信道,有:
-nR0

,其中 CR 为某个常数,

R0 = 1 ? log 2 (1 + e ? R0 Eb / N 0 )

Eb 1 1 = ln (1?R0 ) N 0 R0 2 ?1

三、线性分组码的编译码原理
1、 线性分组码的基本概念 一个[n ,k]线性分组码, 是把信息划成 k 个码元为一段(称为信息组), 通过编码 器变成长为 n 个 码元的一组, 作为[n, k]线性分组码的一个码字。 若每位码元的取值 有 q 种(q 为素数幂), 则共有 q 个码字。 n 长的数组共有 q 组, 在二进制情况下, 有 2
n k k k n n

个数组。 显然, q 个 n 维数组(n 重)组成一个 GF(q)上的 n 维线性空间。 如果 q (或 2 ) 个码字集合构成了一个 k 维线性子空间, 则称它是一个[n ,k]线性分组码。即将 k 维 k 重信息空间的元素线性映射到 n 维 n 重矢量空间(接收矢量/收码) 的 k 维 n 重子空间(码 空间) 。如下图为[7,3]码

2、生成矩阵和校验矩阵 生成矩阵:

?1000 ? 0100 G = [I k Q ] = ? ? 0010 ? ? 0001

M111 ? M110 ? ? M101 ? ? M 011 ?

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

A = [a 6 a 5 a 4 a 3 a 2 a 1 a 0 ] = [a 6 a 5 a 4 a 3 ]G
生成矩阵的性质:具有[IkQ]形式的生成矩阵称为典型生成矩阵。由典型生成矩阵得出的码 组 A 中,信息位的位置不变,监督位附加于其后。这种形式的码组称为系统码。 矩阵 G 的 各行也必须是线性无关的。 如果已有 k 个线性无关的码组, 则可以将其用来作为生成矩阵 G, 并由它生成其余码组。 【3】 监督矩阵:

?1110 M 100 ? H = ?1101 M 010 ? = [PI r ] ? ? ?1011 M 001 ? ? ?
监督矩阵可用来校验和纠错。

四、MATLAB 仿真源程序及说明
采用模块化编程,力求把每个功能独立成各个模块,让程序更清晰。首先介绍各个子程 序及其实现的基本功能。 运行环境为 Matlab7.0 版本 通信过程的每个模块写成子程序函数: Channelcoding 为信道编码函数 Channeldecoding 为信道解码纠错子函数 Interwaving 为交积子函数 Deinterwaving 为解交积子函数 addfade 为向信道加入衰落参数的子函数 awgn 为库函数,向信源加高斯白噪声

pskmod 为库函数,用于信号调制,输出为复数 pskdemod 为库函数,用于信号解调 脚本文件:file1:信道编码对通信系统性能的影响,有无信道编码的影响 file2:在周期性深衰落的信道条件下,交织对通信系统性能的影响 file3:在交织条件下,不同时长的周期性深衰落对系统性能影响的比较

信道编码子程序: 信道编码子程序: %信道编码子函数,sym 为编码码流,G 为生成矩阵,k 为编码方式的长度,如(7,4)码的 4 function bitcoded=channelcoding(sym,G,k) A=vec2mat(sym,k); U=A*G; U=mod(U,2); bitcoded=reshape(U',1,[]);

信道解码子程序: 信道解码子程序: function bitdecoded=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); for i=1:row for j=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,[]); %转化为比特流

交织子程序: 交织子程序: function retbit=interweaving(bitstream,row,col) %功能:实现对输入比特的交积 % retbit 为交积后返回的比特流向量 % bitstream 为需要交积的比特流向量 % row 和 col 为交积器的行和列, % 通过改变 col 就可以改变交积深度 retbit=zeros(1,length(bitstream)); bitarr=vec2mat(bitstream,row); bitarr=bitarr'; for i=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

解交织子程序: 解交织子程序: function retbits=deinterweaving(bitstream,row,col) %功能:实现对输入比特的解交积 %rebits 为解交积后返回的比特流 % bitstream 输入的比特流

%row 和 col 为交积器的行和列,通过改变 col 就可以改变交积器的长度 retbits=zeros(1,length(bitstream)); bitarr=vec2mat(bitstream,col); for i=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

信道衰落子程序: 信道衰落子程序: function code=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) %周期性衰落

for k=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 %一次衰落

file1:信道编码对通信系统性能的影响, 1、 file1:信道编码对通信系统性能的影响,有无信道编码的影响
执行时间:Elapsed time is 355.023518 seconds. tic clc %功能:有无信道编码性能比较 M=2; %进制 %每符号比特数

b=log2(M) ;

n=128*10000 ; %符号数 G=[1 1 1 1 0 0 0;1 0 1 0 1 0 0;0 1 1 0 0 1 0;1 1 0 0 0 0 1] ; %生成矩阵 H=[1 0 0 1 1 0 1;0 1 0 1 0 1 1;0 0 1 1 1 1 0] ; Etab= [0 0 0 0 0 0 0;0 0 0 0 0 0 1; 0 0 0 0 0 1 0;0 0 0 0 1 0 0; 0 0 0 1 0 0 0;0 0 1 0 0 0 0; 0 1 0 0 0 0 0;1 0 0 0 0 0 0]; 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); for k=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-*') hold on plot(snr,ser2,'r-o') grid on legend('没有信道编码','信道编码'); xlabel('Eb/No(dB)'); ylabel('SER'); title('2PSK 有无信道编码性能比较'); toc %

Elapsed time is 278.288819 seconds.程序运行时间

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

file2:在周期性深衰落的信道条件下, 2、 file2:在周期性深衰落的信道条件下,交织对通信系统性能的影响
tic clc %功能:有无信道编码性能比较 M=2; %进制 %每符号比特数

b=log2(M) ;

n=128*10000 ; %符号数 interrow=8;intercol=10;%交积矩阵的行和列 G=[1 1 1 1 0 0 0;1 0 1 0 1 0 0;0 1 1 0 0 1 0;1 1 0 0 0 0 1] ; %生成矩阵 H=[1 0 0 1 1 0 1;0 1 0 1 0 1 1;0 0 1 1 1 1 0] ; Etab= [0 0 0 0 0 0 0;0 0 0 0 0 0 1; 0 0 0 0 0 1 0;0 0 0 0 1 0 0; 0 0 0 1 0 0 0;0 0 1 0 0 0 0; 0 1 0 0 0 0 0;1 0 0 0 0 0 0]; 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); for k=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-*') hold on plot(snr,ser2,'r-o') hold on plot(snr,ser3,'k-+') grid on legend('有信道编码没有交织 1ms 衰落','有信道编码有交织 1ms 衰落','有信道编码有 交织 2ms 衰落'); xlabel('Eb/No(dB)'); ylabel('SER'); title('2PSK 衰落信道有无交织性能比较'); toc %Elapsed time is 1504.524053 seconds.%该程序运行时间

结论:衰落信道使系统的误码性能大大的降低,尤其是时延扩展远大于码元宽度的衰 结论:衰落信道使系统的误码性能大大的降低, 落,如瑞利衰落信道,此时信道属于慢深衰落,容易使得传输的信息出现连续的错误,当 如瑞利衰落信道,此时信道属于慢深衰落,容易使得传输的信息出现连续的错误, 出现的错误大于信道编码的纠错能力时,就无法产生编码增益,甚至可能是性能恶化。 出现的错误大于信道编码的纠错能力时,就无法产生编码增益,甚至可能是性能恶化。此 时必须使用交织把连续的错误打破分到不同的编解码分组中, 时必须使用交织把连续的错误打破分到不同的编解码分组中,尽量使没组只有少量甚至一 个错误,此时编码增益将会大大提高,就如上图所示。 个错误,此时编码增益将会大大提高,就如上图所示。

file3:在交织条件下,不同时长的周期性深衰落对系统性能影响的比较 3、 file3:在交织条件下,不同时长的周期性深衰落对系统性能影响的比较
图表在下一页,程序由 file2 中修改参数即可。 结论: 的参数即可改变衰落时长: 结论:程序只需在 file2 的基础上修改加衰落函数 addfade 的参数即可改变衰落时长: 的周期性衰落, 10kbps, File2 中信道是 1ms 的周期性衰落,信息传输速率是 10kbps,所以会出现周期性的连续 10 个比特出现深衰落, 10,可以解决深衰落带来的影响。 个比特出现深衰落,此时交织深度为 10,可以解决深衰落带来的影响。但在 file3 中信道 的周期性衰落, 10,此时每个分组中可能有两个以上的错误, 变为 2ms 的周期性衰落,交织深度依旧为 10,此时每个分组中可能有两个以上的错误,超 出了汉明码的纠错能力,误码性能将会恶化。 SNR曲线如下图中间那条所示, 出了汉明码的纠错能力,误码性能将会恶化。此时的 SNR-SER 曲线如下图中间那条所示, 深衰落之间。如果要改善系统的误码性能, 性能介于没有交织的 1ms 深衰落和交织的 1ms 深衰落之间。如果要改善系统的误码性能, 就只能增加交织深度,知道满足信道编码的纠错能力,但是交织深度加深的话, 就只能增加交织深度,知道满足信道编码的纠错能力,但是交织深度加深的话,会加大编 译码的时延,不适合实时通信,所以应该根据实际通信系统的需求在两者之间取一个平衡。 译码的时延,不适合实时通信,所以应该根据实际通信系统的需求在两者之间取一个平衡。

参考文献: 参考文献: 【1】傅祖芸, 赵建中.信息论与编码.电子工业出版社,2006 【2】田宝玉,信息论基础,人民邮电出版社 【3】Andrea Goldsmith,无线通信,人民邮电出版社


相关文章:
基于matlab的数字通信系统
数字信号处理技术 MATLAB通讯系统设计与仿真的应用 ●通讯系统设计与仿真 ●财务与金融工程 ●管理与调度优化计算(运筹学) MATLAB 的应用范围非常广, 包括信号...
基于Simulink的数字通信系统的仿真设计
2.课程设计的任务及要求 1)基本要求: (1)学习 SystemView 或 MATLAB/Simulink...23 C X G:基于 Simulink 的数字通信系统仿真设计 绪 论 本次课程设计的...
数字通信系统matlab仿真
数字通信系统matlab仿真_信息与通信_工程科技_专业资料。包括信源编码,调制解调,信道编码,其中信道编码采用(7,4)码课程设计报告题目: 题目:基于 MATLAB 的通信系统...
基于MATLAB的2FSK数字通信系统仿真
基于MATLAB 的 2FSK 数字通信系统仿真一、2FSK 的基本原理和实现二进制频率调制是用二进制数字信号控制正弦波的频率随二进制数字信号 的变化而变化。 由于二进制...
基于MATLAB的数字基带通信系统仿真
基于MATLAB数字基带通信系统仿真_信息与通信_工程科技_专业资料。基于MATLAB数字基带通信系统仿真北京邮电大学世纪学院 毕业设计(论文) 题 目 基于 Matlab数字...
基于MATLAB的数字频带通信系统的仿真
基于MATLAB数字频带通信系统仿真_信息与通信_工程科技_专业资料。对比QPSK通过高斯信道和瑞利信道的性能,对比QPSK和OQPSK的性能今日推荐 157...
基于MATLAB的通信系统的设计与仿真
基于MATLAB的通信系统的设计与仿真_信息与通信_工程科技_专业资料。2011 届学士...数字通信系统(Digital Communication System,DCS)是利用数字信号来 传递信息的通信...
基于Matlab的模拟通信系统的仿真设计
基于Matlab的模拟通信系统仿真设计_信息与通信_工程科技_专业资料。目录摘要--...调制方式有很多,根据调制信号是模拟信号还是数字信号,载波是连续波 (通常是正弦波...
基于Simulink的通信系统仿真
并通过使用 MATLAB 中 SIMULINK 功 能对各种方式进行仿真,展示数字通信系统的工作过程,最后通过数字信号的分析可 以得出各种数字通信方式的误码率,并且分析得出 QPSK...
基于MATLAB通信系统的设计仿真
基于MATLAB通信系统的设计仿真_信息与通信_工程科技_专业资料。电子信息工程课程设计 基于MATLAB通信系统的设计与仿真系别 专业 姓名学号 电气工程系 电子信息工程 ...
更多相关标签:
matlab通信系统仿真 | 数字通信系统仿真概述 | matlab控制系统仿真 | matlab电力系统仿真 | matlab通信工程仿真 | ofdm系统的matlab仿真 | matlab通信仿真 | matlab离散系统仿真 |