bpsk信道编码matlab,信道编码-研究日记_3 10/14/2016
參考文獻:劉學勇. 詳解MATLAB Simulink通信系統建模與仿真[M]. 電子工業出版社,
2011.
?吐槽一句:這本書我覺得還是蠻好的,就是配套光盤,我以為是把內容好好講一遍呢,結果發現就是把書拍照放到PPT上讀了一遍,我不知道這種教學視頻有什么意義。
卷積碼常用符號(n,k,m)?表示。每個(n,k)碼段(也稱子碼,通常較短)內的n個碼元不僅與該碼段內的信息元有關,而且與前面的信息元有關。通常稱m為編碼存儲。
生成多項式的概念。
每1位數據,影響m+1個輸出子碼?,稱m+1為編碼約束度。
最大似然譯碼算法的基本思路是,把接收碼字與所有可能的碼字比較,選擇一種碼距最小的碼字作為解碼輸出。?
?幸存路徑的概念。
matlab提供了卷積碼的函數編碼convenc和相應的Veterbi譯碼函數vitdec,可以快速地得到編譯碼結果。?
仿真說明:仿真BPSK調制在AWGN信道下分別使用卷積碼和不使用卷積碼的性能,其中,卷積碼的約束長度為7,生成多項式為[171,133],碼率為1/2,譯碼分別采用硬判決和軟判決譯碼。
% 代碼整理:賈繼鵬
tic;close all;clear
all;clc
EbNo=0:2:10;
% SNR的范圍
N=100000;
%
消息比特個數
M=2;
% BPSK調制
L=7;
% 約束長度
trel=poly2trellis(L,[171 133]); % 卷積碼生成多項式
tblen=6*L;
%
Viterbi譯碼器回溯深度。
msg=randi([0,1],1,N);
% 消息比特序列
msg1=convenc(msg,trel);
% 卷積編碼
x1=pskmod(msg1,M);
% BPSK調制
for ii=1:length(EbNo)
ii
y=awgn(x1,EbNo(ii)-3);
%加入高斯白噪聲,因為碼率為1/2,所以每個符號的能量要比比特能量少3dB
y1=pskdemod(y,M);
%硬判決
y1=vitdec(y1,trel,tblen,'cont','hard');
%Viterbi譯碼
[err,ber1(ii)]=biterr(y1(tblen+1:end),msg(1:end-tblen));
%誤比特率
y2=vitdec(real(y),trel,tblen,'cont','unquant');
%軟判決
[err,ber2(ii)]=biterr(y2(tblen+1:end),msg(1:end-tblen));
%誤比特率
end
ber=berawgn(EbNo,'psk',2,'nodiff');
%BPSK調制理論誤比特率
semilogy(EbNo,ber,'-ro',EbNo,ber1,'-m*',EbNo,ber2,'-b.','linewidth',2);
legend('BPSK理論誤比特率','硬判決誤比特率','軟判決誤比特率')
title('卷積碼性能'); xlabel('Eb/No'); ylabel('誤比特率');grid on;
toc
?
?
總結
以上是生活随笔為你收集整理的bpsk信道编码matlab,信道编码-研究日记_3 10/14/2016的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php扩展库加密如何解密,如何利用Mcr
- 下一篇: matlab7.0安装说明