matlab2007以上版本的ldpc编码器(转载)

matlab通信工具包包含了一个fec差错控制编码的工具包,其中有fec.ldpcenc,fec.ldpcdec是涉及有关ldpc编码的。使用过程如下:

首先要产生一个稀疏校验矩阵H,n列,(n-k)行。且最后(n-k)列为一个可逆阵。

编码:

直接使用fec.ldpcenc时,matlab默认使用一个32400*64800的ldpc校验矩阵。其第一行个数为1,2到32400行为6,第1到12960列1个数为8,12961到32400列1个数为3,剩下32401到64800的为一个下三角阵,其元素和次1对角元素为1,其余为0。此ldpc编码阵由DVB-S.2而来,可达到10的-7次方误包率。

格式如下:l=fec.ldpcenc(H);

产生的l为一结构体,包含如下参数:l.ParityCheckMatri:校验矩阵;

l.BlockLength:码元长度;n

l.NumInfoBits:信息位长度;k

l.NumParityBits:校验位长度;n-k

l.EncodingAlgorithm:编码算法 “ForwardSubstitution”“Backward Substitution”“MatrixInverse”

然后使用encode函数进行编码:codeword=encode(l,msg);其中msg为待编的消息序列,其大小须为1*k

解码:

l=fec.ldpcdec(H),若省略H,则使用上述默认的校验矩阵。

l同样为结构体,由如下元素:

l.ParityCheckMatrix:校验矩阵

l.BlockLength: 码长

l.NumInfoBits: 信息位长

l.NumParityBits: 校验位长

l.DecisionType: 判决方式'Hard decision','Soft decision'

l.OutputFormat: 'Information part' 'Whole codeword'

l.DoParityChecks: 是否做奇偶校验,默认为'No',当为'Yes'时,每次迭代后均进行校验,当为全零时结束迭代。

l.NumIterations: 迭代次数

l.ActualNumIterations: Actual number of iterations executed for the last codeword. Initial value is [].

l.FinalParityChecks:(n-k)-by-1 vector. 1s indicate the parity checks that are not satisfied when the decoder stops. Initial value is [].

然后采用decode函数解码:

decoded=decode(l,llr);l为ldpc的译码结构体变量,llr为对数似然比,大小为1*BlockLength

译码结果与l.DecisionType有关,输出与l.OutputFormat有关。这里的迭代译码算法为消息传递算法。

你可能感兴趣的:(matlab2007以上版本的ldpc编码器(转载))