交织的原理
交织使信道中的突发错误分散开来,将原来属于突发错误的信道改成独立的随机差错信道,从而发挥纠错编码的作用。
即交织实际是一种信道改造技术。
本质:交织是指一个数据序列在一一对应的条件下进行数据的位置重排过程。
常用的交织器主要有3种:
矩阵分组式,伪随机式,半伪随机式。
由于序列较短的伪随机数之间的相关特性较大,对于实时性要求高、信息帧较短的通信系统,矩阵分组式优于其他2种。
随着信息帧长度的增加,交织长度也相应增长,此时若采用矩阵分组式交织器,交织前后信息序列的不动点增多,伪随机数产生更加均匀,交织前后的序列相关性减小,
所以对于译码精度要求较高的通信系统,应该采用随机交织器。
半伪随机交织方式则为折衷的方案。
我做了哪些修改
做的修改有:
msg=randint(k*500,1,2,st1)改成了msg=randi([0,1],k*500,1); %信息序列
st1这个随机数种子我没用到
st2这个随机数种子被用到交织和解交织中了,我没有修改
代码
%来自《无线通信的MATLAB和FPGA实现》
%使用MATLAB实现交织器和(7,4)汉明码编码的级联,并和未进行交织的性能进行比较。
clear all;close all;clc;
st1=27221;st2=4831; %定义随机数生成的状态
n=7;k=4; %汉明码的参数
msg=randi([0,1],k*500,1); %信息序列
code=encode(msg,n,k,'hamming/binary'); %编码
%产生突发错误,使得相邻码字发生错误
errors=zeros(size(code));errors(n-2:n+3)=[1 1 1 1 1 1];
inter=randintrlv(code,st2);%交织
inter_err=bitxor(inter,errors); %加入突发错误
deinter=randdeintrlv(inter_err,st2); %解交织
decoded=decode(deinter,n,k,'hamming/binary'); %译码
disp('Number of errors and error rate, WITH interleaving:');
[number_with,rate_with]=biterr(msg,decoded) %误码数据
%没有交织
code_err=bitxor(code,errors);
decoded=decode(code_err,n,k,'hamming/binary');%译码
disp('Number of errors and error rate, WITHOUT interleaving:');
[number_without,rate_without]=biterr(msg,decoded) %误码数据
%结论
%有交织时接收端的误码率rate_with=0
%无交织时接收端的误码率rate_without=0.002
%可以看出交织器在信道改造中的作用

