交织码的Matlab代码
更新时间:2023-11-28 16:37:01 阅读量: 教育文库 文档下载
- matlab交织函数推荐度:
- 相关推荐
交织码的Matlab代码
从广义上说,交织编码属于分组编码,但由于采用存储器实现交织,它同时又具有卷积编码的记忆特征。在发端,它将分组长度L的信息序列通过交织器重排,在收端通过解交织器恢复原序列,以求使信道中突发错误变为无记忆随机独立差错。交织编码是一种信道改造技术,它通过信号设计将一个原来属于突发差错的有记忆信道改造为基本上是独立差错的随机无记忆信道。交织编码作为克服衰落信道中突发性干扰的有效方法,通常和其它用于纠正无记忆独立差错的信道编码相结合构成级联码(见下文),广泛应用于当代移动通信。
交织码通常表示为(M,N),分组长度L=MN,交织方式用M行N列的交织矩阵表示。一般,交织方式分为分组交织和卷积交织。分组交织的交织矩阵按列写入,按行读出;去交织矩阵按行写入按列读出。卷积交织的交织矩阵和去交织矩阵的写入与读出均按行进行。
本次仿真采用(7,4)卷积交织编码。 性能参数如下:
?123171152721??82241812628???交织矩阵:??
15932519137????2216104262014??分组卷积交织前序号:
[ 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的突发差错。
MATLAB源程序
function [aa]=jiaozhi(bb,n) %jiaozhi.m 卷积交织函数 %n=28 分组长度
? 卷积交织前原分组序列 a 卷积交织后分组序列
%序号重排方式:
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
aa(i)=bb(cc(i)); end
%jiaozhi.m 卷积交织函数
function [bb]=jiejiaozhi(aa,n) %jiejiaozhi.m 解卷积交织函数 %n=28
a 解卷积交织前原分组序列 ? 解卷积交织后分组序列
%序号重排方式:
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
bb(cc(i))=aa(i); end
%jiejiaozhi.m 解卷积交织函数
特别的,本次仿真还采用了一种循环等差交织编码。所谓循环等差,是指将序号从大到小顺时针排成一圈,从1开始等间隔逆时针取28个数,间隔为4,这样依次取的28个数即序号重排方式。
性能参数如下:
?12419149427??221712722520???交织矩阵:??
?1510528231813???83262116116??分组交织前序号:
[ 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条看,循环等差交织比卷积交织又差了。因此,只能通过实际仿真来比较两种交织方式的性能(见下文级联码部分)。
MATLAB源程序
function [aa]=jiaozhi_nocnv(bb,n) %jiaozhi_nocnv.m 循环等差交织函数 %n=28 分组长度
? 循环等差交织前原分组序列 a 循环等差交织后还原分组序列
%序号重排方式:
%j[n]=[ 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 ] j=1; for i=1:n
j=rem(j+5-1,n)+1; %序号重排方式迭代算法 aa(n+1-i)=bb(j); end
%jiaozhi_nocnv.m 循环等差交织函数
function [bb]=jiejiaozhi_nocnv(aa,n) %jiaozhi_nocnv.m 解循环等差交织函数 %n=28 分组长度
a 解循环等差交织前原分组序列 ? 解循环等差交织后还原分组序列
%序号重排方式:
%j[n]=[ 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 ] j=1; for i=1:n
j=rem(j+5-1,n)+1; %序号重排方式迭代算法 bb(j)=aa(n+1-i); end
%jiaozhi_nocnv.m 解循环等差交织函数
级联码
在许多实际信道中,出现的误码既不是单纯随机独立差错,也不是明显的单个突发差错,而是混合型差错。级联码就是最常用于纠正这类混合型差错的一种性能优良,高效的编码方式。
按照 NASA 1984年给出的标准级联码系统,级联码的编码被分成外编码、交织编码和内编码三部分,其中外编码采用分组线性码,内编码采用卷积码。标准级联码系统框图如下:
标准级联码系统框图
编码器
输入 输出 外编码器 (分组线性码) 交织器 内编码器 (卷积码) 信 道 外译码器 (分组线性码) 内译码器 (卷积码) 去交织器 译码器
事实上,我们可以把系统框图中外编码器、交织器和内编码器三部分级联后的总体,看作一个级联码的编码器,同理,外译码器、去交织器和内译码器三部分级联后的总体构成了级联码的译码器。
本次仿真外编码采用(7,4)HAMMING码,内编码采用(2,1,3)卷积码。交织编码采用(7,4)卷积交织编码或循环等差交织编码。除特别说明外,交织编码采用前者即(7,4)卷积交织编码。
各编码性能参数如前所述。 仿真时,首先进行了级联码和仅内码时的性能比较,接着还比较了上文交织码部分两种交织方式的性能,同时还在最后对(7,4)HAMMING码、(2,1,3)卷积码、级联码各仿真结果进行了综合比较。
1. 级联码和仅内码时的性能比较:
MATLAB源程序
function [p]=smldPe55_cnv_jz_74(snr_in_dB)
%smldPe55_cnv_jz_74.m 二进制双极性级联码(卷积交织)通信系统蒙特卡罗仿真函数 %外编码采用(7,4)HAMMING码 %交织编码采用(7,4)卷积交织编码 %内编码采用(2,1,3)卷积码 %snr_in_dB 信噪比 %p 误码率% E=1;
SNR=exp(snr_in_dB*log(10)/10);?/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);
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));
[decoder_output,survivor_state,cumulated_metric]=viterbi(G,k,channel_output);
[decoder_output_jjz28]=jiejiaozhi(decoder_output,28); [h4output,h7output]=h47(decoder_output_jjz28); for j=1:loop for i=1:N temp=rand; if (temp<0.5) dsource(i)=0; else
dsource(i)=1; end 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 for i=1:length(output_cnv_encd) if(output_cnv_encd(i)==0) r=-E+gngauss(sgma); else
r=E+gngauss(sgma); end if (r<0)
channel_output(i)=0; else
channel_output(i)=1; end 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))
numoferr_cnv_jz_74=numoferr_cnv_jz_74+1; end end end
numoferr_cnv_jz_74,
p=numoferr_cnv_jz_74/Ns;%length(decoder_output),pause
%smldPe55_cnv_jz_74.m 二进制双极性级联码(卷积交织)通信系统蒙特卡罗仿真函数
?55_cnv_ja_74.m二进制双极性级联码(卷积交织)通信系统的蒙特卡罗仿真绘图 %外编码采用(7,4)HAMMING码 %交织编码采用(7,4)卷积交织编码 %内编码采用(2,1,3)卷积码
%仿真序列长度10^5,运行时间约3.5小时 echo on
SNRindB1=0:1:16;
smld_err_prb=zeros(length(SNRindB1)); smld_err_prb_cnv=zeros(length(SNRindB1)); smld_err_prb_cnv_jz_74=zeros(length(SNRindB1)); SNRindB2=0:0.1:16;
theo_err_prb55=zeros(length(SNRindB2)); for i=1:length(SNRindB1)
smld_err_prb(i)=smldPe55(SNRindB1(i));
smld_err_prb_cnv(i)=smldPe55_cnv(SNRindB1(i));
smld_err_prb_cnv_jz_74(i)=smldPe55_cnv_jz_74(SNRindB1(i)); end
for i=1:length(SNRindB2)
SNR=exp(SNRindB2(i)*log(10)/10); theo_err_prb55(i)=Qfunct(sqrt(2*SNR)); Qfunct y=(1/2)*erfc(x/sqrt(2)); End %绘图函数 figure;
semilogy(SNRindB2,theo_err_prb55,'b:'); axis([0,16,1e-5,1]); xlabel('Eb/N0 in dB'); ylabel('Pe');
title('单用户未扩频级联交织码误比特率曲线,与仅内码和未编码时误比特率曲线比较'); hold on
semilogy(SNRindB1,smld_err_prb,'b*-');
semilogy(SNRindB1,smld_err_prb_cnv,'gs-'); semilogy(SNRindB1,smld_err_prb_cnv_jz_74,'rx-');
?55_cnv_jz_74.m二进制双极性级联码(卷积交织)通信系统的蒙特卡罗仿真绘图
运行结果
下图(ce55_cnv_jz_74的运行结果)给出了不同信噪比条件下,发送100000比特的二进制双极性级联码 ( 外编码采用(7,4)HAMMING码,交织编码采用(7,4)卷积交织编码,内编码采用(2,1,3)卷积码 ) 通信系统的蒙特卡罗仿真结果,二进制双极性(2,1,3)卷积编码通信系统的蒙特卡罗仿真结果,以及未编码系统的仿真结果和未编码系统的理论值曲线。
从下图的仿真结果可见,级联码与仅内码时相比,在信噪比高于2dB时,可以更好地降低二进制双极性通信系统的误码率,从而能更进一步提高通信的有效性。但是,在信噪比过低时(低于2dB),级联码在降低二进制双极性通信系统的误码率性能方面,反而比与仅内码时稍差一些。换言之,仿真结果表明,在信噪比低于2dB时,级联码的外编码和交织器不仅没有起到进一步纠错的作用,反而会降低内编码器的纠错性能,但是和未编码时相比,仍然能够降低二进制双极性通信系统的误码率,提高通信的有效性。
正在阅读:
交织码的Matlab代码11-28
语音信号滤波去噪 - 使用flattopwin窗设计的FIR滤波器01-11
2016考研英语二真题及答案解析03-18
高中生物竞赛辅导05-15
浅谈国有企业员工的激励机制10-06
项目全寿命管理奖金分配办法07-29
关于安装工程结算审核的步骤及方法04-18
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 交织
- 代码
- Matlab
- 小学生学习障碍现状的调查报告(实践课题) - 图文
- 2018年东师春季初等教育改革与发展
- 电子测量中实验误差分析与控制
- 冬季施工养护
- 总体规划实地调研报告 - 图文
- 单元幕墙设计说明 - 图文
- 安徽省阜阳市成效中学2014 - 2015学年高一物理上学期期末试卷(含解析)
- 江苏省镇江市2019年中考语文试题(解析版)
- 快乐十分钟1
- 教师应该守住自己的师德底线
- 大学生可行性报告
- 2017年12月2日中小学生人格教育与学习能力
- 2018年人教部编版七年级语文上册第一单元4古代诗歌四首教案
- (尔雅)现代城市生态与环境学试卷
- 一年级品德与生活上册我的家教学设计1北师大版〔精品篇〕
- 评新出版的两本文化语言学著作
- 金融英语第3
- 年终工作总结题目
- 植物检疫原理和方法思考题库 - 图文
- 浅谈多媒体在中职英语教学中的使用-精选文档