数字通信_信道编码

  • 格式:pdf
  • 大小:257.44 KB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信道编码
一、实验目的
实验人: 学号:07302443
1、 加深对信道编码的理解,了解信道编码的作用 2、 进一步掌握基带信号检测和判决和最佳判决理论 3、 熟悉至少一种信道编码的编码及译码过程,分析信道编码后的误
码率的变化
4、 掌握信噪比和误码率之间的关系和相互影响 5、 学习使用MATLAB,C/C++等进行实验仿真
二、实验要求 1、用MATLAB,,C/C++等语言在计算机进行通信系统模拟。
2、提交完整源程序以及结果图,并要求结合课堂知识根据结果推出结论 (每个设计报告10页以上)。
3、不得抄袭。
三、实验内容
第一部分:利用线性分组码或卷积码进行信道编码 仿真条件:
1 信道输入:s(t), s(t)可以取为MPSK 信号 2 考虑常数AWGN信道 3 噪声设为n(t) 4 信道输出为 y(t)=ks(t)+n(t)
h=H';
%错码位置和S[S1 S2 S3]的关系对应
A0=[0 0 1];
%错a0位
A1=[0 1 0];
%错a1位
A2=[1 0 0];
%错a2位
A3=[0 1 1];
%错a3位
A4=[1 0 1];
%错a4位
A5=[1 1 0];
%错a5位
A6=[1 1 1];
%错a6位
%利用生成矩阵每四个信源符号编码成七符号
for i=1:1:N
if result(1,i)~=src(1,i)
sum=sum+1;
end
end
BER(1,j)=sum/N;
%计算误码率
end
semilogy(SNR,BER,'-*g') %画误码率曲线
grid on;
%图形控制语句
title('BPSK线性分组(7,4)编码误码率曲线')
第二部分:卷积编码 卷积码由3个整数n, k, K描述,这里k/n也表示分组码的编码效率
(每编码比特所含的信息);K是约束长度,表示在编码移位寄存器中 k元组的级数。卷积码的编码器有记忆性,卷积编码过程产生的n元组, 不仅是输入k元组的函数,也是前面K-1个输入k元组的函数。原理如图 所示:
第三部分:交织编码 大多数分组码和卷积码都可以抵抗随机独立错误,对于有记忆信
y(1,i)=0; else y(1,i)=1; end end %对判决后的y{0 1},进行(7,4)解码和纠错 for i=1:1:n tmp3=y(round(7*i-6):round(7*i)); S=mod(tmp3*h,2); if all(all(S==0))==1
result((4*i-3):(4*i))=y((7*i-6):(7*i-3)); else if all(all((S-A0)==0))==1
end
%汉明(7,4)码的生成矩阵G
来自百度文库
G=[1 0 0 0 1 1 1;
0 1 0 0 1 1 0;
0 0 1 0 1 0 1;
0 0 0 1 0 1 1];
%汉明(7,4)码的监督矩阵H
H=[1 1 1 0 1 0 0;
1 1 0 1 0 1 0;
1 0 1 1 0 0 1];
%H转置后为后面检测使用
n=length(src)/4;
%src中以四个为一组的分组数目
SRC=zeros(1,n*7);
%编码后矩阵
for j=1:1:n
tmp1=[src(4*j-3) src(4*j-2) src(4*j-1) src(4*j)];
tmp2=mod(tmp1*G,2);
SRC(round(7*j-6):round(7*j))=tmp2;
end
%采用双极性,则src为{0 1},需要发送为{-1 1}
for j=1:1:M if SRC(1,j)==0 SRC(1,j)=-1; end
end %实际信道传送的信号来自SRC,和src相比,信噪比不变 for j=1:21
sum=0; result=zeros(1,N); snr=SNR(1,j); noise=randn(1,M); a=sqrt(10^(snr/10)); b=0; y=a.*SRC+noise; for i=1:1:M if y(1,i)<b
N=1000000;
M=(7*N)/4;
SNR=0:1:20;
BER=zeros(1,21);
%产生并调整信源样本数量
src=randsrc(1,N,[0 1;0.5 0.5]);
if (rem(length(src),4)~=0)
src=[src,zeros(1,4-rem(length(src),4))];
%汉明(7,4)码的监督矩阵H
H=[1 1 1 0 1 0 0; 1 1 0 1 0 1 0; 1 0 1 1 0 0 1];
%H转置后为后面检测使用 h=H';
%衰落信道特征定义 fade=ones(1,100); fade(1,91:100)=0.1; K=round(M/100); fadeall=repmat(fade,1,K);
y(1,round(7*i-2))=not(y(1,round(7*i-2))); result((4*i-3):(4*i))=y((7*i-6):(7*i-3)); else if all(all((S-A3)==0))==1
y(1,round(7*i-3))=not(y(1,round(7*i-3)));
仿真要求: 1 利用线性分组码或者卷积码进行信道编码 2 画出SER VS SNR的结果图,SNR取0-25dB
第二部分:设计交织+纠错结合的信道编码 仿真条件:
1 信道输入信号s(t);s(t)可以取为MPSK 信号,s(t)的抽样速率为10kb/s. 2 考虑理想化衰落信道,如图1所示 3 噪声设为n(t)
4 信道输出为 y(t)=k(t)*s(t)+n(t)
仿真要求: 1 设计交织+纠错结合的信道编码。 2 画出SER VS SNR的结果图,SNR取0-25dB 3 比较有无交织在SNR变化情况下的结果。 4 改变衰落时间t的值,取t=2ms, t=5ms,观察并画出结果。
图一 理想化衰落信道示意图
%产生并调整信源样本数量 src=randsrc(1,N,[0 1;0.5 0.5]); if (rem(length(src),4)~=0)
src=[src,zeros(1,4-rem(length(src),4))]; end
%汉明(7,4)码的生成矩阵G G=[1 0 0 0 1 1 1;
0 1 0 0 1 1 0; 0 0 1 0 1 0 1; 0 0 0 1 0 1 1];
y(1,round(7*i))=not(y(1,round(7*i))); result((4*i-3):(4*i))=y((7*i-6):(7*i-3)); else if all(all((S-A1)==0))==1
y(1,round(7*i-1))=not(y(1,round(7*i-1))); result((4*i-3):(4*i))=y((7*i-6):(7*i-3)); else if all(all((S-A2)==0))==1
n=length(src)/4;
%src中以四个为一组的分组数目
SRC=zeros(1,n*7);
%编码后矩阵
for j=1:1:n
tmp1=[src(4*j-3) src(4*j-2) src(4*j-1) src(4*j)];
xlabel('信噪比SNR/(dB)')
ylabel('误码率BER/(bit/symbol)')
仿真得到的曲线作对比后,如图四
图四 汉明(7,4)信道编码误码率性能比较 小结:从图中随对比可知,经过信道编码,使得BPSK在的误码率性
能得到了优化,尤其是到了8dB后,误码率性能得到很大的提升,10-4 对应的信噪比下降3dB左右。同时可以发现在低信噪比时,分组码的效 果是不明显的,这是由于汉明74编码的编码效率为4/7,发送的信息序 列变长,在相同功率下导致每个比特的功率下降,信息受污染的可能增 加,同时,增长的码序列也导致信息速率的下降,非信息位的存在降低 了频带的使用率。说明分组码用带宽和时间来换取误码率性能的提高。 第二部分:衰落信道
result((4*i-3):(4*i))=y((7*i-6):(7*i-3)); else if all(all((S-A4)==0))==1
y(1,round(7*i-4))=not(y(1,round(7*i-4))); result((4*i-3):(4*i))=y((7*i-6):(7*i-3)); else if all(all((S-A5)==0))==1
道,错误不再是比特间相互独立的随机分布的比特错误,这使得编码的 差错性能下降。交织编码就是为解决此类为此而被研究出来。
在传输之前对编码信息进行交织,接收后解交织,这使得信道的突 发错误在时间上得以扩展,从而使得译码器可以将它们当做随机错误处 理,随着时间的分离,信道记忆性也会降低。当交织深度足够大时,就 可以在时间上分离码元将一个有记忆信道转变为无记忆信道。
y(1,round(7*i-5))=not(y(1,round(7*i-5))); result((4*i-3):(4*i))=y((7*i-6):(7*i-3)); else if all(all((S-A6)==0))==1
y(1,round(7*i-6))=not(y(1,round(7*i-6))); result((4*i-3):(4*i))=y((7*i-6):(7*i-3)); end end end end end end end end end
在衰落信道,产生连串比特的错误,此时,线性分组码或卷积编码 信道编码的性能下降,因为它们不能纠错连续的比特错误。下面的仿真 程序是BPSK信号经线性分组码编码后在衰落信道的误码率性能,其中 衰落信道是理想的衰落信道,每10ms为一个一周期,有1ms时间的深衰 落。当前比特率为10kbps,故连续误码可达10个或以上。 图五为深衰落信道汉明74码的误码率性能。 %************************************************************* %采用汉明(7,4)分组码在衰落信道传输,无交织编码,衰落时长1ms %实验采用BPSK信号作为信源,码速率10kbps仿真采用{-1,1}等概率分 布 %************************************************************* clear; N=1000000; M=(7*N)/4; SNR=[0:1:20]; BER=zeros(1,21);
%错码位置和S[S1 S2 S3]的关系对应
A0=[0 0 1];
%错a0位
A1=[0 1 0];
%错a1位
A2=[1 0 0];
%错a2位
A3=[0 1 1];
%错a3位
A4=[1 0 1];
%错a4位
A5=[1 1 0];
%错a5位
A6=[1 1 1];
%错a6位
%利用生成矩阵每四个信源符号编码成七符号
四、实验原理
第一部分:线性分组码 线性分组码是一类奇偶校验码,它可以由前面提到的(n,k)形式
表示。编码器将一个k比特的信息分组(信息矢量)转变成一个更长的 由给定元素符号集组成的n比特编码分组(编码矢量)。
汉明(7,4)码是一种线性分组码,使用生成矩阵实现从信息矢量 到编码矢量的转换,采用监督矩阵和伴随式的检测实现解码和检错纠 错。
五、实验结果
第一部分:线性分组码的性能 首先,由第一次实验仿真得到基带传输系统的误码率曲线。在此部
分,改进原实验,增加线性分组码的编码解码过程,观察增加信道编码 后数字传输系统的性能变化。
图三为BPSK在基带传输系统的误码率性能曲线。
图三 BPSK基带传输误码率性能(无信道编码) 截下来,对信源信息传送前进行信道编码,采用线性汉明(7,4) 码,能够纠正一比特的错误,仿真程序如下: %********************************************************* %实验采用BPSK信号作为信源,仿真采用{-1,1}等概率分布 %信道编码采用线性分组码,仿真采用汉明(7,4)码 %********************************************************** clear;