通信使用matlab三元码实验报告,通信原理实验报告(MatLab下循环码).doc

通信原理实验报告(MatLab下循环码)

通信原理实验报告 ----------基于MatLab下的循环码仿真关键词:生成多项式 信息码组 生成码组分析:循环码(n,k)是一种高效而重要的线性分组码,通过生成多项式g(x)可以得到一个完整的循环码组,在此我们使用matlab软件对其进行程序编写,程序由主程序,编码子函数,解码子函数组成,其中测试用的码为(7,4)循环码组,生成多项式为g(x)=x^3+x+1,

实验环境和运行平台WindowsXP +matlab命令窗口

代码主函数 (xunhuan.m)g=[1 0 1 1];u1=[0 0 0 1];u2=[0 0 1 0];u=[1 0 0 1];n=7;k=4;code=circue(u,g,n);code1=circue(u1,g,n);code2=circue(u2,g,n);

y1=decode(code,g,k);

编码函数 调用div.m编码 (circue.m)function code=circue(cin,g,n)[tmp k]=size(cin);jiaoyan=div(g,cin,n,k);jiaoyan=jiaoyan(k+1:end);code=[cin jiaoyan];

子函数 (div.m)生成效验码function jiaoyan=div(g,u,n,k)[x len_g]=size(g);

%g=[g zeros(1,n-k)];u=[u zeros(1,n-k)];[y len_u]=size(u);if(len_g>len_u) u=[zeros(1,len_g-len_u) u];else g=[zeros(1,len_u-len_g) g];enduu=find(u);gg=find(g);um=uu(1);gm=gg(1);beichu=u;while(um<=gm) tmp=gm-um; %gtmp=[g zeros(tmp)]; gtmp=zuoyi(g,tmp); check=xor(beichu,gtmp); uutmp=find(check); umtmp=uutmp(1); beichu=check; um=umtmp;endjiaoyan=beichu; 解码函数 调用shang.m解码 (decode.m)function y=decode(in,g,k)n=length(in);h=shang(n,g,k);hh=zeros(n-k,n);for i=1:(n-k) htmp=zuoyi(h,i-1); hh(n-k-i+1,:)=htmp;ends=in*hh';s=mod(s,2);e=s/hh';ss=sum(e');aa=find(ss==max(ss));aa=aa(1);e=e(aa,:);y=xor(in,e);

子函数1 产生错误图像 (shang.m)function h=shang(n,g,k);x=zeros(1,n+1);x(1)=1;x(n+1)=1;[t xm]=size(g);g=[zeros(1,n+1-xm) g];beichu=x;h1=zeros(1,n+1);h=zeros(1,n);a=find(beichu);am=a(1);b=find(g);bm=b(1);hci=bm-am;while(am<=bm) tmp=bm-am; h1(n+1-tmp)=1; gtmp=zuoyi(g,tmp); check=xor(beichu,gtmp); beichu=check; a=find(beichu);if(~isempty(a)) am=a(1);else break;endendh1=h1(2:end); for i=n-k:n h(n-i+n-k)=h1(i);end

子函数2 左移函数 (zuoyi.m)function aa=zuoyi(a,b)aa=[a(b+1:end) zeros(1,b)];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值