资源描述:
《matlab设计卷积编码和viterbi已实现_functions》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、%%---------------------------------------testViterbi.m--------------------------------------------------------------%%%%%AnnotatedbyQuanXuonNov.22,2011clearall;clc;close;delete*.mat;EsNodB=0:1:10;EsNo=10.^(EsNodB/10);N_samples=100;N_bits=512;fork=1:leng
2、th(EsNodB)form=1:N_samples%noisepowerWGNPower=1/EsNo(k);%foruncodedsystemWGNPower1=2/EsNo(k);%for1/2convolutionalcodedsystem%randommessagemsg=randint(1,N_bits);%unencodedatab=msg;%Encodedatabitstrel=poly2trellis(3,[75]);%Definetrellisb1=convenc(msg,trel
3、);%Encode%modulatex=1-2*b;x1=1-2*b1;%AWGNchannelh=ones(size(x));h1=ones(size(x1));%Gaussiannoisegenerationw=sqrt(WGNPower/2)*(randn(size(x))+sqrt(-1)*randn(size(x)));w1=sqrt(WGNPower1/2)*(randn(size(x1))+sqrt(-1)*randn(size(x1)));%recievedsignalsy=h.*x+
4、w;y1=h1.*x1+w1;%demodulateuncodeddataoutUncod=uncode(y,h);%Soft-decisionviterbidecodingoutVit1=simeudistVit(trel,y1);errrate(m)=mean(abs(outUncod-msg));errrate1(m)=mean(abs(outVit1-msg));end%formber(k)=mean(errrate)ber1(k)=mean(errrate1)end%forksemilogy
5、(EsNodB,ber,'k',EsNodB,ber1,'-r');gridonaxis([11010^-51])xlabel('10log(Eb/No)')ylabel('BER')title('AWGNchannelviterbidecoder');h=legend('uncoded','[2,1,2]convolutionalencoding');set(h,'Interpreter','none')saveconViterbi.mat;%EOF%%-----------------------
6、-----------------testViterbi.m------------------------------------------------------%%%%----------------------------------------simEudist.m------------------------------------------------------%%%%CalulatingEuclideandistance%%(x-y).^2-->xy;sincex=+1or-1
7、;yisthesameforeverybranch%%AnnotatedbyQuanXuonNov.22,2011functiondist=simEudist(x,y)leth=length(x);realx=real(x);realy=real(y);dist=0;fori=1:lethdist=dist+realx(i)*realy(i);end%EOF%%----------------------------------------simEudist.m--------------------
8、----------------------------------%%%%----------------------------------------uncode.m------------------------------------------------------%%%%AnnotatedbyQuanXuonNov.22,2011%%demodulatingtheuncodeddatafunctionunOut=uncode(y,h)fo