2024年2月15日發(fā)(作者:能源專業(yè))

課程名稱: 信息論與編碼
課程設(shè)計題目:
循環(huán)碼的編碼和譯碼程序設(shè)計
指導(dǎo)教師:
系 別: 專 業(yè):
學(xué) 號: 姓 名:
合 作 者
完成時間:
成績: 評閱人:
一、實驗?zāi)康模?
1、通過實驗了解循環(huán)碼的工作原理。
2、深刻理解RS 碼構(gòu)造、RS 編譯碼等相關(guān)概念和算法。
二、實驗原理
1、RS循環(huán)碼編譯碼原理與特點
設(shè)C使某移位C(1)線性分組碼的碼字集合,如果對任C?(cn?1,cn?2,?,c0)?C,它的循環(huán)碼為循環(huán)碼。
?(cn?2,cn?3,?c0,cn?1)也屬于C,則稱該該碼在結(jié)構(gòu)上有另外的限制,即一個碼字任意循環(huán)移位的結(jié)果仍是一個有效碼字。其特點是:(1)可以用反饋移位寄存器很容易實現(xiàn)編碼和伴隨式的計算;(2)由于循環(huán)碼有很多固有的代數(shù)結(jié)構(gòu),從而可以找到各種簡單使用的譯碼辦法。
如果一個線性碼具有以下的屬性,則稱為循環(huán)碼:如果n元組c?{c0,c1,?,cn?1}是子空間S的一個碼字,則經(jīng)過循環(huán)移位得到的c(1)?{cn?1,c0,?,cn?2}也同樣是S中的一個碼字;或者,一般來說,經(jīng)過j次循環(huán)移位后得到的c(j)?{cn?j,cn?j?1,?,cn?1,c0,c1,?,cn?j?1}也是S中的一個碼字。
RS碼的編碼系統(tǒng)是建立在比特組基礎(chǔ)上的,即字節(jié),而不是單個的0和1,因此它是非二進(jìn)制BCH碼,這使得它處理突發(fā)錯誤的能力特別強(qiáng)。
碼長:n?2?1
信息段:k?n?2t (t為糾錯符號數(shù))
監(jiān)督段:2t?n?k
最小碼段:d?2t?1
最小距離為d的本原RS碼的生成多項式為:g(x)=(x-α)(x-α2)(x-α3)…(x-αd-2)
信息元多項式為::m(x)=m0+m1x+m2x2+…+mk-1xk-1
循環(huán)碼特點有:
1)循環(huán)碼是線性分組碼的一種,所以它具有線性分組的碼的一般特性,且具有循環(huán)性,糾錯能力強(qiáng)。
2)循環(huán)碼是一種無權(quán)碼,循環(huán)碼編排的特點為相鄰的兩個數(shù)碼之間符合卡諾中的鄰接條件,即相鄰數(shù)碼間只有一位碼元不同,因此它具有一個很好的優(yōu)點是它滿足鄰接條件,沒有瞬時錯誤(在數(shù)碼變換過程中,在速度上會有快有慢,中間經(jīng)過其他一些數(shù)碼形式,即為瞬時錯誤)。
3)碼字的循環(huán)特性,循環(huán)碼中任一許用碼經(jīng)過牡環(huán)移位后,所得到的碼組仍然是許用碼組。
m
對所有的i=0,1,2,……k-1,用生成多項式g(x)除xn?k?i,有:
n?k?i?ai(x)g(x)?bi(x) (2—7)
x式中bi(x)是余式,表示為:
bi(x)?bi,n?k?1xn?k?1??bi,1x?bi,0 (2—8)
因此,xn?k?i?b(x)是g(x)的倍式,即xn?k?1?bi(x)是碼多項式,由此得到系統(tǒng)形式的生?10?0bk?1,n?k?1?bk?1,1bk?1,0?成矩陣為:
?01?0bk?2,n?k?1?bk?2,1bk?x,0??G????????????
??0000b?bb0,n?k?10,10,0??
(2—9)
它是一個k?n階的矩陣。
同樣,由G?HT=0可以得到系統(tǒng)形式的一致校驗矩陣為:
?bk?1,n?k?1bk?2,n?k?1???
??H?bk?1,1bk?2,1
?
bk?2,0?bk?1,0?b0,n?k?1????b0,1b0,01?00???????0?10??0?01? (2—10)
已知(7,4)循環(huán)碼的生成多項式和校驗多項式分別為:g(x)?x3?x?1,h(x)?x4?x2?x?1。寫得其生成矩陣和校驗矩陣分別為:
?1011000??0101100?
?G???0010110?
??0001011??
?1110100??H??0111010????0011101??2、編碼原理:
k?1m(x)?mx???m0,其中最高冪次為k-1;
k?1有信息碼構(gòu)成信息多項式n?k用x乘以信息多項式m(x),得到的xn?km(x),最高冪次為n-1,該過程相當(dāng)于把信息碼(mk?1,mk?2,……,m1,m0)移位到了碼字德前k個信息位,其后是r個全為零的監(jiān)
督位;
n?kxm(x)得到余式r(x),其次數(shù)必小于g(x)的次數(shù),即小于(n-k)用g(x)除,將此r(x)加于n?kxm(x)相加,得到的多項式必為一碼多項式。 信息位后做監(jiān)督位,即將r(x)于
1)有信息碼構(gòu)成信息多項式m(x)=mk-1xk-1+``````m0
其中高冪次為k-1。
2)用xn-k乘上信息多項式m(x),得最高冪次為n-1,做移位。
3)用g(x)除xn-km(x)和到余式r(x)。
編碼過程流程圖:
3、譯碼原理:
1) 有接收到的y(x)計算伴了隨式s(x)。
2) 根據(jù)伴隨式s(x)找出對應(yīng)的估值錯誤圖樣。
3) 計算c^(x)=y(x)+e^(x),得估計碼字。若c^(x)= c(x),則譯碼正確,否則錯誤。
由于g(x) 的次數(shù)為n - k 次,g(x) 除E(x) 后得余式(即伴隨式)的最高次數(shù)為n-k-1次,故S(x) 共有2n-k 個可能的表達(dá)式,每一個表達(dá)式對應(yīng)一個錯誤格式。可以知道(7,4)循環(huán)碼的S(x) 共有2(7-4) =
8個可能的表達(dá)式,可根據(jù)錯誤圖樣表來糾正(7,4)循環(huán)碼中的一位錯誤。
解碼過程流程圖:
存儲c(x)
糾錯c(x)?E(X)?R(X)
S(x)=0,無誤碼誤否
由S(x)確定錯誤圖樣E(x)
由R(x)確定S(x):錯誤!未找到引用源。
初始化
4、糾錯能力:
由于循環(huán)碼是一種線性分組碼,所以其糾檢錯能力與線性分組碼相當(dāng)。而線性分組碼的最小距離可用來衡量碼的抗干擾能力,那么一個碼的最小距離就與它的糾檢錯能力有關(guān)。
定理: 對于任一個(n,k)線性分組碼,若要在碼字內(nèi)
(1) 檢測個錯誤,要求碼的最小距離d?e?1;
(2) 糾正個錯誤,要求碼的最小距離d(3) 糾正個錯誤同時檢測?2t?1;
個錯誤,則要求d?t?e?1;
循環(huán)碼的譯碼分檢錯譯碼與糾錯譯碼兩類。在無記憶信道上,對碼字c,差錯圖案e和接收向量r的多項式描述為
r(x)?c(x)?e(x)
定義r(x)的伴隨多項式為s(x)
s(x)?r(x)(modg(x))
由于c(x)?s0?s1x?s2x???sr?1x?a(x)g(x)?0(modg(x)),所以
2r?1
s(x)由此可見,s(x)?e(x)(modg(x))
?0則一定有差錯產(chǎn)生,或說滿足e(x)(modg(x))?0的差錯圖樣e(x)產(chǎn)生,它滿足e(x)(modg(x))?0。
循環(huán)碼的檢錯譯碼即是計算s(x)并判斷是否為0
三、實驗分析
1、實驗測試結(jié)果,包括譯碼結(jié)果、誤碼率與信噪比之間的關(guān)系、生成多項式
理想狀態(tài)下,對信號隨機(jī)的提取,編碼器輸入為1000,
通過encode函數(shù)后,因為加入了監(jiān)督碼,信號變得復(fù)雜密集,
編碼輸出為1110
通過譯碼輸出為1000,與編碼輸入一致。說明循環(huán)碼的檢錯和糾錯能力性能好。
輸出多項式為:g(x)=(x+a) (x+a2) (x+a3)=a6+a5x+a4x+a3x2+ a3x +a2x+x3
以randint函數(shù)重新做一個輸入信號并進(jìn)行編碼,結(jié)果與上例相似,輸入與輸出一致。
由上面所有的圖可以發(fā)現(xiàn),編碼器輸入信號并不完全相同,因為對信號的提取是隨機(jī)的,所以碼元也是隨機(jī)的,信號經(jīng)過編碼器后,因為要加入監(jiān)督碼,所以波形變得更加密集了。信號經(jīng)過譯碼后,波形和編碼器輸入信號大致相同,說明循環(huán)碼的檢錯和糾錯能力可以。
信噪比與誤碼率的關(guān)系比較,從圖中可看出,當(dāng)信噪比在20以內(nèi)時,誤碼率相對比較大,最高達(dá)到0.45以上,而當(dāng)SNR大于20后,信噪比保持很穩(wěn)定。下面是誤碼率的數(shù)字顯示:
2、實驗過程遇到的問題及解決方法
剛開始并沒有注意到運(yùn)用循環(huán)碼時可用上簡便的Matlab自帶函數(shù),一直苦惱怎么進(jìn)行糾錯編碼及解碼,然后查找資料,收集了與循環(huán)碼相關(guān)的函數(shù)(部分如下:)
1)encode函數(shù)
功能:編碼函數(shù)
語法:code=encode(msg,N,K,method,opt)
說明:用method指定的方法完成糾錯編碼。其中msg代表信息碼元,是一個K列矩陣,N是編碼后的碼字長度;K是信息位的長度;opt是有些編碼方式需要的參數(shù)。
2)decode函數(shù)
功能:譯碼函數(shù)
語法:msg=decode(code,N,K,method,opt1,opt2,opt3,opt4);
說明:這個函數(shù)對接收到的碼字進(jìn)行譯碼,恢復(fù)出原始的信息,譯碼參數(shù)和方式必須和編碼時采用的嚴(yán)格相同。它對接收到的碼字,按method指定的方式進(jìn)行譯碼;opt1,…,opt4是可選項的參數(shù)。
3)cyclpoly函數(shù)
功能:生成循環(huán)碼的生成多項式。
語法:p=cyclpoly(N,K);
p=cyclpoly(N,K,fd_flag);
說明:從p=cyclpoly(N,K)中可找到一個給定碼長N和信息位長度K生成多項式p,注意不是任意給定一個多項式都可以作為生成多項式。
4)randint函數(shù)
功能:引起一致地分布的任意整數(shù)矩陣
語法:out = randint(m)
out = randint(m,n)
out = randint(m,n,rg)
out = randint(m,n,rg,state)
在進(jìn)行誤碼率與信噪比之間的關(guān)系編程后,Matlab一直顯示
其后才發(fā)現(xiàn)原來沒有對加噪后的信號進(jìn)行整形輸出,于是加入for循環(huán)以四舍五入對信號進(jìn)行整形設(shè)定。
for i=1:100
for a=1:k+1
if noisycode(i,a)<0.5
noisycode(i,a) = 0;
el
noisycode(i,a) = 1;
end
end
end
四、RS碼在現(xiàn)代通信系統(tǒng)中的應(yīng)用
RS編碼起源于1960年MIT Lincoln實驗室,經(jīng)歷了數(shù)十年的發(fā)展,RS碼成為了研究最詳盡,分析最透徹,應(yīng)用最廣泛,研究成果最多的碼類之一。
1、在井下通信中的應(yīng)用:由于井下空間小,供電系統(tǒng)布置受到很大局限,電磁干擾現(xiàn)象也很嚴(yán)重,通過選擇合適的信道編碼方式是抗干擾措施之一,可有效消除干擾,而由于RSce糾正t個m位的二進(jìn)制錯誤會符號,而不管這t個錯誤會符號是連續(xù)出現(xiàn)的還是離散出現(xiàn),因此RS很適用于存在突發(fā)錯誤信道中,如井下工作,對系統(tǒng)碼率的降低和可靠性的提高起重要作用。
井下采煤機(jī)與通信系統(tǒng)的硬件框圖
2、RS碼在PDS水聲通信技術(shù)的應(yīng)用
水聲通信技術(shù)信道是隨機(jī)時變空變的,其多途擴(kuò)展產(chǎn)生的碼間干擾直接影響到了水聲通信的質(zhì)量。而RS是一種擴(kuò)展的非二進(jìn)制BCH碼,具有與PDS通信相結(jié)合的優(yōu)勢。
3、RS 碼在無線高保真音頻傳輸系統(tǒng)中的應(yīng)用
在無線音頻傳輸中, 如果傳輸?shù)臄?shù)據(jù)出現(xiàn)誤碼, 則會在播放時出現(xiàn)噪聲或者嘯叫聲, 所以想要確保得到高保真的音頻, 控制無線傳輸?shù)恼`碼率是必須的, 通常采用重傳和糾錯編碼兩種方法。重傳機(jī)制對無線信道的帶寬要求更高, 這里采用RS 糾錯編碼的方法來控制誤碼率。
五、實驗程序
1、循環(huán)碼編碼與解碼Matlab源程序(實驗以(7,4)循環(huán)碼進(jìn)行分析)
m = 3;
n = 2^m-1; %定義碼長
k = n-m; %信息位長
msg = randint(k*4,1,2); %隨機(jī)提取信號,引起一致地分布的任意整數(shù)矩陣
subplot(2,2,1)
stem(msg)
title('編碼器輸入信號')
p=cyclpoly(n,k) %循環(huán)碼生成多項式,n=7,k=4
code = encode(msg,n,k,'cyclic',p); %編碼函數(shù),對信號進(jìn)行差錯編碼
subplot(2,2,2)
stem(code)
title('編碼器輸出信號')
recode=decode(code,n,k,'cyclic',p) %對信號進(jìn)行譯碼,對接收到的碼字進(jìn)行譯碼,恢復(fù)出原始的信息,譯碼參數(shù)和方式必須和編碼時采用的嚴(yán)格相同
subplot(2,2,3)
stem(recode)
title('譯碼器輸出信號')
t=-1:0.01:1;
x=recode; %將recode賦值給x,并進(jìn)行長度與fft設(shè)定
N=length(x);
fx=fft(x);
df=100/N;
n=0:N/2;
f=n*df;
subplot(2,2,4);
plot(f,abs(fx(n+1))*2/N); grid;
title('頻譜圖')
2、誤碼率與信噪比之間的關(guān)系程序(以(3,2)循環(huán)碼進(jìn)行測試)
m = 2;
n = 2^m-1; %定義碼長
k = n-m; %信息位長
Fs=40; %系統(tǒng)采樣頻率
Fd=1; %碼速率
N=Fs/Fd;
M=2; %進(jìn)制數(shù)
for SNRpBit=1:100;%信噪比
SNR=SNRpBit/log2(M);
%制造100個信息組,每組k位
msg = randint(100,k,[0,1]);
code = encode(msg,n,k,'cyclic/binary');
%加入噪聲
%在已調(diào)信號中加入高斯白噪聲
noisycode=awgn(code,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');
%將浮點數(shù)轉(zhuǎn)化為二進(jìn)制,波形整形過程
for i=1:100
for a=1:k+1
if noisycode(i,a)<0.5
noisycode(i,a) = 0;
el
noisycode(i,a) = 1;
end
end
end
%譯碼
newmsg = decode(noisycode,n,k,'cyclic');
%計算誤碼率
[number,ratio]=biterr(newmsg,msg);
result(SNRpBit)=ratio;
disp(['The bit error rate is',num2str(ratio)]);
end
%不同信噪比下循環(huán)碼經(jīng)過加性高斯白噪聲信道的誤碼率
figure(1)
stem(result);
title('循環(huán)碼在不同信噪比下的誤碼率')
legend('誤碼率','*')
xlabel('信噪比');
ylabel('在加性高斯白噪聲下的誤碼率');
六、實驗感想
好像在做這個實驗時,一直拖一直拖,到最后都快沒時間了才查資料看例子,在這次基于MATLAB的通信原理課程設(shè)計中,通過查找了大量的循環(huán)碼理論知識和MATLAB仿真應(yīng)用的書籍之后,開始調(diào)試程序,并進(jìn)一步了解MATLAB編程的關(guān)鍵字的運(yùn)用,查閱資料之后進(jìn)行不斷的修正和更改,得出最終的結(jié)果。
這次MATLAB課程設(shè)計不僅僅加深了對課程理論知識的了解,并更加熟悉了計算機(jī)語言,軟件的應(yīng)用。并讓我了解,學(xué)習(xí)知識不僅僅只在課本上,還有更多更廣的渠道獲得更寬廣的知識。
七、參考文獻(xiàn)
[1]徐明遠(yuǎn),邵玉斌 MATLAB仿真在通信與電子工程中的應(yīng)用.西安:西安電子科技大學(xué)學(xué)出版社,2005.6
[2]唐向宏,岳恒立,鄭雪峰 MATLAB及在電子信息類課程中的應(yīng)用(第二版).北京:電子工業(yè)出版社,2009.6
本文發(fā)布于:2024-02-15 18:31:24,感謝您對本站的認(rèn)可!
本文鏈接:http://www.newhan.cn/zhishi/a/1707993084266948.html
版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。
本文word下載地址:基于MATLAB的循環(huán)碼實驗報告.doc
本文 PDF 下載地址:基于MATLAB的循環(huán)碼實驗報告.pdf
| 留言與評論(共有 0 條評論) |