bch编码matlab,BCH码的编码方法.doc
一、實驗目的
1、掌握循環碼的編碼原理
2、掌握BCH碼的編碼方法
3、了解編碼與對誤碼性能的改善
二、實驗內容
1、自行設置BCH碼的參數,給出生成的BCH碼;
2、利用encode庫函數實現編碼;
3、搭建一個通信仿真模塊,并給出運行結果,分析BCH碼對通信性能的影響;
3、整理好所有的程序清單,并作注釋。
三、實驗結果
本原多項式,可糾正2位錯誤時,生成多項式為,寫出生成矩陣,給出產生(15,7,2)BCH碼的源程序,并給出運行結果。
(1)生成矩陣
由(15,7,2)BCH碼的生成多項式
可知其生成矩陣
則可知其生成矩陣
(2)源程序:
function f=bchencod(a)%對信息元a進行編碼
G=[1 1 1 0 1 0 0 0 1 0 0 0 0 0 0;
0 1 1 1 0 1 0 0 0 1 0 0 0 0 0;
0 0 1 1 1 0 1 0 0 0 1 0 0 0 0;
0 0 0 1 1 1 0 1 0 0 0 1 0 0 0;
0 0 0 0 1 1 1 0 1 0 0 0 1 0 0;
0 0 0 0 0 1 1 1 0 1 0 0 0 1 0;
0 0 0 0 0 0 1 1 1 0 1 0 0 0 1];%(15,7,2)的生成矩陣
t=input('輸入0或者1'); %t=0時產生(3,1),漢明編碼所有碼字t=1時對輸入序列進行編碼
if t==1
a=input('輸入信息元序列:');%當t=0時,則用戶手動輸入信息元序列
c=mod(a*G,2);%對應碼字
disp('(編碼后的序列為:)');
disp(c);%顯示編碼后的結果
else
disp('(15,7,2)BCH碼為:');%當t=0時,對for循環得到的信息元序列進行編碼
for i=0:1:(2^7-2)%進行for循環,得到信息元序列
a=dec2bin(i,7);%限定產生的二進制為7位
c=mod(a*G,2);%對信息元a進行編碼
disp(a);%顯示信息元
disp('對應碼字為:');
disp(c);%顯示編碼結果
end
end
(3)結果
輸入1時,結果如下:
輸入0時,結果如下:
中間部分已省略,
2、用encode函數對隨機產生的序列進行BCH編碼,給出編碼結果。
(1)、源代碼
msg=randint(15,11);%隨機生成的信息元
code=encode(msg,15,11,'bch');%對隨機生成的msg進行BCH編碼
disp(code)%顯示編碼結果
(2)、運行結果
3、搭建一個通信仿真模塊(采用BCH編碼),并給出運行結果,分析哪些參數誤碼率有影響。
運行結果為:
參數設置如下:
Bernoulli BinaryGenerator和 BCH Encoder:
Binary Symmetric Channel:BCH Decoder:
參數為10000、
上圖為設置不同參數時對誤碼率的影響:
分析:(1)、實驗中,軟件的參數設置不正確會對誤碼率產生很大的影響,其中取樣的大小同樣會影響,當取樣的值為1000時,誤差要大于取樣值為10000時的誤碼率。
(2)、在Bernoulli Binary Generator中,產生0的概率的設置對其誤碼率產生影響,當0和1隨機產生的概率不相等時,根據信息序列和譯碼規則的不同會相應的對其誤碼率產生影響。
(3)、在Binary Symmetric Channel中,錯誤概率的設置同樣影響其誤碼率。若錯誤概率大于0.5時,誤碼率相對偏高錯誤概率小于0.5時,誤碼率相對偏低。
(4)、BCH Encoder、BCH Decoder
參數為編碼與譯碼對應的BCH碼的形式。N為碼元長度,K為信息位長度。
Binary Symmetric Channel
(5)、Error probability為譯碼時,碼元的錯誤率。它的值直接影響結果,值越大,則結果出現的錯誤碼元數也就越多,差錯率也越大。通信系統的傳輸性能也越差。
實驗心得
通過本實驗,加深了對BCH碼編碼原理的理解,學會了使用MATLAB軟件進行模擬仿真編寫BCH碼,其中實現的方法有,用編程的方法實現,也可以用仿真模塊來實現。并且在用仿真模塊實現BCH編碼時,通過對參數的設置,知道了影響誤碼率的各因素。
總結
以上是生活随笔為你收集整理的bch编码matlab,BCH码的编码方法.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习日记:scipy库的版本差异
- 下一篇: 地震 matlab,MATLAB在地震信