收藏 分销(赏)

用matlab模拟FEC和交织两种方式培训资料.docx

上传人:快乐****生活 文档编号:4116971 上传时间:2024-07-30 格式:DOCX 页数:6 大小:30.15KB 下载积分:6 金币
下载 相关 举报
用matlab模拟FEC和交织两种方式培训资料.docx_第1页
第1页 / 共6页
用matlab模拟FEC和交织两种方式培训资料.docx_第2页
第2页 / 共6页


点击查看更多>>
资源描述
用matlab模拟FEC和交织两种方式 用matlab模拟FEC和交织两种方式 FEC(前向纠错方式): 交织 >> s1=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]; >> x1=(reshape(s1,8,7))'; >> x1(2,2)=0;x1(2,3)=0; >> x1(2,4)=0;x1(2,5)=0; >> s2=reshape(x1,1,56); >> x2=reshape(s2,7,8); >> x2(2,2)=10;x2(2,3)=11; >> s3=reshape(x2',1,56); >> a=[s1,s2,s3]; >> plot(s1,s2); x1 = 1 2 3 4 5 6 7 8 9 0 0 0 0 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 L=1000; M=4;%每个符号的比特数 N=2^M-1;%编码后码字长度 K=N-4;%信息长度 MSG=randint(L,1);%随机产生L比特信号 TP=gftuple([-1:N-1]',M);%产生加罗华域元素 PG=rspoly(N,K);%产生生成式 [CODE,ADDED]=rsenco(MSG,TP,K);%编码 NOI=rand(length(CODE)/M,1)<03;%加入3%的噪声 NOI=(NOI*ones(1,M))';%产生突发错误 NOI=NOI(:); CODE_NOI=rem(CODE+NOI,2);%噪声加入信号 [DEC,ERR,CCODE,ERR_C]=rsdeco(CODE_NOI,TP,K);%译码 MSG=[MSG;zeros(ADDED,1)];%调整长度 max(abs(DEC-MSG));%比较 X=[1:length(NOI)]; Z=[1:M*N:length(NOI)]; Y=zeros(1,length(Z)); Z=[Z;Z]; Y=[Y+min(ERR_C);Y+max(ERR_C)]; subplot(211); plot(X,NOI,'yo',X,ERR_C,'rx',Z,Y,'g-'); title('Error Detection Record'); xlabel('o--placed error;x--detected error;vertical bar: RS-DECO section.'); axis([1,length(NOI),min(ERR_C),max(ERR_C)]); X=[1:length(MSG)]; Z=[1:M*K:length(MSG)]; Y=zeros(1,length(Z)); Z=[Z;Z]; Y=[Y;Y+max(MSG)]; subplot(212); plot(X,MSG,'yo',X,DEC,'rx',Z,Y,'g-'); title('Message and Decoded Signal Comparison'); xlabel('o--original message;x--decoded result.'); axis([1,length(MSG),min(min(MSG)),max(max(MSG))]); st1 = 27221; st2 = 4831; % States for random number generator n = 7; k = 4; % Parameters for Hamming code msg = randint(k*500,1,2,st1); % Data to encode code = encode(msg,n,k,'hamming/binary'); % Encoded data % Create a burst error that will corrupt two adjacent codewords. errors = zeros(size(code)); errors(n-2:n+3) = [1 1 1 1 1 1]; % With Interleaving %------------------ inter = randintrlv(code,st2); % Interleave. inter_err = bitxor(inter,errors); % Include burst error. deinter = randdeintrlv(inter_err,st2); % Deinterleave. decoded = decode(deinter,n,k,'hamming/binary'); % Decode. disp('Number of errors and error rate, with interleaving:'); [number_with,rate_with] = biterr(msg,decoded) % Error statistics % Without Interleaving %--------------------- code_err = bitxor(code,errors); % Include burst error. decoded = decode(code_err,n,k,'hamming/binary'); % Decode. disp('Number of errors and error rate, without interleaving:'); [number_without,rate_without] = biterr(msg,decoded) % Error statistics Number of errors and error rate, with interleaving: number_with = 0 rate_with = 0 Number of errors and error rate, without interleaving: number_without = 4 rate_without = 0.0020 >> msg=randint(k*500,1,2,st1); >> code = encode(msg,n,k,'hamming/binary'); >> errors = zeros(size(code)); errors(n-2:n+3) = [1 1 1 1 1 1]; >> inter = randintrlv(code,st2); >> inter_err = bitxor(inter,errors); >> deinter = randdeintrlv(inter_err,st2); >> decoded = decode(deinter,n,k,'hamming/binary'); >> disp('Number of errors and error rate, with interleaving:'); Number of errors and error rate, with interleaving: >> code_err = bitxor(code,errors); >> decoded = decode(code_err,n,k,'hamming/binary'); >> disp('Number of errors and error rate, without interleaving:'); Number of errors and error rate, without interleaving: >> [number_without,rate_without] = biterr(msg,decoded); L=1000; M=4;%每个符号的比特数 N=2^M-1;%编码后码字长度 K=N-4;%信息长度 MSG=randint(L,1);%随机产生L比特信号 TP=gftuple([-1:N-1]',M);%产生加罗华域元素 PG=rsgenpoly(N,K);%产生生成式 [CODE,ADDED]=rsenco(MSG,TP,K);%编码 R=[0:0.01:1];%错误率 for j=1:length(R) %循环修改错误率 NOI=rand(length(CODE)/M,1)<R(j);%加入R%的噪声 NOI=(NOI*ones(1,M))';%产生突发错误 NOI=NOI(:); CODE_NOI=rem(CODE+NOI,2);%噪声加入信号 [DEC,ERR,CCODE,ERR_C]=rsdeco(CODE_NOI,TP,K);%译码 MSG=[MSG;zeros(ADDED,1)];%调整长度 error=0;%错误码计数初值 Q=length(DEC);%码长度 for i=1:Q %循环寻找错误码 if(MSG(i)~=DEC(i)) error=error+1; end end p(j)=error/Q;%误码率
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服