Matlab模拟循环编码译码

这篇博客详细介绍了如何使用MATLAB编写循环编码译码算法,包括校验子译码过程和基于生成多项式及接收码字序列的错误检测与纠正。通过实例展示了如何处理循环码的错误定位并进行有效修复。

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:n    R1(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==2    SS=2*s(2)+s(1);elseif s2==1      SS=s(1);endif SS==0    EE=[0,0,0,0,0,0,0];elseif SS==1    EE=[0,0,0,0,0,0,1];elseif SS==2    EE=[0,0,0,0,0,1,0];elseif SS==4    EE=[0,0,0,0,1,0,0];elseif SS==3    EE=[0,0,0,1,0,0,0];elseif SS==6    EE=[0,0,1,0,0,0,0];elseif SS==7    EE=[0,1,0,0,0,0,0];elseif SS==5    EE=[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代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值