精华内容
下载资源
问答
  • 信道容量的计算
    千次阅读
    2021-04-20 06:21:20

    论文编号:XXLW084 论文字数:11049,页数:32

    摘  要

    信道是信息传递的通道,承担信息的传输和储存的任务,是构成通信系统的重要组成部分。信道容量是指信道能够传输信息量的大小。信道容量的研究在现实中有着非常重要的理论意义。而信道容量的计算是一个比较复杂的问题,所以我们要借助于数学软件Matlab来解决这个难题。

    本文的第一部分从信道容量的基本概念、基本原理、信道模型及分类等方面系统的介绍了信道容量。并在此基础上,介绍了一般信道容量的计算步骤。

    本文的第二部分开始介绍信道容量的迭代算法及迭代算法在Matlab中的实现,举例检验迭代算法在Matlab中实现的程序的可行性,分析程序,并与拉格朗日乘子法进行比较。

    关键词:信道容量  Matlab  迭代算法

    Abstract

    Channel is a channel of information transmission. And it take on the task of information transmission and storage. Channel is an important part of communication system. Channel capacity is the size of the amount of information can be transmitted. It has important significances in reality. However, calculating the channel capacity is a complex issue. So we must use the mathematical software Matlab to solve this problem.

    The first part of the article, it introduces channel capacity by the basic concepts, principles and the classification of channel models. On this basis, introduce and discuss the calculation steps of the general channel capacity.

    The second part of the article, it introduces the Iterative algorithm of the channel capacity and implementes the iterative algorithm in Matlab. After that, by realizing the feasibility of the procedure, we make some examples. And also analyze the procedure. Then compare it with Lagrange multiplier method.

    Keywords: channel capacity   Matlab    Iterative algorithm

    目 录

    中文摘要  i

    英文摘要  ii

    目 录 iii

    第一章  前言 1

    1.1  论文研究的背景 1

    1.2  研究信道容量的目的 1

    1.3  研究信道容量的意义 2

    第二章  离散无记忆信道及信道容量 3

    2.1  信道 3

    2.2  信道模型及其分类 3

    2.2.1  信道模型 5

    2.2.2  信道分类 5

    2.3  离散信道的数学模型 6

    2.4  离散无记忆信道 7

    2.5  信道容量的基本概念 7

    第三章  离散信道容量的计算 8

    3.1  特殊离散信道的信道容量计算 8

    3.1.1  离散无噪信道的信道容量 9

    3.1.2  离散对称信道的信道容量 10

    3.2  一般离散信道的信道容量计算 15

    第四章  信道容量的迭代算法及其实现 16

    4.1  迭代算法 19

    4.2  迭代算法在Matlab中的实现 20

    4.3  信道容量的算例及其在Matlab中的实现 23

    4.4  程序分析 23

    4.5  拉格朗日乘子法与迭代算法的比较 25

    第五章  总结 26

    致  谢 27

    参考文献 28

    本站会员可自行下载:如何获取积分?

    基于Matlab的信道容量计算相关论文

    更多相关内容
  • MIMO信道分析,MIMO信道容量计算,对分集和复用原理介绍,以及其信道容量的计算
  • 主要基于小论文提出的公式,计算了OFDM-MIMO系统的信道容量(N=64,即子载波数等于64),当N=1时,OFDM-MIMO系统即退化为MIMO系统。通过对比发现,OFDM-MIMO系统的信道容量比单纯MIMO系统的信道容量大,感兴趣的朋友...
  • 信道容量计算

    千次阅读 2021-06-10 19:18:13
    一.香农公式 带宽极限时的信道容量

    一.香农公式

    带宽极限时的信道容量:

    展开全文
  • 对4收4发的MIMO系统进行仿真,计算信道容量随信噪比的变化趋势
  • 预先输入概率矩阵的文件,计算信道容量,由C语言实现
  • 在不同的《信息论》教材中,有关信道对称性的描述并不统一,这为学习对称性信道的信道容量计算方法造成的一定障碍。因此,本文在文章的开篇部分将对本文中所描述的三种具有对称性的信道进行严格定义,以减小文章出现...

    1. 三类具有对称性的信道

    在不同的《信息论》教材中,有关信道对称性的描述并不统一,这为学习对称性信道的信道容量计算方法造成的一定障碍。因此,本文在文章的开篇部分将对本文中所描述的三种具有对称性的信道进行严格定义,以减小文章出现歧义的概率。

    • Symmetric Channel:
      对称信道(Symmetric Channel)是最严格的对称性信道,该信道要求:

      • 对于任意输入符号,其转移概率均为第一个输入符号转移概率的置换;即:
        ∀ x t ∈ X , ∃ E = ∏ E i j , s . t .    p ⃗ ( y ∣ x t ) = p ⃗ ( y ∣ x 1 ) E \forall x_t\in X, \quad\exist \mathbf{E} = \prod \mathbf{E_{ij}},\quad s.t.\;\vec{p}(y|x_t) = \vec{p}(y|x_1)\mathbf{E} xtX,E=Eij,s.t.p (yxt)=p (yx1)E
        其中 E i j \mathbf{E_{ij}} Eij是初等置换矩阵, p ⃗ ( y ∣ x t ) \vec{p}(y|x_t) p (yxt)是第 t t t个输入符号对应的转移概率向量,该向量是转移概率矩阵中的第 t t t行。
      • 对于任意输出符号,其转移概率均为第一个输出符号转移概率的置换;即:
        ∀ y t ∈ Y , ∃ E = ∏ E i j , s . t .    p ⃗ ( y t ∣ x ) = E p ⃗ ( y 1 ∣ x ) \forall y_t\in Y, \quad\exist \mathbf{E} = \prod \mathbf{E_{ij}},\quad s.t.\;\vec{p}(y_t|x) = \mathbf{E}\vec{p}(y_1|x) ytY,E=Eij,s.t.p (ytx)=Ep (y1x)
        其中 p ⃗ ( y t ∣ x ) \vec{p}(y_t|x) p (ytx)是第 t t t个输出符号对应的转移概率向量,该向量是转移概率矩阵中的第 t t t列。

      从信道矩阵观察,对称信道的任意一行的元素都完全相同,只是顺序发生了改变;任意一列也有相同的性质。

    • Wealky Symmetric Channel:
      弱对称信道(Weakly Symmetric Channel)是对称信道的扩展,对称信道是弱对称信道的特例。相比对称信道,弱对称信道的条件约束更少,但性质却与对称信道基本相同。该信道要求:

      • 对于任意输入符号,其转移概率均为第一个输入符号转移概率的置换;即:
        ∀ x t ∈ X , ∃ E = ∏ E i j , s . t .    p ⃗ ( y ∣ x t ) = p ⃗ ( y ∣ x 1 ) E \forall x_t\in X, \quad\exist \mathbf{E} = \prod \mathbf{E_{ij}},\quad s.t.\;\vec{p}(y|x_t) = \vec{p}(y|x_1)\mathbf{E} xtX,E=Eij,s.t.p (yxt)=p (yx1)E
        其中 E i j \mathbf{E_{ij}} Eij是初等置换矩阵, p ⃗ ( y ∣ x t ) \vec{p}(y|x_t) p (yxt)是第 t t t个输入符号对应的转移概率向量,该向量是转移概率矩阵中的第 t t t行。
      • 对于任意输出符号,其转移概率之和为常数;即:
        ∀ y t ∈ Y , ∑ x i ∈ X p ( y t ∣ x i ) = C \forall y_t \in Y, \quad \sum_{x_i\in X}p(y_t|x_i) = C ytY,xiXp(ytxi)=C
    • Quasi Symmetric Channel:
      准对称信道(半对称信道,Quasi Symmetric Channel)是约束最弱的对称信道,对称信道与弱对称信道均是准对称信道的特例。该信道要求:

      存在一种分块方式, s . t .    P = [ p 1 , p 2 , ⋯   ] s.t.\;\mathbf{P} =[\mathbf{p_1},\mathbf{p_2},\cdots] s.t.P=[p1,p2,],且 p 1 , p 2 , ⋯ \mathbf{p_1},\mathbf{p_2},\cdots p1,p2,分块矩阵均满足对称信道条件。

    下面列举的三个信道矩阵中, P 1 \mathbf{P_1} P1是对称信道,自然也属于弱对称信道和准对称信道; P 2 \mathbf{P_2} P2是弱对称信道,但也属于准对称信道; P 3 \mathbf{P_3} P3只是准对称信道。
    P 1 = [ 0.3 0.7 0.7 0.3 ] P 2 = [ 0.4 0.1 0.2 0.3 0.1 0.4 0.3 0.2 ] P 3 = [ 0.7 0.2 0.1 0.2 0.7 0.1 ] \mathbf{P_1} = \begin{bmatrix} 0.3 & 0.7\\ 0.7 & 0.3 \end{bmatrix}\quad \mathbf{P_2} = \begin{bmatrix} 0.4 & 0.1 & 0.2 & 0.3\\ 0.1 & 0.4 & 0.3 & 0.2 \end{bmatrix}\quad \mathbf{P_3}= \begin{bmatrix} 0.7 & 0.2 & 0.1\\ 0.2 & 0.7 & 0.1 \end{bmatrix} P1=[0.30.70.70.3]P2=[0.40.10.10.40.20.30.30.2]P3=[0.70.20.20.70.10.1]

    2. 对称性信道的信道容量计算

    2.1. 对称信道

    任何信道的平均互信息都可以写成信宿熵与噪声熵的差值,即:
    I ( X ; Y ) = H ( Y ) − H ( Y ∣ X ) I(X;Y) = H(Y) - H(Y|X) I(X;Y)=H(Y)H(YX)
    噪声熵是一种条件熵,是条件事件 ( y ∣ x ) (y|x) (yx)所对应的概率空间包含的信息量的期望,即:
    H ( Y ∣ X ) = − ∑ x i ∈ X , y j ∈ Y p ( x i , y j ) log ⁡ 2 p ( y j ∣ x i ) H(Y|X) = -\sum_{x_i\in X, y_j\in Y} p(x_i,y_j)\log_2p(y_j|x_i) H(YX)=xiX,yjYp(xi,yj)log2p(yjxi)
    考虑到期望运算的加权因子,即联合概率 p ( x , y ) p(x,y) p(x,y),实际上取决于信源概率分布和信道转移概率,即:
    p ( x i , y j ) = p ( x i ) p ( y j ∣ x i ) p(x_i,y_j) = p(x_i) p(y_j|x_i) p(xi,yj)=p(xi)p(yjxi)
    可以把噪声熵改写成另一种形式,在该形式中,信源分布和信道转移概率对噪声熵的影响被分离:
    H ( Y ∣ X ) = − ∑ x i ∈ X , y j ∈ Y p ( x i , y j ) log ⁡ 2 p ( y j ∣ x i ) = − ∑ x i ∈ X ∑ y j ∈ Y p ( x i ) p ( y j ∣ x i ) log ⁡ 2 p ( y j ∣ x i ) = ∑ x i ∈ X p ( x i ) [ − ∑ y j ∈ Y p ( y j ∣ x i ) log ⁡ 2 p ( y j ∣ x i ) ] \begin{aligned} H(Y|X) &= -\sum_{x_i\in X, y_j\in Y} p(x_i,y_j)\log_2p(y_j|x_i)\\ &= -\sum_{x_i\in X}\sum_{y_j\in Y}p(x_i)p(y_j|x_i)\log_2p(y_j|x_i)\\ &= \sum_{x_i\in X}p(x_i)\left[ -\sum_{y_j\in Y} p(y_j|x_i)\log_2p(y_j|x_i) \right] \end{aligned} H(YX)=xiX,yjYp(xi,yj)log2p(yjxi)=xiXyjYp(xi)p(yjxi)log2p(yjxi)=xiXp(xi)yjYp(yjxi)log2p(yjxi)
    考虑到对称信道的性质:对于任何输入符号,其转移概率分布都是第一个符号分布的置换,因此:
    ∀ x i ∈ X , − ∑ y j ∈ Y p ( y j ∣ x i ) log ⁡ 2 p ( y j ∣ x i ) = C \forall x_i\in X, \quad -\sum_{y_j\in Y} p(y_j|x_i)\log_2p(y_j|x_i) = C xiX,yjYp(yjxi)log2p(yjxi)=C
    于是,信源分布不再对噪声熵有任何影响。噪声熵仅与信道转移概率有关,且转移概率矩阵的任意一行均可用来求解噪声熵:
    H ( Y ∣ X ) = ∑ x i ∈ X p ( x i ) [ − ∑ y j ∈ Y p ( y j ∣ x i ) log ⁡ 2 p ( y j ∣ x i ) ] = C ∑ x i ∈ X p ( x i ) = C = − ∑ y j ∈ Y p ( y j ∣ x t ) log ⁡ 2 p ( y j ∣ x t ) ∀ x t ∈ X \begin{aligned} H(Y|X) &= \sum_{x_i\in X}p(x_i)\left[ -\sum_{y_j\in Y} p(y_j|x_i)\log_2p(y_j|x_i) \right]\\ &= C\sum_{x_i\in X}p(x_i)\\ &= C\\ &= -\sum_{y_j\in Y} p(y_j|x_t)\log_2p(y_j|x_t) \quad \forall x_t \in X \\ \end{aligned} H(YX)=xiXp(xi)yjYp(yjxi)log2p(yjxi)=CxiXp(xi)=C=yjYp(yjxt)log2p(yjxt)xtX
    于是,求解 I ( X ; Y ) = H ( Y ) − H ( Y ∣ X ) I(X;Y) = H(Y) - H(Y|X) I(X;Y)=H(Y)H(YX) p ⃗ ( x ) \vec{p}(x) p (x)上最大值的问题,转变为求解 H ( Y ) H(Y) H(Y) p ⃗ ( x ) \vec{p}(x) p (x)最大值的问题。

    信宿熵的本质也是一个概率空间的自信息熵。根据自信息熵的性质,当且仅当概率空间服从均匀分布时,自信息熵取得最大值。因此,可以试图让信宿分布达到均匀分布,进而使平均互信息最大。

    需要注意的是,这样的尝试可能是失败的,因为信宿分布并不是一个可以调整的自变量。信宿分布是信源分布和信道转移概率作用后的结果,在给定信道的条件下,尝试让信宿服从均匀分布的过程就是在寻找一个合适的信源分布的过程。对于任意信道,这种信源分布很可能是不存在的(在后文求解准对称信道的章节中可以看到这一点);但值得庆幸的是,对于对称信道,这种信源分布一定存在:
    ∀ y t ∈ Y , p ( y t ) = ∑ x i ∈ X p ( x i , y t ) = ∑ x i ∈ X p ( x i ) p ( y t ∣ x i ) \forall y_t\in Y,\quad p(y_t) = \sum_{x_i\in X}p(x_i,y_t) = \sum_{x_i\in X}p(x_i)p(y_t|x_i) ytY,p(yt)=xiXp(xi,yt)=xiXp(xi)p(ytxi)
    需要注意的是,对称信道任意输出的转移概率分布都相同。即,只要 p ( x i ) p(x_i) p(xi) x i x_i xi无关, ∑ x i p ( y t ∣ x i ) \sum_{x_i}p(y_t|x_i) xip(ytxi)就与 y t y_t yt无关:
    p ( y t ) = p ( x i ) ∑ x i ∈ X p ( y t ∣ x i ) p(y_t) = p(x_i)\sum_{x_i\in X}p(y_t|x_i) p(yt)=p(xi)xiXp(ytxi)
    即:对于对称信道,当输入为均匀分布时,输出也是均匀分布。

    综上,可以得出结论:对称信道的在输入为均匀分布时可以达到信道容量,信道容量的表达式为:
    C = log ⁡ 2 r − H ( Y ∣ x t ) C = \log_2r - H(Y|x_t) C=log2rH(Yxt)
    其中 r r r是输出符号的数量, H ( Y ∣ x t ) H(Y|x_t) H(Yxt)是以任意一个输入符号为条件,输出符号空间的条件熵。

    2.2. 弱对称信道

    由于弱对称信道和对称信道均要求信道转移概率关于不同输入对称,因此,弱对称信道的噪声熵也与输入分布无关:
    H ( Y ∣ X ) = − ∑ y j ∈ Y p ( y j ∣ x t ) log ⁡ 2 p ( y j ∣ x t ) ∀ x t ∈ X H(Y|X)= -\sum_{y_j\in Y} p(y_j|x_t)\log_2p(y_j|x_t) \quad \forall x_t \in X H(YX)=yjYp(yjxt)log2p(yjxt)xtX
    因此,弱对称信道的信道容量也在信宿熵最大时取得。考虑到(2.1.)中求解信宿服从均匀分布时,只要求以下方程成立:
    p ( y t ) = p ( x i ) ∑ x i ∈ X p ( y t ∣ x i ) p(y_t) = p(x_i)\sum_{x_i\in X}p(y_t|x_i) p(yt)=p(xi)xiXp(ytxi)
    而弱对称信道的转移概率虽然关于不同输出并不对称,但其概率之和是定值,即 ∑ x i p ( y t ∣ x i ) = C \sum_{x_i}p(y_t|x_i) = C xip(ytxi)=C。因此,弱对称信道也能在均匀分布的信源作用下得到均匀分布的信宿。

    因此,弱对称信道的信道容量与对称信道完全相同:弱对称信道在输入为均匀分布时可以达到信道容量,信道容量的表达式为:
    C = log ⁡ 2 r − H ( Y ∣ x t ) C = \log_2r - H(Y|x_t) C=log2rH(Yxt)
    其中 r r r是输出符号的数量, H ( Y ∣ x t ) H(Y|x_t) H(Yxt)是以任意一个输入符号为条件,输出符号空间的条件熵。

    2.3. 准对称信道

    准对称信道的信道转移概率关于输入符号也是对称的,因此也具有对称信道和弱对称信道的关于噪声熵的结论:
    H ( Y ∣ X ) = − ∑ y j ∈ Y p ( y j ∣ x t ) log ⁡ 2 p ( y j ∣ x t ) ∀ x t ∈ X H(Y|X)= -\sum_{y_j\in Y} p(y_j|x_t)\log_2p(y_j|x_t) \quad \forall x_t \in X H(YX)=yjYp(yjxt)log2p(yjxt)xtX
    那么,求解信道平均互信息的最大值,理应也转化成求解信宿熵的最大值。与之前一样,我们期望存在一种信源分布,能使得信宿熵能实现均匀分布。然而令人遗憾的是,这种信源分布未必存在。

    我们假设存在这样一种信源分布,能使信宿分布概率均为 1 / r 1/r 1/r,即:
    [ p ( y 1 ∣ x 1 ) p ( y 2 ∣ x 1 ) ⋯ p ( y r ∣ x 1 ) p ( y 1 ∣ x 2 ) p ( y 2 ∣ x 2 ) ⋯ p ( y r ∣ x 2 ) ⋮ ⋮ ⋱ ⋮ p ( y 1 ∣ x s ) p ( y 2 ∣ x s ) ⋯ p ( y r ∣ x s ) ] T × [ p ( x 1 ) p ( x 2 ) ⋮ p ( x s ) ] = [ 1 / r 1 / r ⋮ 1 / r ] \begin{bmatrix} p(y_1|x_1) & p(y_2|x_1) & \cdots & p(y_r|x_1)\\ p(y_1|x_2) & p(y_2|x_2) & \cdots & p(y_r|x_2)\\ \vdots & \vdots & \ddots & \vdots\\ p(y_1|x_s) & p(y_2|x_s) & \cdots & p(y_r|x_s) \end{bmatrix}^T\times \begin{bmatrix} p(x_1)\\ p(x_2)\\ \vdots\\ p(x_s) \end{bmatrix}= \begin{bmatrix} 1/r\\ 1/r\\ \vdots\\ 1/r \end{bmatrix} p(y1x1)p(y1x2)p(y1xs)p(y2x1)p(y2x2)p(y2xs)p(yrx1)p(yrx2)p(yrxs)T×p(x1)p(x2)p(xs)=1/r1/r1/r
    能使输出达到均匀分布的信源分布是该线性非齐次方程组的一组解,但为了保证这个解确实能构成合理的信源概率空间,还需要添加概率空间完备性的约束条件 ∑ i p ( x i ) = 1 \sum_i p(x_i) = 1 ip(xi)=1,于是方程变为:
    [ p ( y 1 ∣ x 1 ) p ( y 1 ∣ x 2 ) ⋯ p ( y 1 ∣ x s ) p ( y 2 ∣ x 1 ) p ( y 2 ∣ x 2 ) ⋯ p ( y 2 ∣ x s ) ⋮ ⋮ ⋱ ⋮ p ( y r ∣ x 1 ) p ( y r ∣ x 2 ) ⋯ p ( y r ∣ x s ) 1 1 ⋯ 1 ] × [ p ( x 1 ) p ( x 2 ) ⋮ p ( x s ) ] = [ 1 / r 1 / r ⋮ 1 / r 1 ] \begin{bmatrix} p(y_1|x_1) & p(y_1|x_2) & \cdots & p(y_1|x_s)\\ p(y_2|x_1) & p(y_2|x_2) & \cdots & p(y_2|x_s)\\ \vdots & \vdots & \ddots & \vdots\\ p(y_r|x_1) & p(y_r|x_2) & \cdots & p(y_r|x_s)\\ 1& 1& \cdots & 1 \end{bmatrix}\times \begin{bmatrix} p(x_1)\\ p(x_2)\\ \vdots\\ p(x_s) \end{bmatrix}= \begin{bmatrix} 1/r\\ 1/r\\ \vdots\\ 1/r\\ 1 \end{bmatrix} p(y1x1)p(y2x1)p(yrx1)1p(y1x2)p(y2x2)p(yrx2)1p(y1xs)p(y2xs)p(yrxs)1×p(x1)p(x2)p(xs)=1/r1/r1/r1
    该线性非其次方程组有解的充要条件是:系数矩阵与增广矩阵同秩。

    未完。。。

    展开全文
  • 计算MIMO系统中信道容量的程序,包括中断容量和遍历性容量两种
  • 实现信道容量计算 用C语言编的,很不错,希望有帮助
  • 不同调制方式下高斯信道容量计算
  • 目前3GPP LCR TDD标准适合于独立组网,属单载频小区系统,信道和BRU局限在1个载频内。规范进一步发展的重点将是多载频小区,网络性能将会有较大提高。TD- SCDMA多载频系统的相关规范目前已在中国通信标准化协会...
  • 2. 学习如何将复杂的公式转化为程序 3. 掌握Python语言数值计算程序的设计和调试技术 1. 已知:信源符号个数n、信宿符号个数m,信道转移概率矩阵2.
  • matlab_MIMO多天线系统2*2、3*3、4*4的仿真,有信道容量计算
  • 资源名:MATLAB迭代法计算信道容量 程序源码.zip 资源类型:程序源代码 源码说明: 基于MATLAB迭代法的计算信道容量程序源码,包含完整代码和注释,非常适合借鉴学习 适合人群:新手及有一定经验的开发人员
  • 在此代码中,我们通过瑞利衰落驱动 ... 对于每个在计算奇异值后,设置 MIMO 信道信道矩阵,发射功率基于注水分配算法。 得到的容量是 MIMO 系统所能提供的最好的容量因为在 TX 和 RX 侧都使用了完整的信道状态信息。
  • mimo信道MATLAB计算

    2021-04-17 00:53:27
    mimo信道MATLAB计算;mimo误比特率;mimo信道容量
  • Matlab信道容量的迭代计算

    一、实验目的:

    熟悉 Matlab 工作环境及工具箱;

    掌握一般信道容量迭代算法的原理。

                                                             

    二、实验仪器:

    Matlab2015a

    三、实验原理:                                                           

    衡量一个信息传递系统的好坏,有两个主要指标:

    数量(速度)指标——信息(传输)率R

    质量指标——平均差错率Pe

    信息率能大到什么程度——信道容量

    信道容量的定义

     

     信道

    核心问题是信道容量和最佳输入分布。

    根据定义,求信道容量问题就是求平均互信息量I(X;Y)关于输入概率分布Px的最大值问题。

    ¨ 常见信道

    离散无噪信道(无损、确定、无损确定信道)

    离散对称信道/准对称信道一般DMC信道容量

    一般DMC信道容量的计算非常困难,信道容量计算的迭代算法能在给定的精度下用有限步数计算出一般DMC的信道容量。

    定理

    ¨ 设DMC的转移概率矢量为,记是任意给定的一组初始输入分布,其所有分量均不为零。按下式不断对输入分布进行迭代、更新

     其中

    信道容量的迭代算法流程图

     

    四、实验步骤:                                                                                                               

    1.先利用Matlab编写函数;

    2.再根据函数将实验要求生成实验结果;

    3.根据实验内容填写实验报告;                                                          

    五、实验内容及数据整理:  

    用Matlab软件编程实现一般信道容量迭代算法

    设定不同的迭代精度

    设定不同的信道

                                                                                                           

     六、实验结果及讨论                                                          

     

    第一种编程方法:

    clc;clear;close all

    disp('请输入信道矩阵:')

    Pb_a=input('Pb_a=');

    Pb_a(Pb_a==0)=eps;     %Pb_a==0返回矩阵中等于0的位置,再利用Pb_a=eps赋予精度

    disp('请输入初始概率分布:')

    Pa0=input('Pa0=');

    [r, s]=size(Pb_a);                            %判断行列的数量

    [r0, s0]=size(Pa0);

    while (s0~=r)                       %Matlab中~=表示不等于

        Pa0=input('阶数错误!请重新输入初始概率分布Pa0=');

        [r0, s0]=size(Pa0);

    end

    tol=1e-8;

    Cn=0;

    Cn1=10;

    Pa=Pa0;

    Pa(Pa==0)=eps;

    while abs(Cn1-Cn)>tol

        for k=1:s0                          %表示创建一个从1到s0的行向量

            Md=0;

            for j=1:s

                Me=0;

                for i=1:r

                    Me=Me+Pa(i)*Pb_a(i,j);

                end

                Md=Md+Pb_a(k,j)*log2(Pb_a(k,j)/Me);

            end

            Mb(k)=exp(Md); % Mb(k)相当于a_k

        end

        for k=1:s0

            Mc=0;

            for i=1:r

                Mc=Mc+Pa(i)*Mb(j);

            end

            Pa(k)=Pa(k)*Mb(k)/Mc;

        end

        M_Cn=0;

        for j=1:r

                M_Cn=M_Cn+Pa(j)*Mb(j);

        end

            Cn=log(M_Cn);

            Cn1=log(max(Mb));

    end

    C=Cn;

    disp('信道容量为:')

    disp(C)

    disp('bit/sym')

    disp('最佳输入分布为:');

    disp(Pa)

    结果:

     

    第二种编程方法:

    %离散单符号信道容量的迭代算法(MATLAB实现)

    %程序编写测试环境为MATLAB R2014a

    %程序运行涉及的四个参数现已调整合适,除这四个参数外其他部分不应修改

    %为方便起见,程序仅输入信道转移概率矩阵P,通过P获取r,s

    %鉴于MATLAB矩阵运算的优势,信道容量迭代算法改用矩阵形式表述

    %程序输出部分包括最佳信源分布及对应信道容量

    %提供测试矩阵,[0.5 0.5 0 0;0 0 0.5 0.5],信源等概时信道容量1.00比特/符号

    clc;clear;close all;

    %算法参数设置

    err=1e-15;                          %误差门限参数设置

    C_current=-1e30;                    %初始信道容量设置

    K=10000;                            %最大迭代次数设置

    fag=1e-50;                          %设定的高次小量用于替换0

    %输入部分

    %键盘输入,输入处理及输入判断

    Pcc=input('请输入信道转移概率矩阵(输入格式示例[0.5 0.5;0.4 0.6])\n');

    M=size(Pcc);                        %读取信道转移概率矩阵的大小

    r=M(:,1);                           %获取信源符号个数

    s=M(:,2);                           %获取信宿符号个数

    %判断输入矩阵是否满足要求

    tag0=sum(Pcc(:)>=0);            

    % tag1=sum((Pcc*ones(s,1))==1);   

    tag1=sum(abs((Pcc*ones(s,1)-1)<fag));

    if tag0~=r*s||tag1~=r

        error('输入信道转移概率矩阵错误,请重新输入');

    end

    Pcc(Pcc==0)=fag;                    %将矩阵中的0置为高次小量

    %算法部分

    %设定信源,迭代求解信道容量

    p=ones(1,r)./r;                     %初始化信源分布

    %迭代算法(采用矩阵表述)

    for k=1:K

        fai=(ones(s,1)*p).*Pcc';

        fai=fai./(fai*ones(r,r));       %计算信源条件下的后向概率

        

        p0=exp(diag(Pcc*(log(fai)))');

        p=p0/sum(p0);                   %计算新的信源分布

        C_new=log(sum(p0));             %计算信道容量,单位奈特/符号

        

        %判断迭代是否终止

        if (abs((C_new-C_current)))<=err*C_new    

            break;

        else

            C_current=C_new;            %信道容量结果更新

        end

    end

    %判断迭代是否失败

    if k==K

        error('迭代计算失败,请重新设置相关参数');

    end

    %输出部分

    %输出最大信道容量及对应的最佳信源分布

    C=C_new/log(2);                     %单位转换,转换为比特/符号                                               

    fprintf('\n');

    disp('最佳信源分布P为');

    disp(p);

    fprintf('信道容量C为%.10f比特/符号\n',C);

    结果:

     

    展开全文
  • 一般信道容量计算方法

    千次阅读 2021-11-23 14:41:54
    由 拉 格 朗 日 乘 子 法 对 L = I ( X ;... Y ) = l o g s − 某 一 行 的 熵 H ( Y ) = l o g s 如果是对称信道则用公式I(X;Y)=logs-某一行的熵\\ H(Y)=logs 如果是对称信道则用公式I(X;Y)=logs−某一行的熵H(Y)=logs
  • 这个程序主要是计算信道容量的,所以有需要的朋友们下载吧
  • DMC 信道容量迭代计算的matlab 实现--通信与信息系统一、用了matlab 实现DMC 容量迭代的算法如下:1. 初始化信源分布:.0det a 10,1,0,1)(>>=?==,选置,,k r i rP k i 一般我选deta=0.000001。2. }{,)()()()...
  • 陕西科技大学 信息论实验报告 信息论实验 信道容量计算 霍夫曼编码 算术编码
  • 此MATLAB程序采用矩阵表述的迭代算法求解离散单符号信道的信道容量。《信息论》课程上机作业之一。
  • MIMO信道容量仿真matlab代码,最全的M文件,使用非常棒。
  • 信道容量

    2021-07-24 02:57:11
    信道能无错误传送的最大信息率。对于只有一个信源和一个信宿的单用户信道,它是一个数,单位是比特每秒或比特每符号。它代表每秒或每个信道符号能传送的最大信息量,或者说小于这个数的信息率必能在此信道中无错误地...
  • 第三章 信道容量 信息论与编码 习题答案
  • 二进制对称信道 (BSC) 的容量百分比% function [c,pxy,py]=cap_bsc(px,pe) 以位为单位返回信道容量% 每个传输符号,联合概率分布% BSC通道的输入输出和概率分布% BSC 输出符号。 px 是一个 2 元素向量,表示输入位...
  • 计算其最佳信源概率和信道容量C。 附:程序代码如下: #include #include #define MAX 50 double Calculate_a(int k,double pa[]); double Calculate_C1(double pa[],double a[]); double Calculate_C2(double a[]);...
  • 如图:信源为且,信道有干扰,输出产生误码。 请求出:以及 注意文字叙述的对应,发出和收到信息都已知就是:xy

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,797
精华内容 6,318
关键字:

信道容量的计算