(n,k,N)卷积码的生成矩阵

article/2025/9/12 7:49:32

文章目录

卷积码

   ( n , k , N ) (n,k,N) (n,k,N)卷积码是将每 k k k个信息比特作为一组,编码成 n n n个编码比特输出。 N N N为编码的约束长度,表示编码过程中有N组信息比特相互约束。卷积码的编码器具有记忆性,针对每组信息比特( k k k个比特)输入,有n个编码比特输出,编码比特不仅与当前输入的 k k k个信息比特有关系,还与前 N − 1 N-1 N1 k k k位输入信息比特有关。编码效率为 η c = k n \eta_c=\frac{k}{n} ηc=nk η c \eta_c ηc N N N是衡量卷积码性能的两个重要参数。
(关于 N N N的含义,我在不同地方看到的不一样,有的说是编码过程中有 N N N组信息比特相互约束,还有说是编码过程中有 N + 1 N+1 N+1组信息比特相互约束,本文我采用前者。)

卷积码编码器

   ( n , k , N ) (n,k,N) (n,k,N)卷积码的编码器由 N N N k k k级输入移位寄存器( N × k N \times k N×k位寄存器)、 n n n级输出移位寄存器和 n n n个模2和加法器构成,每个输出移位寄存器有一个模2和加法器与其对应,每个模2和加法器输入端的数目不一定相同。下图为 ( n , k , N ) (n,k,N) (n,k,N)卷积码编码器原理图。
在这里插入图片描述
  卷积码的生成矩阵就是在描述 N × k N \times k N×k位输入移位寄存器的每一位与每个模2和加法器的连接关系。

卷积码生成矩阵

  教材上是按照先子生成矩阵、生成矩阵后生成元、子生成元的顺序讲解的,我感觉不太好理解。按”子生成元 → \to 生成元 → \to 子生成矩阵 → \to 生成矩阵”的顺序介绍,似乎更容易理解矩阵中的0和1所代表的的物理意义。

子生成元和生成元

  子生成元 g ( i , j ) g^{(i,j)} g(i,j) ( n , k , N ) (n,k,N) (n,k,N)卷积码有 k n kn kn个子生成元 g ( i , j ) g^{(i,j)} g(i,j),其中 i = 1 , 2 , 3 , ⋯ , k i=1,2,3,\cdots,k i=1,2,3,,k j = 1 , 2 , 3 , ⋯ , n j=1,2,3,\cdots,n j=1,2,3,,n。每个子生成元是一个 N N N维行向量, g ( i , j ) g^{(i,j)} g(i,j)的第 m m m位写成 g m ( i , j ) g^{(i,j)}_m gm(i,j) m = 0 , 1 , 2 , ⋯ , N − 1 m=0,1,2,\cdots,N-1 m=0,1,2,,N1 g ( i , j ) g^{(i,j)} g(i,j)可以表示为: g ( i , j ) = g 0 ( i , j ) g 1 ( i , j ) ⋯ g N − 1 ( i , j ) g^{(i,j)}=g^{(i,j)}_0\:g^{(i,j)}_1\:\cdots \: g^{(i,j)}_{N-1} g(i,j)=g0(i,j)g1(i,j)gN1(i,j) g m ( i , j ) g^{(i,j)}_m gm(i,j)表示第 m m m组输入寄存器比特的第 i i i位与第 j j j个模2和加法器的连接关系,其中1表示相连,0表示不相连。
  生成元 g ( i ) g^{(i)} g(i) ( n , k , N ) (n,k,N) (n,k,N)卷积码有 k k k个生成元 g ( i ) g^{(i)} g(i),其中 i = 1 , 2 , 3 , ⋯ , k i=1,2,3,\cdots,k i=1,2,3,,k。每个子生成元是一个 N n Nn Nn维行向量, g ( i ) g^{(i)} g(i)可以表示为: g ( i ) = g 0 ( i , 1 ) g 0 ( i , 2 ) ⋯ g 0 ( i , n ) ⋯ g N − 1 ( i , 1 ) g N − 1 ( i , 2 ) ⋯ g N − 1 ( i , n ) g^{(i)}=g^{(i,1)}_0 \:g^{(i,2)}_0\:\cdots\:g^{(i,n)}_0\:\cdots\:g^{(i,1)}_{N-1}\:g^{(i,2)}_{N-1} \:\cdots \:g^{(i,n)}_{N-1} g(i)=g0(i,1)g0(i,2)g0(i,n)gN1(i,1)gN1(i,2)gN1(i,n)

