精华内容
下载资源
问答
  • DMC 信道容量迭代计算的matlab 实现--通信与信息系统一、用了matlab 实现DMC 容量迭代的算法如下:1. 初始化信源分布:.0det a 10,1,0,1)(>>=?==,选置,,k r i rP k i 一般我选deta=0.000001。2. }{,)()()()...

    DMC 信道容量迭代计算的matlab 实现--通信与信息系统

    一、用了matlab 实现DMC 容量迭代的算法如下:

    1. 初始化信源分布:.0det a 10,1,0,1)(>>=?==,选置,,k r i r

    P k i 一般我选deta=0.000001。

    2. }{,)()()()(k ij i

    ji

    k i ji k i k ij t p p p p t 得反向转移概率矩阵由式∑=。 3.

    ()()()()(){}111]log exp[]

    log exp[+++==∑∑∑k i k i j ij k ji j

    ij k ji k i p P t p

    t p p 计算由式。

    4.

    ()()()()()()。C t p t P I C k r i s j k ij ji k k k 10011log exp log ,+==++????????????????==∑∑计算由式

    5. 若a C C C k k k det )1()

    ()1(>-++,则k=k+1,转第2步

    6.输出迭代次数k 和()1+k C 和1+k P ,终止。

    二、了解了信道容量的定义和DMC 信道容量迭代计算方法,我用了matlab 来进行编程进行迭代计算得出信道容量。不足之处在于每迭代一次就输出一次迭代次数直到最后一次迭代。

    1)输入:输入信源个数、信宿个数和信道容量的精度,程序能任意生成随机的

    信道转移概率矩阵,也可以自己输入信道转移矩阵。

    2)输出:输出最佳信源分布和信道容量。将附件里的dmc.m 文件直接run 运行

    可以自主输入信道转移概率矩阵,按照程序中提示将那两句代替判

    断输入矩阵是否正确的那部分,dmc1.m 运行可以随机生成信道转移

    概率矩阵。

    三、检验程序

    之一:

    输入信源个数:2

    输入信宿个数:3

    输入信道容量的精度: 0.000001

    输入信道转移矩阵P :[0.5000 0.3000 0.2000;0.3000 0.5000 0.2000] 之二:P :[0.4000 0.3000 0.2000;0.3000 0.5000 0.2000] 之三:P :[1.1000 -0.3000 0.2000;0.3000 0.5000 0.2000] 之四:P:[0.6 0.4;0.01 0.99]

    之五:自动生成信道转移矩阵

    展开全文
  • 信道容量迭代计算

    2011-12-02 13:43:41
    一般信道容量迭代计算,采用纯c语言编写,实现了输入信道转移矩阵随机,同时可以将一次输入的信道矩阵通过修改精确度来计算其信道容量
  • 信道容量迭代算法

    2013-03-29 20:46:07
    对一般信道容量进行计算的简单程序,程序说明见注释
  • 信道容量迭代算法代码,c语言编写,用的是 Microsoft Visual Studio 2010
  • 离散信道容量迭代

    2012-05-06 15:11:46
    该程序使用matlab编写离散信道容量,具有参考价值
  • 信道容量迭代法实现

    2013-06-04 21:42:38
    利用c实现信道容量计算,很快,很好,很方便,而且简单
  • 使用MATLAB实现信道容量迭代的源程序,结果真确
  • DMC信道容量迭代算法(Matalab实现)

    千次阅读 2013-01-30 10:44:57
    一些公式没法粘贴,以后再补上  一、用了matlab实现DMC容量迭代的算法如下: 设信道输入和输出符号集大小分别为r,s. ...二、了解了信道容量的定义和DMC信道容量迭代计算方法,我用了matlab来进行编程进行

    一些公式没法粘贴,以后再补上 

    一、用了matlab实现DMC容量迭代的算法如下:

    设信道输入和输出符号集大小分别为r,s.

    1.初始化信源分布:这里选deta=0.000001。

    2.。

    3. 

     

      4.

    5.

    若,则k=k+1,转第2步

    6. 输出迭代次数k和和,终止。 

    二、了解了信道容量的定义和DMC信道容量迭代计算方法,我用了matlab来进行编程进行迭代计算得出信道容量。不足之处在于每迭代一次就输出一次迭代次数直到最后一次迭代。

    1)输入:输入信源个数、信宿个数和信道容量的精度,输入信道转移矩阵。

    2)输出:输出最佳信源分布和信道容量。

     

    三、检验程序

    之一:

    输入信源个数:2

    输入信宿个数:3

    输入信道容量的精度:0.000001

    输入信道转移矩阵P:[0.98 0.02; 0.05 0.95]

    之二:P:[0.60.4;0.05 0.95]

    之三:P:[0.8 0.150.05;0.05 0.15 0.8]

    之四:P:[0.99 0.01 0;0.005 0.99 0.005;0 0.010.99]

    四、程序源代码:

    clear;

    %r=input('输入信源个数:');

    %s=input('输入信宿个数:');

    %deta=input('输入信道容量的精度: ');

    deta=0.000001;

    %判断信道转移概率矩阵输入是否正确

    P=input('输入信道转移矩阵P:');

    [r,s]=size(P);

    for i=1:r

       if(sum(P(i,:))~=1)

           error('概率转移矩阵输入有误!!')

           return;

       end

       for j=1:s

           if(P(i,j)<0||P(i,j)>1)

           error('概率转移矩阵输入有误!!')

           return;

           end

       end

    end

     i=1:1:r;

     p(i)=1/r;%p为列向量

     disp('原始信源分布:'),disp(p)

    E=repmat(p',1,s);%r个等概率元素组成一列,复制为s

     

    for k=1:1:1/deta

       m=E.*P;

       q=sum(m);%把得到的矩阵m每列内部相加之和构成一行,得到输出矩阵

       su1=repmat(q,r,1);%把得到的行矩阵a复制r,成一新矩阵su1

       t=P./su1;

        for i=1:r

            for j = 1:s

                if t(i,j)==0

                     t(i,j)=1

                end

            end

        end

        n=exp(sum(P.*log(t),2));%ln(t)在这里表示为log(t),列向量

       u=p.*n';%信源分布的分子,行向量

       su2=sum(u);%信源分布的分母

       p=u/su2;

       E=repmat(p',1,s);

       su3=max(n);

       C1=log2(su2);C2=log2(su3);

       kk=C2-C1; 

      if(kk<=deta)

          break;

      end

    end

    disp('迭代次数:k='),disp(k)

    disp('最大信道容量时的信源分布:p='),disp(p)

    disp('最大信道容量:C='),disp(C1)

     

    五、运行结果如下:

    检验程序之一:

    输入信道转移矩阵P:[0.98 0.02;0.05 0.95]

    原始信源分布:

       0.5000    0.5000

    迭代次数:k=

        7

    最大信道容量时的信源分布:p=

       0.5129    0.4871

    最大信道容量:C=

    0.7858

     

    检验程序之二:

    P:[0.6 0.4;0.05 0.95]

    原始信源分布:

       0.5000    0.5000

    迭代次数:k=

       26

    最大信道容量时的信源分布:p=

       0.4487    0.5513

    最大信道容量:C=

       0.2838

     

    检验程序之三:

    P:[0.8 0.15 0.05;0.05 0.15 0.8]

    原始信源分布:

       0.5000    0.5000

    迭代次数:k=

        1

    最大信道容量时的信源分布:p=

       0.5000    0.5000

    最大信道容量:C=

    0.5757

    检验程序之四:

    P:[0.99 0.01 0;0.005 0.99 0.005;0 0.01 0.99]

    原始信源分布:

    0.3333    0.3333   0.3333

    迭代次数:k=

        4

    最大信道容量时的信源分布:p=

       0.3358    0.3283    0.3358

    最大信道容量:C=

       1.5009

    五、程序调试遇到的问题

    检验第4个转移概率矩阵时,由于含有0元素,导致,从而使得。因此应该插入判断矩阵{}元素时候为0,为0就用1代替。即for i=1:r

            for j = 1:s

                if t(i,j)==0

                     t(i,j)=1

                end

            end

        end

    因此可以计算含有0元素的概率转移矩阵。

     

     

     

     

     

    展开全文
  • 实验1 绘制二进熵函数曲线 1.本次实验的目的和要求 掌握、理解熵函数表达式及其性质 2.... 实验2 一般信道容量迭代算法 1. 实验目的 一般离散信道容量的迭代运算 2. 实验要求 (1)理解和掌握信道容量的概念和物理意义

    实验1 绘制二进熵函数曲线

    1.本次实验的目的和要求

    掌握、理解熵函数表达式及其性质 2.实验内容或原理

    1)用Excel 或Matlab 软件制作二进熵函数曲线。 2)熵的概念及性质

    ()()[]()[]())

    (1)(1 .log )( .)( 1log 1log )(log )()(10 , 110)(21Q H P H Q P H b n

    X H a p H p p p p x p x p X H p p p x x X P X i

    i i λλλλ-+≥-+≤=--+-=-=≤≤????

    ??

    -===??????∑

    3.需用的仪器等 1)计算机

    2)Windows 3)Microsoft Office

    4)Matlab

    4.实验步骤

    1) 理解熵函数的定义; 2) 准备一组数据; 3) 计算H(p); 4) 绘图。 5.教学方式 演示。 6.考核要求

    对熵函数H(p)的定义是否清楚。 7.实验报告要求

    填写报告并打印熵函数的图形。

    实验2 一般信道容量迭代算法

    1. 实验目的

    一般离散信道容量的迭代运算 2. 实验要求

    (1)理解和掌握信道容量的概念和物理意义

    展开全文
  • 掌握一般DMC信道容量迭代算法的原理。 二、实验原理 信道是信息传递的通道,承担信息的传输和储存的任务,是构成通信系统的重要组成部分。信道容量是指信道能够传输信息量的大小。信道容量的研究在现实中有着非常...

    一、实验目的 熟悉 Matlab 工作环境及工具箱; 掌握一般DMC信道容量迭代算法的原理。 二、实验原理 信道是信息传递的通道,承担信息的传输和储存的任务,是构成通信系统的重要组成部分。信道容量是指信道能够传输信息量的大小。信道容量的研究在现实中有着非常重要的理论意义。 信道的分类 根据I/O信号在时间和幅值上的取值是离散或连续分为时间离散/时间连续信道。 根据信道的记忆特性划分,可分为无记忆/有记忆信道。 根据信道的I/O关系是确定关系还是统计依存关系来划分,可分为无噪/有噪信道。 根据信道物理组成划分,有有线、无线信道。 根据信道用户类型划分,有单用户/多用户信道。 根据信道的参数类型划分你,有恒参/变参信道。 信道容量C 衡量一个信息传递系统的好坏,有两个主要指标: 数量(速度)指标——信息(传输)率R 即信道中平均每个符号传递的信息量。 质量指标——平均差错率Pe 信道容量的定义 信道 核心问题是信道容量和最佳输入分布。 根据定义,求信道容量问题就是求平均互信息量I(X;Y)关于输入概率分布Px的最大值问题。 一般DMC信道容量 一般DMC信道容量的计算非常困难,信道容量计算的迭代算法能在给定的精度下用有限步数计算出一般DMC的信道容量。 信道容量的迭代算法 设DMC的转移概率矢量为 ,记 是任意给定的一组初始输入分布,其所有分量 均不为零。按下式不断对输入分布进行迭代、更新 其中 信道容量的迭代算法流程图 在迭代算法流程图中 三、实验内容 用matlab软件编程实现一般信道容量迭代算法 设定不同的迭代精度 设定不同的信道 四、迭代算法 确定输入概率转移矩阵是否正确。 1、初始化信源分布,循环变量k=0,门限△ ; 2、由式 得到转移概率矩阵; 3、由式 计算 ; 4、由式 计算C(k+1) 5、若 ,则k=k+1,转第2步 6、否则迭代结束,输出计算结果。 五、实验报告要求 简述实验目的; 简述实验原理; 列写实验程序,分析实验结果; 简述信道的性质与最佳输入的关系以及迭代精度不同对结果的影响。 * * 实验二 一般信道容量迭代算法 当c(n)与c’(n)的差值小于某个给定值时,迭代结束。 *

    展开全文
  • 任意输入信道转移矩阵,可求的最佳转移概率并输出最佳概率下的信道容量
  • //迭代计算信道容量,参数值为信源,信宿符号个数和信道转移概率矩阵,返回信道容量 float GetCapacity(int nSourceSymbol,int nHostSymbol,const VEC_PFLOAT& vTransMatrix) { //信道容量初始化为最小值 float ...
  • 本人应老师要求乱写一气,希望能够给有缘之人提供一些参考,希望各位不吝赐教!
  • 信息论C信道容量迭代计算编程,完全可用
  • 一些公式没法粘贴,以后再补上一、用了matlab实现DMC容量...二、了解了信道容量的定义和DMC信道容量迭代计算方法,我用了matlab来进行编程进行迭代计算得出信道容量。不足之处在于每迭代一次就输出一次迭代次数直...
  • 信道容量迭代算法实验目的熟悉信道容量迭代算法; 学习如何将复杂的公式转化为程序;实验要求已知:信源符号个数r,新宿符号份额数s、信道转移概率矩阵p; 输入:任意的一个信道转移概率矩阵。r、s、p在运行时...
  • X源程序function [P_X,C,N]=contmax(P_YX,e)% 计算任意信道的信道容量C及最佳输入分布P_X% P_X -------输入概率分布% C----------信道容量N----------迭代次数% P_YX-----DMC信道的转移矩阵e-----------精度if ...
  • 用c/c++实现离散信道的信道容量迭代计算
  • 用matlab软件编程,利用迭代算法计算信道容量
  • 信道容量计算

    2011-12-03 17:22:33
    c语言源代码,实现信道容量的计算,实现了一般信道容量迭代计算,以及迭代次数,采用信息论中的作业,编写方法详见《信息论基础》人民邮电出版社124夜的算法去编写。
  • 离散信道容量迭代算法

    千次阅读 2010-05-15 15:48:00
     //当前信道容量和前一次循环信道容量  C=10.0;  double Pe=0.000001; //两次信道容量相差的阈值  int r=0; //迭代次数  float *p_up; //计算第r+1次循环输入分布p_in分子  p_up=new float[num_in];  ...
  • 计算其最佳信源概率和信道容量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[]);...
  • 参考北京邮电大学出版的信息论基础教程编写的迭代计算信道容量,MATLAB语言。
  • 迭代计算信道容量的matlab实现。取初始分布为均匀分布。IU和IL是迭代的两个边界值。
  • 信道容量迭代算法.net编程,带有注释
  • 信道容量迭代算法的C语言实现,可以运行的源代码,可以运行
  • 迭代算法实现离散信道容量,道是信息传递的通道,承担信息的传输和储存的任务,是构成通信系统的重要组成部分。信道容量是指信道能够传输信息量的大小。信道容量的研究在现实中有着非常重要的理论意义。而信道容量的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,762
精华内容 704
关键字:

信道容量的迭代计算