里德——索罗蒙码(RS码)是一类具有很强纠错能力的多进制BCH码。
RS码是线性分组码中的一种。相比其他线性分组码而言,在同样的编码效率下,RS码的纠错能力是特别强的,特别在短的中等码长下,其性能接近于理论值。
RS(n,k)码可以由m、n、k3个参数表示,其中m表示码元符号取自域\(GF(2^n)\),n为码字长度,k为信息段长度。
%本例中输入信息分为km比特一组,每组k个符号
%每个符号由m个比特组成
clear all;
m=4;%每个符号比特数
n=10;%码字长度
k=8;%每组符号数
t=(n-k)/2;%码的纠正能力
nw=1; %处理的码字个数
x=[0,1,2,3,4,5,6,7]; %输入的字符
msgw=gf(x,4);
c=rsenc(msgw,n,k);%RS编码
%—————信道部分———————————
cnoisy=c;
%—————信道部分———————————
%RS译码
[dc,nerrs,corrcode]= rsdec(cnoisy,n,k);
isequal(dc,msgw) & isequal(corrcode,c)
disp(['nerrs=',num2str(nerrs)]);
吐个槽,《无线通信的MATLAB和FPGA实现》这里给的代码太难看了,我给改成了上面这个样子。
感兴趣可以查函数文档进一步学习。