子生成矩阵和生成矩阵

  子生成矩阵 g m g_m gm ( n , k , N ) (n,k,N) (n,k,N)卷积码有 N N N个子生成矩阵 g m g_m gm,其中 m = 0 , 1 , 2 , ⋯ , N − 1 m=0,1,2,\cdots,N-1 m=0,1,2,,N1。每个子生成矩阵由 k n kn kn g m ( i , j ) g^{(i,j)}_m gm(i,j)组成的 k × n k \times n k×n矩阵, g m g_m gm可以表示为: g m = [ g m ( 1 , 1 ) g m ( 1 , 2 ) ⋯ g m ( 1 , n ) g m ( 2 , 1 ) g m ( 2 , 2 ) ⋯ g m ( 2 , n ) ⋮ ⋮ ⋱ ⋮ g m ( k , 1 ) g m ( k , 2 ) ⋯ g m ( k , n ) ] g_m= \begin{bmatrix} g^{(1,1)}_m&g^{(1,2)}_m&\cdots&g^{(1,n)}_m \\ g^{(2,1)}_m&g^{(2,2)}_m&\cdots&g^{(2,n)}_m \\ \vdots&\vdots&\ddots&\vdots \\ g^{(k,1)}_m&g^{(k,2)}_m&\cdots&g^{(k,n)}_m \end{bmatrix} gm=gm(1,1)gm(2,1)gm(k,1)gm(1,2)gm(2,2)gm(k,2)gm(1,n)gm(2,n)gm(k,n)
  基本生成矩阵 G B G_B GB ( n , k , N ) (n,k,N) (n,k,N)卷积码的基本生成矩阵 G B G_B GB N N N个子生成矩阵 g m g_m gm组成,是一个 k × N n k \times Nn k×Nn矩阵。 G B = [ g 0 g 1 ⋯ g N − 1 ] G_B=\begin{bmatrix}g_0&g_1&\cdots&g_{N-1}\end{bmatrix} GB=[g0g1gN1]
  生成矩阵 G ∞ G_\infty G ( n , k , N ) (n,k,N) (n,k,N)卷积码的生成矩阵 G ∞ G_\infty G是一个半无穷矩阵, G ∞ G_\infty G可以表示为: G ∞ = [ g 0 g 1 ⋯ g N − 2 g N − 1 0 0 0 ⋯ 0 g 0 g 1 ⋯ g N − 2 g N − 1 0 0 ⋯ 0 0 g 0 g 1 ⋯ g N − 2 g N − 1 0 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ] G_\infty= \begin{bmatrix} g_0&g_1&\cdots&g_{N-2 }&g_{N-1}&0&0&0&\cdots\\ 0&g_0&g_1&\cdots&g_{N-2 }&g_{N-1}&0&0&\cdots\\ 0&0&g_0&g_1&\cdots&g_{N-2 }&g_{N-1}&0&\cdots\\ \cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots \end{bmatrix} G=g000g1g00g1g0gN2g1gN1gN20gN1gN200gN1000 G ∞ G_\infty G的每 k k k行( g m g_m gm k k k行)是前一 k k k行向右移位 n n n列( g m g_m gm n n n列)的结果。

