本文假设读者对卷积码原理及viterbi解码原理有基本的认识。
关于硬译码的函数参考传送门

软信息的概念

在数模转换、模数转换过程中,常有对信息的判决过程。根据信息量的丰富程度可分为硬判决和软判决。一般来说,硬判决系统实现简单,但性能会因为信息损失而下降;软判决保留更多的原始信息,性能提高的同时系统开销增大。

在卷积码的译码中,软译码和硬译码的不同主要在于最短路径的距离计算上。

软译码采用欧氏距离,硬译码采用汉明距离

根据MATLAB官网对vitdec的说明
卷积码的译码函数为vitdec()软译码调用格式为

decodedout = vitdec(codedin,trellis,tbdepth,opmode,'soft',nsdec)

其中需要注意的是

变量名 软译码模式下含义
codedin 输入数据。[0, 2^nsdec-1]整数,即有限位宽整数:00…0代表十分确定是0,11…1代表十分确定是1
nsdec 输入数据位宽

相比较硬译码的程序, 软译码需对输入数据进行量化,使其符合函数调用规范。

量化过程也有多种形式,如直接量化和似然比量化。前者对采样值/模拟值/真实值进行幅值放缩可完成;后者则需在已知随机事件分布的前提下,将变量转化为累积分布函数CDF(似然函数)上的概率,再进一步对概率进行量化。

例程如下

clear;clc
input = randi([0,1],1,10000);
n=2;k=1;L=3;
gen=[5,7];
%% 生成卷积码
trellis = poly2trellis(L,gen);
code_data = convenc(input,trellis);
%% BPSK调制
sym_tx = code_data;
sym_tx(sym_tx == 0) = -1;%% 噪声
SNR_dB = 0;
snr = 10^(SNR_dB/10);
sym_rx = awgn(sym_tx,snr,'measured');
% plot(sym_rx)%% BPSK解调
% 简单量化,位宽为4
[~,qcode]=quantiz(-sym_rx,[-0.875 -0.75,-0.625 -0.5,-0.375 -0.25,-0.125 0,0.125 0.25,0.375 0.5,0.625 0.75 0.875],15:-1:0);
BPSK_REC_Data = (qcode);tblen=5*(k-1);
x=zeros(1,2*tblen);
BPSK_REC_Data=[BPSK_REC_Data(:,1:end),x];
%% Viterbi解码
d = vitdec(BPSK_REC_Data,trellis,tblen,'term','soft',4);
Decode_Data = d(1:end-tblen*k);
% 计算误码率
[~,ber] = biterr(input,Decode_Data);

卷积码viterbi软译码的MATLAB函数调用相关推荐

  1. Viterbi译码及其matlab和FPGA实现

    Viterbi译码由美国科学家Viterbi在1967年提出1,是卷积码的译码算法,是一种最大似然译码算法,其通过寻找距离最短的译码路径来实现.这篇文章侧重实现,具体原理就不说明了. matlab实现 ...

  2. 卷积码的维特比(Viterbi)译码

    本文转载自:https://www.cnblogs.com/ncdxlxk/p/9240938.html 了解更多,点击:更多通信知识 对维特比译码的接触很早就开始了,也想过要写一篇总结性的文章,但无 ...

  3. viterbi matlab仿真,通信系统中Viterbi译码的Matlab仿真与实现

    2 维特比译码原理 Viterbi译码是卷积码的最大似然译码算法,是一种实用化的概率算法.它的基本思想是把已接收序列与所有可能的发送序列作比较,选择其中码距最小的一个序列作为发送序列.从图2的卷积码网 ...

  4. 卷积码译码matlab程序,卷积码的编译码MATLAB程序

    <卷积码的编译码MATLAB程序>由会员分享,可在线阅读,更多相关<卷积码的编译码MATLAB程序(5页珍藏版)>请在人人文库网上搜索. 1.survivor state是一个 ...

  5. 码长6075的qc-ldpc编译码的MATLAB误码率仿真

    1.算法简介 为满足高的数据需求,提出一种新的QC-LDPC码.该校验矩阵的校验部分为近似下三角结构,上对角线下面的非零元素可以任意放置,因此是一种半确定的结构.这种结构的码设计灵活,性能也极高.通过 ...

  6. matlab完成信源编码译码,Huffman编码和译码的MATLAB实现.doc

    Huffman编码和译码的MATLAB实现.doc Huffman编码及译码的MATLAB实现 沈逸峰 (上海师范大学 信息与机电工程学院,上海 200333) 摘要:本论文首先介绍了Huffman编 ...

  7. LDPC的信道编译码的matlab仿真——LDPC译码最小和和归一化最小和

    1.问题描述: LDPC的信道编译码的matlab仿真--LDPC译码最小和和归一化最小和 2.部分程序: clc; clear all; load H; D=H(1:675,5401:6075); ...

  8. 循环码编码与译码(MATLAB实现)

    循环码的定义 循环码是一类满足循环特性的线性分组码,线性分组码对码的选取做了线性约束,而循环码是在线性约束的基础上增加了满足循环性的约束条件,是线性分组码的子类.下面以二元循环码进行说明. 由于 (n ...

  9. matlab中软开关,数字化软开关电源的Matlab仿真研究

    龙源期刊网 http://www.doczj.com/doc/5a8866dd18e8b8f67c1cfad6195f312b3169eb14.html 数字化软开关电源的Matlab仿真研究 作者: ...

最新文章

  1. PHP实现文件下载断点续传详解
  2. c语言关键字不做标识符,C语言标识符、关键字、注释、表达式和语句
  3. 问题 | 执行pip install --upgrade --ignore-installed tensorflow出现Cannot open\Scripts\pip-script.py
  4. 为何2018年中国自然灾害损失大幅下降?官方回应
  5. 封装(构造方法,构造器)
  6. 微信小程序php java_PHP实现微信小程序用户授权的工具类
  7. php server host,PHP $ _SERVER ['HTTP_HOST']与$ _SERVER
  8. Python 类的几个内置装饰器—— Staticmethod Classmethod Property
  9. SolidWorks有限元分析流程
  10. 阿里云服务器ftp连接后21端口无法使用的问题
  11. 四大组件之activity生命周期探索
  12. 三线压力传感器原理_三线机油压力传感器作用是什么?工作原理是什么?
  13. 基于BINN算法的CCPP全路径覆盖算法
  14. Unreal Engin_画廊制作笔记 _003设置贴花在场景中可见
  15. 画布Canvas在线生成支付宝收款码
  16. 百度关键词推广选词技巧,你了解多少?
  17. java package包和import 与class打包成jar文件
  18. 存储组网技术详细说明(SAN、NAS、DAS等)【6】
  19. [转]Tribon船体生产设计应用
  20. Markdown 本地图片与多图床管理

热门文章

  1. 携程网页版国内机票数据
  2. VB统计计算器1/2
  3. [附源码]JSP+ssm计算机毕业设计唐山极速速运冷库货物管理系统xf81q【源码、数据库、LW、部署】
  4. mysql字段是自动增长类型结果却不是连续的
  5. C++ 继承: 父类与子类构造函数与析构函数的关系
  6. html在线播放mp4文件,关于使用Html audio标签播放视频文件的问题
  7. 机械设计中的尺寸标注与测量
  8. 轮毂电机光电增量编码器的ABZ信号详解
  9. Type interface com.msy.dao.IAccountDao is not known to the MapperRegistry.
  10. 日落MFC-工具栏CToolBar自定义图标