交织码的MATLAB代码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
temp=rand;
if (temp<0.5) else end
dsource(i)=0; dsource(i)=1;
end
%length(dsource)
output_h74=hamming74(dsource);
output_h74_jz28=jiaozhi(output_h74,28); %卷积交织 output_cnv_encd=cnv_encd(G,k,output_h74_jz28); %length(output_cnv_encd),pause if(output_cnv_encd(i)==0) else end r=-E+gngauss(sgma); r=E+gngauss(sgma); for i=1:length(output_cnv_encd)
百度文库
%bb 解循环等差交织后还原分组序列 24 6 19 ] 14 5 9 4 27 22 17 8 12 3 7
15
10
28
23
18
13
26
j=1;
for i=1:n
end
j=rem(j+5-1,n)+1; %序号重排方式迭代算法 bb(j)=aa(n+1-i);
%jiaozhi_nocnv.m 解循环等差交织函数
output_h74=hamming74(dsource);
output_h74_jz28=jiaozhi(output_h74,28);
output_cnv_encd=cnv_encd(G,k,output_h74_jz28);
channel_output=zeros(1,length(output_cnv_encd)); output);
MATLAB 源程序
function [p]=smldPe55_cnv_jz_74(snr_in_dB) %外编码采用(7,4)HAMMING码 %内编码采用(2,1,3)卷积码 %snr_in_dB 信噪比 %p 误码率% E=1;
%smldPe55_cnv_jz_74.m 二进制双极性级联码(卷积交织)通信系统蒙特卡罗仿真函数 %交织编码采用(7,4)卷积交织编码
for i=1:n end
aa(i)=bb(cc(i));
%jiaozhi.m 卷积交织函数 function [bb]=jiejiaozhi(aa,n) %jiejiaozhi.m 解卷积交织函数 %n=28 %aa 解卷积交织前原分组序列 %bb 解卷积交织后分组序列
%序号重排方式: cc=[ 1 23 17 11 5 17 21 8 2 24 18 12 6 28 15 9 3 25 19 13 7 22 16 10 4 26 20 14 ]; for i=1:n end
if (r<0) else end
channel_output(i)=0; channel_output(i)=1;
end
[decoder_output,survivor_state,cumulated_metric]=viterbi(G,k,channel_ output);
[decoder_output_jjz28]=jiejiaozhi(decoder_output,28); %解卷积交织 %length(decoder_output),pause [h4output,h7output]=h47(decoder_output_jjz28); for i=1:N%length(h4output) if(h4output(i)~=dsource(i)) end
MATLAB 源程序
function [aa]=jiaozhi_nocnv(bb,n) %jiaozhi_nocnv.m 循环等差交织函数 %n=28 分组长度 %bb 循环等差交织前原分组序列 %序号重排方式: %j[n]=[ 1 2 21 25 16 20 11
%aa 循环等差交织后还原分组序列 24 6 19 ] 14 5 9 4 27 22 17 8 12 3 7
[decoder_output,survivor_state,cumulated_metric]=viterbi(G,k,channel_ [decoder_output_jjz28]=jiejiaozhi(decoder_output,28); [h4output,h7output]=h47(decoder_output_jjz28); for j=1:loop for i=1:N
交织码的 Matlab 代码
从广义上说,交织编码属于分组编码,但由于采用存储器实现交织,它同时又具有 卷积编码的记忆特征。在发端,它将分组长度 L 的信息序列通过交织器重排,在收端 通过解交织器恢复原序列, 以求使信道中突发错误变为无记忆随机独立差错。 交织编码 是一种信道改造技术, 它通过信号设计将一个原来属于突发差错的有记忆信道改造为基 本上是独立差错的随机无记忆信道。 交织编码作为克服衰落信道中突发性干扰的有效方 法,通常和其它用于纠正无记忆独立差错的信道编码相结合构成级联码(见下文) ,广 泛应用于当代移动通信。 交织码通常表示为(M,N) ,分组长度 L=MN,交织方式用 M 行 N 列的交织矩阵 表示。一般,交织方式分为分组交织和卷积交织。分组交织的交织矩阵按列写入,按行 读出; 去交织矩阵按行写入按列读出。 卷积交织的交织矩阵和去交织矩阵的写入与读出 均按行进行。 本次仿真采用(7,4)卷积交织编码。 性能参数如下:
SNR=exp(snr_in_dB*log(10)/10);%Eb/N0 sgma=E/sqrt(2*SNR); N=16;
loop=10^5/N; %仿真序列长度10^5,运行时间约8分钟; Ns=N*loop;
G=[1 0 1 1; 1 1 1 1]; %(2,1,3)卷积码编码矩阵 k=1; numoferr_cnv_jz_74=0; temp=0; dsource=zeros(1,N);
标准级联码系统框图
编码器
输入
外编码器 (分组线性码)
交织器
内编码器 (卷积码)
信 道 输出 外译码器 (分组线性码) 内译码器 (卷积码)
去交织器
译码器 事实上, 我们可以把系统框图中外编码器、 交织器和内编码器三部分级联后的总体, 看作一个级联码的编码器,同理,外译码器、去交织器和内译码器三部分级联后的总体 构成了级联码的译码器。 本次仿真外编码采用(7,4)HAMMING 码,内编码采用(2,1,3)卷积码。交 织编码采用(7,4)卷积交织编码或循环等差交织编码。除特别说明外,交织编码采用 前者即(7,4)卷积交织编码。 各编码性能参数如前所述。 仿真时, 首先进行了级联码和仅内码时的性能比较, 接着还比较了上文交织码部分 两种交织方式的性能,同时还在最后对(7,4)HAMMING 码、 (2,1,3)卷积码、 级联码各仿真结果进行了综合比较。 1. 级联码和仅内码时的性能比较:
smld_err_prb_cnv=zeros(length(SNRindB1)); SNRindB2=0:0.1:16;
15
10
28
23
18
13
26
j=1;
for i=1:n
end
j=rem(j+5-1,n)+1; %序号重排方式迭代算法 aa(n+1-i)=bb(j);
%jiaozhi_nocnv.m 循环等差交织函数 function [bb]=jiejiaozhi_nocnv(aa,n) %jiaozhi_nocnv.m 解循环等差交织函数 %n=28 分组长度 %aa 解循环等差交织前原分组序列 %序号重排方式: %j[n]=[ 1 2 21 25 16 20 11
bb(cc(i))=aa(i);
%jiejiaozhi.m 解卷积交织函数
特别的,本次仿真还采用了一种循环等差交织编码。所谓循环等差,是指将序号从 大到小顺时针排成一圈,从 1 开始等间隔逆时针取 28 个数,间隔为 4,这样依次取的 28 个数即序号重排方式。 性能参数如下:
1 24 19 14 9 4 27 22 17 12 7 2 25 20 交织矩阵: 15 10 5 28 23 18 13 8 3 26 21 16 11 6
分组交织前序号: [ 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ]; 循环等差交织后序号重排: [ 1 24 19 14 9 4 27 22 17 12 7 2 25 20 15 10 5 28 23 18 13 8 3 26 21 16 11 6]; 性能分析: 1. 任何长度小于等于 M + 3 = 7 + 3 =10 的突发差错,经交织、去交织后 成为独立差错。 2. 任何长度大于 M + 3 = 7 + 3 =10 的突发差错,经交织、去交织后有可 能变成短突发差错。 3. 特殊的,间隔为 M + 3 = 7 + 3 =10 的独立差错,经交织、去交织后会 变成长度为 N - 1= 4 – 1 =3 的突发差错。 4. 特殊的,间隔为…4、5、4、5…的独立差错,经交织、去交织后会变 成长度为 5 或 6 的突发差错。 从前 3 条性能分析的比较看, 循环等差交织比卷积交织更好。 但是从第 4 条看, 循环等差交织比卷积交织又差了。 因此, 只能通过实际仿真来比较两种交织方式的 性能(见下文级联码部分) 。
级联码
在许多实际信道中, 出现的误码既不是单纯随机独立差错, 也不是明显的单个突发 差错,而是混合型差错。级联码就是最常用于纠正这类混合型差错的一种性能优良,高 效的编码方式。 按照 NASA 1984 年给出的标准级联码系统,级联码的编码被分成外编码、交织编 码和内编码三部分,其中外编码采用分组线性码,内编码采用卷积码。标准级联码系统 框图如下:
1 23 17 11 5 27 21 8 2 24 18 12 6 28 交织矩阵: 15 9 3 25 19 13 7 22 16 10 4 26 20 14
分组卷积交织前序号: [ 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ]; 卷积交织后序号重排: [ 1 23 17 11 5 17 21 8 2 24 18 12 6 28 15 9 3 25 19 13 7 22 16 10 4 26 20 14 ]; 性能分析: 1. 任何长度小于等于 M = 7 的突发差错,经交织、去交织后成为独立差 错。 2. 任何长度大于 M = 7 的突发差错,经交织、去交织后有可能变成短突 发差错。 3. 特殊的,间隔为 M = 7 的独立差错,经交织、去交织后会变成长度为 N = 4 的突发差错。
numoferr_cnv_jz_74=numoferr_cnv_jz_74+1;
end
end
numoferr_cnv_jz_74,
p=numoferr_cnv_jz_74/Ns;%length(decoder_output),pause
%smldPe55_cnv_jz_74.m 二进制双极性级联码(卷积交织)通信系统蒙特卡罗仿真函数 %ce55_cnv_ja_74.m二进制双极性级联码(卷积交织)通信系统的蒙特卡罗仿真绘图 %外编码采用(7,4)HAMMING码 %内编码采用(2,1,3)卷积码 %交织编码采用(7,4)卷积交织编码 %仿真序列长度10^5,运行时间约3.5小时 echo on SNRindB1=0:1:16; smld_err_prb=zeros(length(SNRindB1));
MATLAB 源程序
function [aa]=jiaozhi(bb,n) %jiaozhi.m 卷积交织函数 %n=28 分组长度 %bb 卷积交织前原分组序列 %aa 卷积交织后分组序列 %序号重排方式: cc=[ 1 23 17 11 5 17 21 8 2 24 18 12 6 28 15 9 3 25 19 13 7 22 16 10 4 26 20 14 ];