生成矩阵的作用

  假设移位寄存器的初态都是0,编码器对每组 k k k个信息比特的输入产生一组 n n n个编码比特输出。当第一组 k k k个信息比特(用 M ( 0 ) M(0) M(0)表示)输入时,输出为 Y ( 0 ) = M ( 0 ) g 0 Y(0)=M(0)g_0 Y(0)=M(0)g0(对比 G ∞ G_\infty G的第一列,观察规律),相当于 M ( 0 ) M(0) M(0)中的 k k k个比特输入到与其相连的模2和加法器后运算的结果。当第二组 k k k个信息比特(用 M ( 1 ) M(1) M(1)表示)输入时,前一组 k k k个信息比特向后移位,输出为 Y ( 1 ) = M ( 0 ) g 1 + M ( 1 ) g 0 Y(1)=M(0)g_1+M(1)g_0 Y(1)=M(0)g1+M(1)g0(对比 G ∞ G_\infty G的第二列,观察规律),相当于 M ( 0 ) M(0) M(0) M ( 1 ) M(1) M(1)中的 2 k 2k 2k个比特输入到与其相连的模2和加法器后运算的结果。以此类推,可得 Y ( N ) = M ( 0 ) g N − 1 + M ( 1 ) g N − 2 + ⋯ + M ( N − 2 ) g 1 + M ( N − 1 ) g 0 ( 对 比 G ∞ 的 第 N 列 , 观 察 规 律 ) Y(N)=M(0)g_{N-1}+M(1)g_{N-2 }+\cdots+M(N-2)g_1+M(N-1)g_0(对比G_\infty的第N列,观察规律) Y(N)=M(0)gN1+M(1)gN2++M(N2)g1+M(N1)g0GN)此时,再有一组信息比特(用 M ( N ) M(N) M(N)表示)输入时, M ( 0 ) M(0) M(0)被移除移位寄存器而消失。
(我有点口拙,这块可能描述的不是很清楚,主要靠意会 😄,后面举例子)

举例

( n , 1 , N ) (n,1,N) (n,1,N)卷积码

  给定子生成元: g ( 1 , 1 ) = 10011 g^{(1,1)}=10011 g(1,1)=10011 g ( 1 , 2 ) = 11101 g^{(1,2)}=11101 g(1,2)=11101
  由子生成元可得: n = 2 n=2 n=2 N = 5 N=5 N=5
  生成元为: g ( 1 ) = 11 01 01 10 11 g^{(1)}=11\:01\:01\:10\:11 g(1)=1101011011
  子生成矩阵为: g 0 = [ 11 ] g_0=\begin{bmatrix}11\end{bmatrix} g0=[11] g 1 = [ 01 ] g_1=\begin{bmatrix}01\end{bmatrix} g1=[01] g 2 = [ 01 ] g_2=\begin{bmatrix}01\end{bmatrix} g2=[01] g 3 = [ 10 ] g_3=\begin{bmatrix}10\end{bmatrix} g3=[10] g 4 = [ 11 ] g_4=\begin{bmatrix}11\end{bmatrix} g4=[11]
  生成矩阵为: G ∞ = [ 11 01 01 10 11 00 00 00 ⋯ 0 11 01 01 10 11 00 00 ⋯ 0 0 11 01 01 10 11 00 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ] G_\infty= \begin{bmatrix} 11&01&01&10&11&00&00&00&\cdots\\ 0&11&01&01&10&11&00&00&\cdots\\ 0&0&11&01&01&10&11&00&\cdots\\ \cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots \end{bmatrix} G=110001110010111100101111001001110000011000000
  编码器原理图为:在这里插入图片描述
  当输入序列为 m = 110110000 ⋯ m=110110000\cdots m=110110000时,输出序列为 y = 11 10 00 00 11 11 11 01 11 00 ⋯ y=11\:10\:00\:00\:11\:11\:11\:01\:11\:00\:\cdots y=11100000111111011100

