首页/文章/ 详情

通信原理与matlab仿真 编码调制一起来(3)

5年前浏览4935

一起来看看含有卷积码结合BPSK调制解调器的仿真程序是什么样子的吧。

%%      File: convcode_BPSK_modem_sim1.m     %%

%%%    date: 2017-06-02        author: 算法工匠    %%%


%%%                         程序说明

%%% 仿真(2,1,7)卷积码在BPSK下AWGN信道中的误码率曲线

% 程序功能:测试EbNo下的卷积码误码率

% 输入变量:EbNo  比特信噪比

% 输出值: BER  误码率

% 说明:   调制为BPSK调制,解调可采样硬判决或软判决,不考虑脉冲成形。


%*********         仿真环境           *********%

% matlab:R2015b


clc;

clear all;

close all;

%%********            程序主体       ******%%

%%%%%     程序重要参数

EbNo = 0;  % 设置信噪比参数

% 不同的信噪比得到不同的误码性能


number_of_frame = 1e3;          % 仿真的帧数

noe=0;                          % 错误比特数

nod=0;                          % 仿真的数据长度


%--------------****************---------------

%---------*         信号源          *------------

%--------------*************-------------------------

for frm_loop=1:number_of_frame

    frm_length = 1000;                       % 帧长度

    frm_data = randi(2,1,frm_length)-1;


%---------------***************---------------

%----------*         卷积编码      *-----------

%----------------*************-----------------

%%%%%%%% 卷积编码参数

    GenPoly =[1 0 0 1 1 1 1;1 1 0 1 1 0 1];             % 生成多项式

    [G_colomn ,constraint_len ] = size(GenPoly);        % 约束长度  

    trellis =  poly2trellis(constraint_len,[117,133]);     % 网格图

    k=1;

    % GenPoly = [1 1 1 1 0 0 1 ; 1 0 1 1 0 1 1 ];  

    % trellis =  poly2trellis(constraint_len,[171,133]);     % 网格图

    % (n,k,M) = (2,1,7)的卷积编码生成多项式

    

    

%%%%%%%% 卷积编码

    data1 = convenc(frm_data,trellis);

    % code = convenc(msg,trellis) 


%-----------------------**************************-------------------------

%-----------------------*         BPSK调制       *--------------------------

%-----------------------**************************-------------------------

    data2 = data1*2-1;


%--------*         AWGN信道       *------------


    % 计算信号功率,根据EbNo加噪

    s_pow=sum(data2.*data2)/length(data2);

    attn = 0.5*s_pow*10^(-EbNo/10);        

 % 比特率和符号率相等,br=sr(BPSK)

    attn = sqrt(attn);

    noise=randn(1,length(data2)).*attn;

    

    data3=data2+noise;          % 数据加噪

接收机的程序下堂课再展示。

讲到这里,同学们是不是会有疑问?

什么是BCH码?

什么是卷积码?

近几年鞋类市场一落千丈!

当年我读大学那会,

达芙妮太火了。

我记得是刘若英做的代言人。

当年她的电影《小花》好像火过一阵子!

聊完题外话,再回到正题。

BCH码是循环码的一个重要子类,它具有纠正多个错误的能力,BCH码有严密的代数理论,是目前研究最透彻的一类码。根据所要求的纠错能力就可以构造出BCH码。

不要着急!

关于通信仿真的高级课程将在公众号matlab仿真工匠中展示,该公众号专门讲解MATLAB仿真。欢迎大家关注。依旧是一天一篇的速度发表新文章。  


推荐大家关注我公众号-算法工匠,介绍使用matlab仿真工具和其各种类型的算法,讲解高校涉及matlab的相关课程,免费提供通信类、导航类的产品级物理层算法、数据统计分析算法、图像处理算法、AI算法。义务为各高校的MATLAB学习社团和医生朋友们做技术支持和数据分析。 

20190717记录:

真正的干货,希望能帮助上大家!!!

未完,待续!


修订记录

20181203 完成初稿;

20190718 修订内容;

MATLAB电子
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2019-07-18
最近编辑:5年前
算法工匠
博士后 | 高级工程师 诚信做事 认真讲课 传播知识
获赞 395粉丝 2581文章 335课程 40
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