1 简介
Matlab模拟循环编码译码
2 部分代码
function [ C_decode ] = Jiaoyanzi_decode( n,k,R,gx )%UNTITLED2 Summary of this function goes here% Detailed explanation goes here% n 码字长度,k为信息为长度,R为接收码字序列,gx为生成多项式序列%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%校验子译码%g=zeros(1,n-k+1);for i=1:n-k+1 %倒序的生成多项式 对应的多项式为:1+x+x3 生成多项式序列后面为高位g(i)=gx(n-k+1+1-i);endR1=zeros(1,n);for i=1:nR1(i)=R(n+1-i); %将循环码cm进行正序,因为我们习惯码字序列高位在前,低位在后。endp=2;[q,s]=gfdeconv(R1,g,2); %gfdeconv函数输入和输出的多项式的对应的序列后面为高位。 移位后的m(x)与g(x)做模2除法得到商q和余式r(x)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[s1,s2]=size(s);if s2==3 %将S校验子序列转化为十进制数SS=4*s(3)+2*s(2)+s(1);elseif s2==2SS=2*s(2)+s(1);elseif s2==1SS=s(1);endif SS==0EE=[0,0,0,0,0,0,0];elseif SS==1EE=[0,0,0,0,0,0,1];elseif SS==2EE=[0,0,0,0,0,1,0];elseif SS==4EE=[0,0,0,0,1,0,0];elseif SS==3EE=[0,0,0,1,0,0,0];elseif SS==6EE=[0,0,1,0,0,0,0];elseif SS==7EE=[0,1,0,0,0,0,0];elseif SS==5EE=[1,0,0,0,0,0,0];endmap=find(EE==1); %确定接收码字错误的位置R(map)=~R(map); %错误码字译码C_decode=R;end
3 仿真结果

4 参考文献
[1]段晓霞. 基于MATLAB编码的PCM编译码实现[J]. 廊坊师范学院学报:自然科学版, 2019, 19(4):5.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
这篇博客详细介绍了如何使用MATLAB编写循环编码译码算法,包括校验子译码过程和基于生成多项式及接收码字序列的错误检测与纠正。通过实例展示了如何处理循环码的错误定位并进行有效修复。
1773

被折叠的 条评论
为什么被折叠?