( n , k , N ) (n,k,N) (n,k,N)卷积码

  给定子生成元: g ( 1 , 1 ) = 100 , g ( 1 , 2 ) = 000 , g ( 1 , 3 ) = 101 g^{(1,1)}=100,g^{(1,2)}=000,g^{(1,3)}=101 g(1,1)=100g(1,2)=000g(1,3)=101 g ( 2 , 1 ) = 000 , g ( 2 , 2 ) = 100 , g ( 2 , 3 ) = 110 g^{(2,1)}=000,g^{(2,2)}=100,g^{(2,3)}=110 g(2,1)=000g(2,2)=100g(2,3)=110
  由子生成元可得: n = 3 n=3 n=3 k = 2 k=2 k=2 N = 3 N=3 N=3
  生成元为: g ( 1 ) = 101 000 001 g^{(1)}=101\:000\:001 g(1)=101000001 g ( 2 ) = 011 001 000 g^{(2)}=011\:001\:000 g(2)=011001000
  子生成矩阵为: g 0 = [ 1 0 1 0 1 1 ] , g 1 = [ 0 0 0 0 0 1 ] , g 2 = [ 0 0 1 0 0 0 ] g_0=\begin{bmatrix}1&0&1\\0&1&1\end{bmatrix},g_1=\begin{bmatrix}0&0&0\\0&0&1\end{bmatrix},g_2=\begin{bmatrix}0&0&1\\0&0&0\end{bmatrix} g0=[100111]g1=[000001]g2=[000010]
  生成矩阵为: G ∞ = [ 101 000 001 000 000 000 ⋯ 011 001 000 000 000 000 ⋯ 000 101 000 001 000 000 ⋯ 000 011 001 000 000 000 ⋯ 000 000 101 000 001 000 ⋯ 000 000 011 001 000 000 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ] G_\infty= \begin{bmatrix} 101&000&001&000&000&000&\cdots\\ 011&001&000&000&000&000&\cdots\\ 000&101&000&001&000&000&\cdots\\ 000&011&001&000&000&000&\cdots\\ 000&000&101&000&001&000&\cdots\\ 000&000&011&001&000&000&\cdots\\ \cdots&\cdots&\cdots&\cdots&\cdots&\cdots&\cdots \end{bmatrix} G=101011000000000000000001101011000000001000000001101011000000001000000001000000000000001000000000000000000000
  编码器原理图为:在这里插入图片描述
  当输入序列为 m = 10 11 00 00 ⋯ m=10\:11\:00\:00\cdots m=10110000时,输出序列为 y = 101 110 000 001 000 ⋯ y=101\:110\:000\:001\:000\:\cdots y=101110000001000

参考:卷积码
   通信原理(第二版)张会生 著


http://chatgpt.dhexx.cn/article/EUIRJqOy.shtml

相关文章

线性卷积运算

一、卷积定义 卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是g(n)序列和h(n),则卷积的结果 y ( n ) g ( n ) ∗ h ( n ) ∑ i − ∞ ∞ g ( i ) h ( n − i ) y(n) g(n) * h(n) \sum_{i -\infty}^{\infty}g(i)h(n-i) y(n)g(n)∗h(n)i−∞∑∞​…

向量与矩阵的卷积算法

由于我发现网上并没有关于向量与矩阵两者进行卷积计算的具体算法,所以我就跟各位网友分享一下我的观点。因为本人知识储备有限,对卷积的了解也很是肤浅,没有深入研究,所以有错误的地方还请大神们指正,小子不胜感激。 …

矩阵卷积、矩阵相乘的转化

两个矩阵卷积转化为矩阵相乘形式——Matlab应用(这里考虑二维矩阵,在图像中对应)两个图像模糊(边缘)操作,假设矩阵A、B,A代表源图像,B代表卷积模板,那么B的取值决定最后运算的结果。 Matlab中的…

矩阵卷积理解

