交織的原理
交織使信道中的突發錯誤分散開來,將原來屬於突發錯誤的信道改成獨立的隨機差錯信道,從而發揮糾錯編碼的作用。
即交織實際是一種信道改造技術。
本質:交織是指一個數據序列在一一對應的條件下進行數據的位置重排過程。
常用的交織器主要有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
%可以看出交織器在信道改造中的作用