資源簡(jiǎn)介
基于MATLAB通過對(duì)未編碼,漢明碼 ,循環(huán)碼及卷積碼的信噪比進(jìn)行比較,比較它們之間的性能

代碼片段和文件信息
%%?未編碼,漢明碼,循環(huán)碼,卷積碼性能比較
clc;
clear?all;
cycl=50;%發(fā)生數(shù)據(jù)幀數(shù)
SNR=0:1:10;%信噪比
BER0=zeros(1length(SNR));%誤碼率,生成長度為length(SNR)的零矩陣
BER1=zeros(1length(SNR));
BER2=zeros(1length(SNR));
BER3=zeros(1length(SNR));
BER4=zeros(1length(SNR));
BER5=zeros(1length(SNR));
%%?網(wǎng)絡(luò)結(jié)構(gòu)
trellis1=poly2trellis(3[7?5]);%從電路求出參數(shù),或已知參數(shù),poly2trellis是將卷積碼多項(xiàng)式轉(zhuǎn)換成MATLAB的trellis網(wǎng)格表達(dá)式的函數(shù),3是卷積碼約束長度,5x7矩陣
trellis2=poly2trellis(4[1317]);%4為(213)卷積碼約束長度,1317為二進(jìn)制生成矩陣?
%%?未編碼的誤碼率
for?n=1:cycl
????for?k=1:length(SNR)
????????msg=randint(19996);%輸入信息
????????modbit0=pskmod(msg2);%調(diào)制
????????y0=awgn(modbit0SNR(k)‘measured‘);%在傳輸序列中加入AWGN噪聲
????????demmsg0=pskdemod(y02);%解調(diào)
????????recode0=reshape(demmsg0‘1[]);%recode0矩陣中元素是從demmsg0‘中得到,1行
????????[num0rat0]=biterr(recode0msg);%誤碼計(jì)算
????????BER0(nk)=rat0;
????end
end
BER0=mean(BER0);%求平均值
%%??漢明編碼的誤碼率
for??n=1:cycl
????for?k=1:length(SNR)%編碼?的序列,調(diào)制后?經(jīng)過?高斯白噪聲信道,再解調(diào)制,再糾錯(cuò)后?求誤碼?
????????msg=randint(19996);%輸入信息
????????code1=encode(msg74‘hamming‘);%(74)漢明編碼?
????????modbit1=pskmod(code12);%調(diào)制
????????y1=awgn(modbit1SNR(k)‘measured‘);%在傳輸序列中加入AWGN噪聲
????????demmsg1=pskdemod(y12);%解調(diào)
????????recode=reshape(demmsg1‘1[]);%recode1矩陣中元素是從demmsg1‘中得到,1行
????????bitdecoded=decode(recode74‘hamming‘);%譯碼
????????%%?計(jì)算誤碼率
????????error1=(bitdecoded~=msg);
????????errorbits=sum(error1);
????????BER1(nk)=errorbits/length(msg);
????end
end
BER1=mean(BER1);%求平均值
%%??(157)循環(huán)碼的誤碼率
?for?n=1:cycl
????for?k=1:length(SNR)%編碼?的序列,調(diào)制后?經(jīng)過?高斯白噪聲信道,再解調(diào)制,再糾錯(cuò)后?求誤碼?
????????msg=randint(19996);%輸入信息
?????????code2=encode(msg157‘cyclic‘[1?0?0?0?1?0?1?1?1]);%(157)循環(huán)編碼
?????????modbit2=pskmod(code22);%調(diào)制
????????y2=awgn(modbit2SNR(k)‘measured‘);%在傳輸序列中加入AWGN噪聲
????????demmsg2=pskdemod(y22);%解調(diào)
????????recode2=reshape(demmsg2‘1[]);%recode矩陣中元素是從demmsg2‘中得到,1行
????????decodedbit=decode(recode2157‘cyclic‘[1?0?0?0?1?0?1?1?1]);%譯碼
????????%
????????%計(jì)算誤碼率
?????????error2=(decodedbit~=msg);
????????errorbits=sum(error2);
????????BER2(nk)=errorbits/length(msg);
????end????
?end
???BER2=mean(BER2);?%求平均值
???
%%?(212)卷積編碼的誤碼率
for?n=1:cycl
????for?k=1:length(SNR)
????????msg=randint(19996);%輸入信息
????????code3=convenc(msgtrellis1);%編碼
????????modbit3=pskmod(code32);%調(diào)制
????????y3=awgn(modbit3SNR(k)‘measured‘);%在傳輸序列中加入AWGN噪聲
????????demmsg3=pskdemod(y32);%解調(diào)
????????recode3=reshape(demmsg3‘1[]);%recode3矩陣中元素是從demmsg3‘中得到,1行
????????tblen=30;%回潮長度
????????decoded3=vitdec(recode3trellis1tblen‘cont‘‘hard‘);%維特比譯碼
????????[num3rat3]=biterr(double(decoded3(tblen+1:end))msg(1:end-tblen));%誤碼計(jì)算
????????BER3(nk)=rat3;
????end
end
BER3=mean(BER3);%求平均值
%%??(155)BCH碼的誤碼率
?for?n=1:cycl
????for?k=1:length(SNR)%編碼?的序列,調(diào)制后?經(jīng)過?高斯白噪聲信道,再解調(diào)制,再糾錯(cuò)后?求誤碼?
????????msg=randint(110000);%輸入信息
?????????code4=encode(msg155‘bch‘);%(155)BCH編碼
?????????modbit4=pskmod(code42);%調(diào)制
????????y4=awgn(modbit4SNR(k)‘measured‘);%在傳輸序列中加入AWGN噪聲
????????demmsg4=p
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????4784??2016-06-29?13:30??糾錯(cuò)碼課設(shè)\gl.m
?????文件?????256783??2016-06-29?13:34??糾錯(cuò)碼課設(shè)\未編碼,漢明碼??,循環(huán)碼及卷積碼性能比較.docx
?????目錄??????????0??2016-06-29?13:36??糾錯(cuò)碼課設(shè)
-----------?---------??----------?-----??----
???????????????261567????????????????????3
評(píng)論
共有 條評(píng)論