为了验证后续矩阵卷积转化为矩阵相乘,这里给出的conv2的实例描述: 假设矩阵A(4*3)、B(2*3)如下: 首先,B需要旋转180, 命令旋转2次90即可: B rot90(rot90(B)…

什么是卷积

目录 卷积是什么鬼卷积为什么这么牛卷积神经网络是个啥 卷积是什么鬼 卷积(convolution) 卷积: f ( t ) ∗ g ( t ) ∫ f ( τ ) g ( τ ) d ( τ ) 卷积运算符号用 ∗ 号来表示 卷积:f(t)*g(t)\int{f(τ)g(τ)d(τ)}\\ 卷积运算符号用*号来表示 卷积…

二维卷积/矩阵卷积

二维卷积/矩阵卷积的计算方程 设有矩阵A和矩阵B,它们的卷积结果矩阵的元素可由下列公式计算得来: C(j,k)∑p∑qA(p,q)B(j−p1,k−q1) 其中的index只要在A,B中valid都要参与运算。 举例来说,令矩阵M为卷积核矩阵,矩阵…

如何计算矩阵的卷积

昨天立下flag,要开始学习深度学习,深度学习中十分重要的就是卷积神经网络,顾名思义,卷积神经网络中一定会用到卷积。喵哥在博友的一篇博文中看到卷积运算用于图像边缘检测的应用实例,博友十分细心的在截图上做了卷积的…

矩阵乘法实现卷积运算

1. 对于普通卷积运算,是使用滑动窗口实现卷积运算: 矩阵根据卷积核的大小进行,从左到右、从上到i下的移动,对应数据相乘再相加得到的数据为该区域的值。 ​​​​​​​ ​​​​​​​ 2.矩阵乘法实现卷积 原理:根据…

各种卷积操作及其矩阵运算

前言 简单来讲,卷积是一种函数和函数产生一个新函数的数学运算,该数学运算的自变量是两个函数f, g(连续或离散都可以,,定义域之外的部分记函数值填充为0),输出为一个函数h,满足 ,或者说,就是对…

矩阵卷积运算的具体过程

矩阵卷积运算的具体过程,很简单 最近在看图像处理,卷积运算这一块也查了很多,但是感觉都写的太复杂,我这里简单的写一下卷积到底是一个什么计算过程。 假设有一个卷积核h,就一般为3*3的矩阵: 有一个待处理…

矩阵卷积运算过程讲解

写了那么久的博客,始于Python爬虫,目前专于Java学习,终于有了属于自己的小窝,欢迎各位访问我的个人网站,未来我们一起交流进步。 在爬虫处理验证码的过程中接触到矩阵卷积运算,关于该类运算,记录…

矩阵的卷积以及使用python计算方法

1、离散⼆维卷积公式 其中A为被卷积矩阵,K为卷积核,B为卷积结果,该公式中,三个矩阵的排序均从0开始。 卷积核、滤波器通常为较小尺寸的矩阵,比如3333、5555等,数字图像是相对较大尺寸的2维(多…

矩阵卷积

1. 矩阵的卷积运算主要用在图像处理中,假设输入信号为x[m,n],激活响应为h[m,n],则其卷积定义为: 2.如果矩阵的中心在边缘就要将原矩阵进行扩展,例如补0 3.卷积的计算步骤: (1) 卷积核绕自己的核心…

隐马尔可夫模型(HMM)及Viterbi算法

HMM简介 对于算法爱好者来说,隐马尔可夫模型的大名那是如雷贯耳。那么,这个模型到底长什么样?具体的原理又是什么呢?有什么具体的应用场景呢?本文将会解答这些疑惑。   本文将通过具体形象的例子来引入该模型&#x…

viterbi算法实例及python实现

Python中hmmlearn给出了三种HMM模型:MultiomialHMM,GaussianHMM,GMMHMM。本文以MultiomialHMM为例,使用《从机器学习到深度学习》中第六章的活动/天气模型进行推算。 假设有这样一个问题,远在另一个城市上大学的儿子每天通过邮件向你汇报他今…

在HMM中实际应用Viterbi算法的例子

在HMM中实际应用Viterbi算法的例子 Viterbi概念动态规划使用HMM的Viterbi算法参考Viterbi概念 本质:动态规划算法 维特比算法是多步骤每步多选择模型的最优选择问题。 其在每一步的所有选择都保存了前续所有步骤到当前步骤当前选择的最小总代价(或者最大价值)以及当前代价…

HMM和viterbi算法初步实践-----中文分词

马尔科夫性质:当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态。换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的(也就是没有任何的…

HMM和Viterbi算法

一、隐马尔可夫模型(Hidden Markov Model) 1、简介 隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的。隐含马…

基于Hmm模型和Viterbi算法的中文分词和词性标注

使用 python 实现基于Hmm模型和Viterbi算法的中文分词及词性标注;使用 最大概率算法 进行优化。最终效果:人民日报语料:分词(F1:96.189%);词性标注(F1:97.934%) 完整代码和数据,参见本实验的 github地址:h…

【生信算法】利用HMM纠正测序错误(Viterbi算法的python实现)

利用HMM纠正测序错误(Viterbi算法的python实现) 问题背景 对两个纯系个体M和Z的二倍体后代进行约~0.05x的低覆盖度测序,以期获得后代个体的基因型,即后代中哪些片段分别来源于M和Z。已知: 后代中基因型为MM、MZ&…