欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

bpsk信道编码matlab,信道编码-研究日记_3 10/14/2016

发布时间:2024/7/19 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。