正式实验报告二—信道容量的计算
实验二 计算信道容量
PXi[i] = ((PXi[i] * a[i]) / sum);
}
n ++;
}
}while(cap_max-cap_result>= e);
printf("\n\n迭代次数为:%d\n" ,n);
for(i=0;i<X_num;i++)
{
printf("最佳信源概率:%f\n" ,PXi[i]);
}
/**************************************************************************
函数名:double Calculate_cap_result(double PXi[],double a[])
功能:计算并输出迭代法所需的参数cap_result
double Calculate_cap_max(double a[])
{
int i;
double max_a = a[0];
for(i=0;i<X_num;i++)
{
if(a[i] > max_a)
{
max_a = a[i];
}
}
printf("较大值=%f",log(max_a));
return log(max_a);
for(i=0;i<X_num;i++)
{
for(j=0;j<Y_num;j++)
{
printf("P[%d][%d]=",i,j);
scanf("%lf",&P[i][j]);
信道容量(Channel Capacity)
信道容量(Channel Capacity)无线传输环境中,如果发端和收端均采用单天线发送和接收信号,接收信号y的数学模型可以表示为y=hx+n \tag{1} ,其中h为无线信道, x为发送信号,n为高斯加性白噪声服从正太分布 \mathcal{C}(0,\sigma^2) 。
通信相关专业的学生应该知道香农公式:公式(1)表示的无线信道容量(Channel Capacity)为C=B\log_2\left(1+\frac{P_t|h|^2}{\sigma^2} \right),\tag{2}其中B为信号带宽, P_t 为信号发射功率。
相信很多人知道结论(2),但是不明白它是怎么得到的。
下面将简单的阐述其推导过程。
阅读该过程之前,建议阅读“ 徐光宁:信息论(1)——熵、互信息、相对熵”中关于熵和互信息的定义。
对于接收端,发送信息x是一个随机变量,例如以概率p(x=a)发送x=a。
如果发送信息x对于接收端为一个确定值,那发送本身就没有任何意义。
因为发送信号x和噪声n 都是随机变量,接收信号y也是随机的。
可以引入熵来描述随机变量y所含的信息量,即H(y)=\int_y p(y)\log \frac{1}{p(y)}dy,\\其中p(y)为y的概率密度函数。
当某一时刻发送某一x后(x 此时是确定的), 收到的y的信息量为H(y|x)=\int_y p(y|x)\log \frac{1}{p(y|x)}dy,\\其中p(y|x)为y在给定x下的条件概率。
注意y因为是随机变量x和n的和,且x和n相互独立,其信息量为传输信号x和噪声n的信息量之和。
而y|x的随机性仅仅与噪声n有关,其信息量为噪声n的信息量。
互信息定义为I(x,y)=H(y)-H(y|x)\\ 。
其物理意义为随机变量y的信息量减去噪声n的信息量,等于x的信息量。
信道容量C指信道所实际传输信息量的最大值C=\max\limits_{p(x)} I(x,y) \tag{3}数学证明当x服从高斯分布 \mathcal{C}(0,P_t) 时,C in (3)取得最大值。
离散信源熵信道容量实验报告
离散信源熵信道容量实验报告实验目的:通过模拟离散信源熵和信道容量的实验,掌握熵和信道容量的概念及计算方法。
实验原理:离散信源:离散信源是指其输出符号集合为有限的离散符号集合,通常用概率分布来描述其输出符号的概率分布,称为离散概率分布。
离散信源的熵是度量这一离散概率分布的不确定度的量度,其单位是比特。
离散信源的熵公式为:H(S)=-Σpi×log2pi其中,H(S)为离散信源的熵,pi为消息符号i出现的概率,log2为以2为底的对数。
信道容量:信道容量是指在某一固定的信噪比下,能够传送的最大信息速率。
信道容量的大小决定了数字通信系统的最高可靠传输速率。
离散无记忆信道的信道容量公式为:C=max{I(X;Y)}其中,X为输入符号,Y为输出符号,I为信息熵。
实验步骤:1. 生成随机概率分布对于3种不同的符号数量,生成随机的符号及其概率分布。
在生成时,要求概率之和为1。
2. 计算离散信源的熵根据所生成的随机概率分布计算离散信源的熵。
3. 构建离散无记忆信道构建一个离散的2进制对称信道,并存储在一个概率矩阵中,利用生成的概率分布对该矩阵进行初始化。
4. 计算信道容量根据所构建的离散无记忆信道计算其信道容量。
实验结果分析:以下是实验结果分析,其中H(S)表示离散信源的熵,C表示离散无记忆信道的信道容量。
符号数量为3时:符号概率a 0.2b 0.3c 0.5H(S) = 1.485构建的离散无记忆信道的概率矩阵为:| 0 | 1 |--------------------------a | 0.20 | 0.80 |--------------------------b | 0.60 | 0.40 |--------------------------c | 0.80 | 0.20 |--------------------------C = 0.823从实验结果可以看出,当符号数量增加时,熵的值也会随之增加,这是由于符号集合增加,随机性增强所导致的。
信道容量的计算方法
信道容量的计算方法信道容量的计算方法:1、对于离散无记忆信道,香农公式是计算信道容量的重要方法。
香农公式为C = W log₂(1 + S/N),其中C表示信道容量,W表示信道带宽,S表示信号功率,N表示噪声功率。
2、在计算信道容量时,先确定信道带宽W的值。
例如,在一个无线通信系统中,经过测量或者根据通信标准规定,信道带宽可能是20MHz。
3、接着确定信号功率S。
信号功率可以通过功率测量仪器得到,比如在一个发射机输出端测量到的功率为10W。
4、然后确定噪声功率N。
噪声功率的确定需要考虑多种因素,如热噪声、干扰噪声等。
热噪声功率可以根据公式N₀= kT₀B计算,其中k是玻尔兹曼常数,T₀是绝对温度,B是等效噪声带宽。
在常温下,假设T₀= 290K,若等效噪声带宽与信道带宽相同为20MHz,可算出热噪声功率,再加上其他干扰噪声功率得到总的噪声功率N。
5、将确定好的W、S、N的值代入香农公式计算信道容量C。
6、对于离散有记忆信道,计算信道容量会更复杂。
需要考虑信道的记忆特性,通常采用马尔可夫链来描述信道状态的转移概率。
7、构建马尔可夫链的状态转移矩阵,矩阵中的元素表示从一个状态转移到另一个状态的概率。
8、通过求解马尔可夫链的稳态分布,结合输入符号的概率分布,利用信息论中的互信息公式来计算信道容量。
9、在多输入多输出(MIMO) 系统中,信道容量的计算又有不同。
需要考虑多个发射天线和多个接收天线之间的信道矩阵H。
10、利用矩阵H的特征值等信息,根据MIMO信道容量公式C = log₂det(I + ρHH*)计算信道容量,其中ρ是信噪比,I是单位矩阵,H*是H的共轭转置矩阵。
信道容量的计算方法研究
信道容量的计算方法研究
信道容量是指在某个给定的带宽和信噪比条件下,传输信息的最大速率。
信道容量通常用单位时间内传输的比特数(比特每秒)来表示。
计算信道容量的公式为:
C = B × log2(1 + S/N)
其中,C表示信道容量,B表示信道带宽,S表示信号功率,N 表示噪声功率。
此公式在120年前由德国数学家Hartley提出,称为哈特利公式。
它用于描述在理想信道条件下的信息传输限制。
该公式表示,在频带B内、噪声功率为N的情况下,传输速率C理论上最高为
C=B*log2(1+S/N)。
这个公式是通过链路的信道特性分析来得出的,实际链路中应用时需要估计 S/N 的值。
重点是最大值的计算,信道容量很大程度上反映了信道的质量,在无线通信系统中,信道容量的提高是很重要的一个方面,因为它能够提高系统的使用效率和可靠性,从而增加系统的吞吐量和容量。
此外,还可以通过其他信源不同于离散和连续的信源,或者利用其他编码方法和调制技术等等方法,提高信道容量。
实验二---一般信道容量迭代算法.doc
实验二---一般信道容量迭代算法.doc实验二一般信道容量迭代算法1.实验目的掌握一般离散信道的迭代运算方法。
2.实验要求1)理解和掌握信道容量的概念和物理意义2)理解一般离散信道容量的迭代算法3)采用Matlab 编程实现迭代算法4)认真填写试验报告3.算法步骤①初始化信源分布),,,,,(21)0(p p p p P ri =(一般初始化为均匀分布) ,置迭代计数器k=0 ,设信道容量相对误差门限为δ ,δ>0 ,可设-∞=C )0(;②∑=i k i ij k i ij k ji p p p p )()()(? s j r i ,??=??=,1;,,1 ③∑∑∑??=+i k ji j ij k ji j ij k i p p p ??)()()1(ln exp ln exp r i ,,1??= ④??=∑∑+ik ji j ij k p C ?)()1(ln exp ln ⑤如果δ≤-++C C Ck k k )1()()1( ,转向⑦;⑥置迭代序号k k →+1,转向②;⑦输出p k i )1(+和C k )(1+的结果;⑧停止。
4.代码P=input('转移概率矩阵P=')e=input('迭代精度e=')[r,s]=size(P);n=0;C=0;C_k=0;C_k1=0;X=ones(1,r)/r;A=zeros(1,r);B=zeros(r,s);%初始化各变量while(1)n=n+1;for i=1:rfor j=1:sB(i,j)=log(P(i,j)/(X*P(:,j))+eps); if P(i,j)==0B(i,j)=0;elseendendA(1,i)=exp(P(i,:)*B(i,:)');endC_k=log2(X*A');C_k1=log2(max(A));if (abs(C_0-C_1)。
信道容量实验报告
湖南大学信息科学与工程学院实验报告实验名称信道容量的迭代算法课程名称信息论与编码第1页共9页1.实验目的(1)进一步熟悉信道容量的迭代算法; (2)学习如何将复杂的公式转化为程序;(3)掌握C 语言数值计算程序的设计和调试技术。
2、实验方法硬件:pc 机开发平台:visual c++软件 编程语言:c 语言3、实验要求(1)已知:信源符号个数r 、信宿符号个数s 、信道转移概率矩阵P 。
(2)输入:任意的一个信道转移概率矩阵。
信源符号个数、信宿符号个数和每个具体的转移概率在运行时从键盘输入。
(3)输出:最佳信源分布P*,信道容量C 。
4.算法分析1:procedure CHANNEL CAPACITY(r,s,(jip ))2:initialize:信源分布ip =1/r ,相对误差门限σ,C=—∞3:repeat 4:5:6:C2211log [exp(log )]rsji ij r j p φ==∑∑7:until C Cσ∆≤8:output P*=()i rp ,C9:end procedure21211exp(log )exp(log )sji ij j r sjiij r j p pφφ===∑∑∑ip 1i jiri jii p p p p=∑ijφ5.程序调试1、头文件引入出错f:\visualc++\channel\cpp1.cpp(4) : fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory————#include<unistd.h>纠错://#include<unistd.h>f:\visualc++\channel\cpp1.cpp(5) : fatal error C1083: Cannot open include file: 'values.h': No such file or directory————#include<values.h>纠错://#include<values.h>2、变量赋值错误f:\visualc++\channel\cpp1.cpp(17) : error C2065: 'ij' : undeclared identifierf:\visualc++\channel\cpp1.cpp(17) : error C2440: 'initializing' : cannot convert from 'int' to 'float ** ' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast————float **phi_ij=ij=NULL;纠错:float **phi_ij=NULL;3、常量定义错误f:\visualc++\channel\cpp1.cpp(40) : error C2143: syntax error : missing ';' before 'for' ————for(i=0;i<r;i++)phi_ij[i]=(float *)calloc(s,sizeof(float));f:\visualc++\channel\cpp1.cpp(52) : error C2021: expected exponent value, not ' '————if(fabs(validate -1.0)>DELTA)f:\visualc++\channel\Cpp1.cpp(84) : error C2021: expected exponent value, not ' '————if(fabs(p_j)>=DELTA)f:\visualc++\channel\Cpp1.cpp(100) : error C2021: expected exponent value, not ' '————if(fabs(phi_ij[i][j])>=DELTA)f:\visualc++\channel\Cpp1.cpp(116) : error C2021: expected exponent value, not ' ' ————while(fabs(C-C_pre)/C>DELTA);纠错:#define DELTA 0.000001;F:\visualc++\channel\Cpp1.cpp(68) : error C2065: 'MAXFLOAT' : undeclared identifierF:\visualc++\channel\Cpp1.cpp(68) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data————C=-MAXFLOAT;纠错:#define MAXFLOAT 1000000;3、引用中文逗号f:\visualc++\channel\cpp1.cpp(60) : error C2018: unknown character '0xa1'f:\visualc++\channel\cpp1.cpp(60) : error C2018: unknown character '0xb1'f:\visualc++\channel\cpp1.cpp(60) : error C2065: 'Starting' : undeclared identifierf:\visualc++\channel\cpp1.cpp(60) : error C2059: syntax error : '.'f:\visualc++\channel\cpp1.cpp(60) : error C2017: illegal escape sequencef:\visualc++\channel\cpp1.cpp(60) : error C2018: unknown character '0xa1'f:\visualc++\channel\cpp1.cpp(60) : error C2018: unknown character '0xb1'————fprintf(stdout,”Starting..\n”);纠错:fprintf(stdout,"Starting..\n");4、没有进行强制转换F:\visualc++\channel\Cpp1.cpp(65) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data————p_i[i]=1.0/(float)r;纠错:p_i[i]=(float)(1.0/(float)r);F:\visualc++\channel\Cpp1.cpp(101) : warning C4244: '+=' : conversion from 'double' to 'float', possible loss of data————sum[i]+=p_ji[i][j]*log( phi_ij[i][j])/ log(2.0);纠错:sum[i]+=(float)(p_ji[i][j]*log( phi_ij[i][j])/ log(2.0));F:\visualc++\channel\Cpp1.cpp(103) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data————sum[i]=pow(2.0,sum[i]);纠错:sum[i]=(float)(pow(2.0,sum[i]));F:\visualc++\channel\Cpp1.cpp(114) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data————C= log(p_j)/ log(2.0);纠错:C= (float)(log(p_j)/ log(2.0));4、表达式错误F:\visualc++\channel\Cpp1.cpp(86) : error C2065: 'phi_ji' : undeclared identifierF:\visualc++\channel\Cpp1.cpp(86) : error C2109: subscript requires array or pointer typeF:\visualc++\channel\Cpp1.cpp(86) : error C2109: subscript requires array or pointer type ————phi_ij[i][j]=p_i[i]* phi_ji[i][j]/p_j;纠错:phi_ij[i][j]=p_i[i]* p_ji[i][j]/p_j;F:\visualc++\channel\Cpp1.cpp(122) : error C2065: 'fprint' : undeclared identifierF:\visualc++\channel\Cpp1.cpp(122) : error C2018: unknown character '0xa1'F:\visualc++\channel\Cpp1.cpp(122) : error C2018: unknown character '0xb1'F:\visualc++\channel\Cpp1.cpp(122) : error C2065: 'The' : undeclared identifierF:\visualc++\channel\Cpp1.cpp(122) : error C2146: syntax error : missing ')' before identifier 'iteration'F:\visualc++\channel\Cpp1.cpp(122) : error C2017: illegal escape sequenceF:\visualc++\channel\Cpp1.cpp(122) : error C2017: illegal escape sequenceF:\visualc++\channel\Cpp1.cpp(122) : error C2018: unknown character '0xa1'F:\visualc++\channel\Cpp1.cpp(122) : error C2018: unknown character '0xb1'————fprint(stdout,”The iteration number is %d.\n\n”,k);纠错:fprintf(stdout,"The iteration number is %d.\n\n",k);F:\visualc++\channel\Cpp1.cpp(145) : error C2143: syntax error : missing ')' before ';' ————free((p_i);纠错:free(p_i);5、没有返回值F:\visualc++\channel\Cpp1.cpp(149) : warning C4508: 'main' : function should return a value; 'void' return type assumed、纠错:return 0;6.改进程序/*引入头文件*/#include<stdio.h>#include<math.h>#include<stdlib.h>/*定义常量*/#define DELTA 0.0000001//DELTA为相对误差门限#define MAXFLOAT 1000000;//MAXFLOAT为初始化信道容量值int main( void){/*定义全局变量*//*register允许直接从寄存器中读取变量,提高速率*/register int i,j;//i、j为整型变量register int k;//信道容量迭代计算次数int r,s;//r为信源符号个数,s为新宿符号个数float *p_i=NULL;//r个信源符号发生的概率float **p_ji=NULL;//信源到新宿的信道转移概率矩阵Pfloat **phi_ij=NULL;float C,C_pre,validate;//C为信道容量,C_pre为信道最大容量,validate为判定输入转移概率矩阵是否合法float * sum=NULL;//信源符号所带的全部信息量float p_j;//条件概率/*输入信源符号和新宿符号个数*/printf("请输入信源符号个数r、信宿符号个数s...\n");printf("+++++注意!!!r必须大于等于s!!+++++\n");fscanf(stdin,"%d",&r);fscanf(stdin,"%d",&s);/*为 p_i,p_ji 和 phi_ij 分配内存空间*/p_i=(float *)calloc(r,sizeof(float));p_ji=(float **)calloc(r,sizeof(float));/*为每个p_ji分配大小为s的内存空间*/for(i=0;i<r;i++)p_ji[i]=(float *)calloc(s,sizeof(float));phi_ij=(float **)calloc(r,sizeof(float*));/*输入转移概率矩阵*/for(i=0;i<r;i++)/*为每个phi_ij分配大小为s的内存空间*/phi_ij[i]=(float *)calloc(s,sizeof(float));printf("信道转移概率矩阵P...\n");for(i=0;i<r;i++)for(j=0;j<s;j++)fscanf(stdin,"%f",&p_ji[i][j]);/*判定输入的转移概率矩阵是否正确*/for(i=0;i<r;i++){validate=0.0;for(j=0;j<s;j++){validate +=p_ji[i][j];}if((validate-1.0)>=0)//如果转移概率矩阵的概率和大于1,输入数据不合法{fprintf(stdout,"invalid input data.\n");exit(-1);}}/*显示开始计算..*/fprintf(stdout,"Starting..\n");/*初始化 p_i 和 phi_ij*/for(i=0;i<r;i++){/* p_i为等概率,即概率为1/r*/p_i[i]=(float)(1.0/(float)r);}/*初始化信道容量c,迭代次数k和临时变量variable*/C=-MAXFLOAT;k=0;/* 为sum分配大小为r的内存空间*/sum=(float *)calloc(r,sizeof(float));/*开始迭代计算*/do{k++;//每进行一次迭代,迭代次数k加1/* 计算phi_ij(k)*/for(j=0;j<s;j++){p_j=0.0;for(i=0;i<r;i++)p_j+=p_i[i]*p_ji[i][j];if(fabs(p_j)>=DELTA)for(i=0;i<r;i++)phi_ij[i][j]=p_i[i]* p_ji[i][j]/p_j;elsefor(i=0;i<r;i++)phi_ij[i][j]=0.0;}/*计算p_i(k+1)*/p_j=0.0;for(i=0;i<r;i++){sum[i]=0.0;for(j=0;j<s;j++){/*相对误差门限为0*/if(fabs(phi_ij[i][j])>=DELTA)sum[i]+=(float)(p_ji[i][j]*log( phi_ij[i][j])/ log(2.0)); }sum[i]=(float)(pow(2.0,sum[i]));p_j+=sum[i];}for(i=0;i<r;i++){p_i[i]=sum[i]/p_j;}C_pre=C;C= (float)(log(2.0)/log(p_j) );}while(fabs(C-C_pre)/C>DELTA);free(sum);sum=NULL;/*显示结果*/fprintf(stdout,"The iteration number is %d.\n\n",k);//迭代次数fprintf(stdout,"The capacity of the channel is %.6f bit/symbol:\n\n",C);//信道容量fprintf(stdout,"The best input probability distribution is :\n");//最佳信源分布 for(i=0;i<r;i++)fprintf(stdout,"%.6f\n",p_i[i]);fprintf(stdout,"\n");/* 释放指针空间*/for(i=s-1;i>=0;i--){free(phi_ij[i]);phi_ij[i]=NULL;}free(phi_ij);phi_ij=NULL;for(i=r-1;i>=0;i--){free(p_ji[i]);p_ji[i]=NULL;}free(p_ji);p_ji=NULL;free(p_i);p_i=NULL;exit(0);return 0;}7.实验结果八、实验结论信道容量是指信道能无错误传送的最大信息率。
实验二 离散信道容量
实验二 离散信道容量一、实验目的1. 掌握离散信道容量的计算。
2. 理解离散信道容量的物理意义。
3. 练习应用matlab 软件进行二元对称离散信道容量的函数曲线的绘制,并从曲线上理解其物理意义。
二、实验原理信道是传送信息的载体—信号所通过的通道。
信息是抽象的,而信道则是具体的。
比如二人对话,二人间的空气就是信道;打电话,电话线就是信道;看电视,听收音机,收、发间的空间就是信道。
研究信道的目的:在通信系统中研究信道,主要是为了描述、度量、分析不同类型信道,计算其容量,即极限传输能力,并分析其特性。
二元对称信道BSC (Binary Symmetric Channel )二进制离散信道模型有一个允许输入值的集合X={0,1}和可能输出值的集合Y={0,1},以及一组表示输入和输出关系的条件概率(转移概率)组成。
如果信道噪声和其他干扰导致传输的二进序列发生统计独立的差错,且条件概率对称,即(0/1)(1/0)(1/1)(0/0)1p Y X p Y X p p Y X p Y X p ======⎧⎨======-⎩这种对称的二进制输入、二进制输出信道称做二元对称信道(或二进制对称信道,简称BSC 信道),如下图所示:信道容量公式:{()}max p x C I(X,Y)=三、实验内容BSC信道是DMC信道对称信道的特例,对于转移概率为P(0/1)=P(1/0)=p,P(0/0)=P(1/01)=1-p,求出其信道容量公式,并在matlab上绘制信道容量C与p 的曲线。
根据曲线说明其物理意义。
四、实验要求1.提前预习实验,认真阅读实验原理以及相应的参考书。
2.认真高效的完成实验,实验中服从实验室管理人员以及实验指导老师的管理。
3.认真填写实验报告。
信道容量迭代计算实验报告
信道容量迭代计算实验报告王升10271051信科1002信道容量迭代计算实验报告一、实验目的:了解信道容量的定义和计算方法,能编写出正确的程序进行迭代计算得出信道容量。
二、实验要求:1)输入:输入信源个数、信宿个数和信道容量的精度,程序能任意生成随机的信道转移概率矩阵。
2)输出:输出最佳信源分布和信道容量。
三、实验环境:Matlab四、实验原理:五、源程序代码:clear;r=input('输入信源个数:');s=input('输入信宿个数:');deta=input('输入信道容量的精度:');Q=rand(r,s); %创建m*n随机分布矩阵A=sum(Q,2);B=repmat(A,1,s);disp('信源转移概率矩阵:'),p=Q./B %信源转移概率矩阵i=1:1:r;q(i)=1/r;disp('原始信源分布:'),qc=-10e-8;C=repmat(q',1,s);for k=1:1:100000m=p.*C; %后验概率的分子部分a=sum(m); %后验概率的分母部分su1=repmat(a,r,1);t=m./su1; %后验概率矩阵D=exp(sum(p.*log(t),2)); %信源分布的分子部分su2=sum(D); %信源分布的分母部分q=D/su2; %信源分布C=repmat(q,1,s);c(k+1)=log(sum(exp(sum(p.*log(t),2))))/log(2);kk=abs(c(k+1)-c(k))/c(k+1);if(kk<=0.000001)break;endenddisp('最大信道容量时的信源分布:q='),disp(q') disp('最大信道容量:c='),disp(c(k+1))六、实验结果:。
信道容量的计算公式
信道容量的计算公式
信道容量,即为一个通信系统情况下,传输单位时间所能发出信号的承载最大
量大小。
它是由通道的有效利用率、带宽以及传输信噪比(SNR)等因素共同影响
的结果,可用下面的公式来表示:
C=B \cdot log_2(1+S/N)
其中C为信道容量,单位为bps,B为信道带宽,单位为Hz,S/N为信号和噪
声之间的功率比,它表示通过此信道可以得到的信噪比,即任何一个噪声功率均等或小于其功率水平的情况都可以忽略不计。
信道容量是在可接受的噪声环境下,最大化信号的传输率的一项指标。
它的确
定性取决于信道在被激发的情况下具有的带宽和信噪比,因此,原则上讲,若把带宽B和S/N调大,信道容量也会有所增加,而若把带宽B和S/N调小,则信道容量会减少,即信道容量与带宽B、S/N成正比。
信道容量可用来衡量音频、视频等数据流在某特定带宽限制和噪声环境下传输
的能力,从而能够定制合适的通信系统结构。
因此,若想要得到高质量的通信体验,就必须了解其信道容量的大小以及构建可靠、高效的通信系统。
信道容量的一般计算方法
信道容量的一般计算方法
信道容量是指在给定带宽条件下,信道可以传输的最大数据速率。
信道容量的计算是通过信道的带宽和信噪比之间的关系来确定的。
Step 1: 确定信道带宽(B)
信道带宽是指信道能够传输信号的频率范围,通常以赫兹(Hz)为单位。
确定信道带宽是计算信道容量的第一步。
Step 2: 确定信噪比(SNR)
信噪比是指信号和噪声的比例,以分贝(dB)为单位。
信噪比越高,信道传输的可靠性越高。
信噪比的计算需要根据具体信道的特性和环境条件进行。
Step 3: 计算信道的最大传输速率(C)
根据香农定理(Shannon's theorem),信道的最大传输速率(C)可以通过以下公式计算:
C = B * log2(1 + SNR)
其中,B为信道的带宽,SNR为信噪比。
这个公式表明,信道容量与信道带宽和信噪比的对数成正比。
Step 4: 优化信噪比以提高信道容量
为了提高信道容量,可以采取一些措施来优化信噪比,例如增加发射功率、减少噪声源、改善接收设备等。
Step 5: 考虑误码率和纠错编码
实际的信道容量还需要考虑误码率和纠错编码。
误码率是指在信道传
输过程中出现错误比特的概率,而纠错编码是一种冗余编码技术,可以在
接收端纠正部分错误。
综上所述,信道容量的计算方法主要包括确定信道带宽、信噪比和使
用香农定理计算最大传输速率。
通过优化信噪比和考虑误码率和纠错编码,可以进一步提高信道容量。
这些方法可以用于计算各种无线通信系统、光
纤通信系统等的信道容量,并对系统性能进行评估和优化。
大学信息论_信道容量的迭代算法
陕西科技大学实验报告 班级: XXXX 学号:XXXXXXXXX 姓名:XXX 实验组别: 实验日期: 报告日期: 成绩: 报告内容:(目的和要求、原理、步骤、数据、计算、小结等)实验名称:信道容量的迭代算法一、实验目的(1) 进一步熟悉信道容量的迭代算法。
(2) 学习如何将复杂的公式转化为程序。
(3) 掌握高级语言数值计算程序的设计和调试技术。
二、实验要求(1)已知:信源符号个数r 、信宿符号个数s 、信道转移概率矩阵P 。
(2)输入:任意的一个信道转移概率矩阵。
信源符号个数、信宿符号个数和每个具体的转移概率在运行时从键盘输入。
(3)输出:信道容量C 。
三、实验原理(流程图):1: procedure ChannelCapacity(r, s, (ji p ))2: initialize: 信源分布1i p r =,相对误差门限δ,C =-∞ 3: repeat4: 1i jiij r ijii p p p p φ=←∑ 5: 111exp log exp log s ji ij j i r s ji ij i j p p p φφ===⎛⎫ ⎪⎝⎭←⎛⎫ ⎪⎝⎭∑∑∑ 6: 11log exp log r s ji ij i j C p φ==⎡⎤⎛⎫←⎢⎥ ⎪⎢⎥⎝⎭⎣⎦∑∑ 7: until C Cδ∆≤ 8: output C9: end procedure四、实验数据(源代码):#include<stdio.h>#include<math.h>#define MAX 100double Calculate_a(int k,double pa[]); double Calculate_C1(double pa[],double a[]); double Calculate_C2(double a[]);int r,s;double pba[3][3];void main(){int i,j;double C1,C2,E;double a[MAX],pa[3];E=0.000001;r=3;s=3;pa[0]=0.2;pa[1]=0.3;pa[2]=0.5;pba[3][3]={0.5,0.33333333,0.16666666,0.16666666,0.5,0.333333333,0.333 33333,0.16666666,0.5};do{for(i=0;i<r;i++)a[i]=Calculate_a(i,pa);C1=Calculate_C1(pa,a);C2=Calculate_C2(a);if(C2-C1>=E){double sum=0;for(i=0;i<r;i++)sum+=pa[i]*a[i];for(i=0;i<r;i++)pa[i]=pa[i]*a[i]/sum;}else{printf("最佳信源概率:\n");for(i=0;i<r;i++)printf(" %lf \n",pa[i]);}}while(C2-C1>=E);printf("信道容量为:%lf\n",C1/log(2));}double Calculate_a(int k,double pa[]){int i,j;double temp,sum2=0;for(j=0;j<s;j++){double sum1=0;for(i=0;i<r;i++){sum1+=pa[i]*pba[i][j];}temp=pba[k][j]/sum1;temp=log(temp);sum2+=pba[k][j]*temp;}return exp(sum2);}double Calculate_C1(double pa[],double a[]){int i;double sum=0;for(i=0;i<r;i++)sum+=pa[i]*a[i];return log(sum);}double Calculate_C2(double a[]){int i;double max=a[0];for(i=0;i<r;i++)if(max<a[i]) max=a[i];return log(max);}五、程序运行结果:最佳信源概率:0.3333300.3333340.333337信道容量为:0.125815Press any key to continue六、实验小结:通过本次实验,我了解了信道容量的迭代算法,在理论的掌握基础上,更进一步的实现了程序的运行算法,同时又加深了编程语言上的一些不足和毛病.。
信道容量公式
信道容量公式(完整)信道容量的计算编辑整理:尊敬的读者朋友们:§4.2信道容量的计算这里,我们介绍一般离散信道的信道容量计算方法,根据信道容量的定义,就是在固定信道的条件下,对所有可能的输入概率分布求平均互信息的极大值。
前面已知是输入概率分布的上凸函数,所以极大值一定存在。
而是个变量的多元函数。
并且满足。
所以可用拉格朗日乘子法来计算这个条件极值。
引入一个函数:解方程组。
(4.2。
1)可以先解出达到极值的概率分布和拉格朗日乘子的值,然后在解出信道容量.因为而,所以解(4.2。
1)式有(对都成立)又因为所以(4.2.1)式方程组可以转化为假设使得平均互信息达到极值的输入概率分布这样有从而上式左边即为信道容量,得现在令式中,是输出端接收到Y后获得关于的信息量,即是信源符号对输出端Y平均提供的互信息。
一般来讲,值与有关。
根据(4。
2。
2)式和(4.2.3)式。
所以对于一般离散信道有如下定理。
定理4.2.1一般离散信道的平均互信息达到极大值(即等于信道容量)的充要条件是输入概率分布满足对所有的对所有的这时C就是所求的信道容量。
对于离散信道来说,其实信道容量还有一个解法:迭代解法.定理4.2.2设信道的向前转移概率矩阵为,是任给的输入字母的一个初始概率分布,其所有分量.按照下式不断地对概率分布进行迭代,更新:其中由此所得的序列收敛于信道容量C。
对于一些特殊的离散信道,我们有方便的方法计算其信道容量。
定义4.2。
1设X和Y分别表示输入信源与输出信源,则我们称为损失熵,为信道噪声熵。
如果信道的损失熵,则次信道容量为(bit/符号)这里输入信源X的信源符号个数为。
如果信道的噪声熵,则此信道容量为(bit/符号)这里输出信源符Y的符号个数为s.定义4。
2。
2一个信道Q称为对称离散信道,如果它满足下面的性质:(1)信道Q矩阵中每一行是另一行的置换;(2)每一列式另一列的置换.例如,信道矩阵和满足对称性,所以对应信道是对称离散信道。
信息论实验报告(实验二、离散信道容量的计算)
学生实验报告
院别电子信息学院课程名称信息论语编码实验
班级实验名称实验二、离散信道容量的计算姓名实验时间
学号指导教师
成绩
报告内容
一、实验目的和任务
1、理解和掌握信道容量的概念和物理意义;
2、了解信道容量的计算方法
3、采用计算机编程实现(MATLAB)
二、实验原理介绍
三、实验设备介绍
1、计算机
2、编程软件MATLAB6.5以上
四、实验内容和步骤
分别求出如下信道的信道容量
1、信道转移概率矩阵为
1/31/31/61/61/61/61/31/3P ⎡⎤=⎢⎥⎣⎦
2、信道转移概率矩阵为:
1/31/31/61/61/61/31/61/3P ⎡⎤=⎢⎥⎣⎦
1、
面出程序设计的流程图。
2、
写出在调试过程中出现的问题。
3、 对实验的结果进行分析。
五、实验数据记录
六、实验结论与心得
通过本次实验,加强了对matlab 程序的学习,进一步提高了我的编程能力。
信道容量的数值算法
信道容量的数值算法信道容量的数值算法1. 原理1.1. 问题在给定信道传输矩阵的情形下,求出信道容量和对应的最佳信源分布2. 算法假设信源符号个数为r ,信宿符号个数为s ,信道转移矩阵为P ,信源的概率分布为X ,信道容量为C2.1. 计算步骤step1 初始化信源分布rX k i 1=,其中,r i ≤≤1,迭代次数1=k step2 计算信源分布∑==r i ij k i ijk i k ij P XP X 1φ ∑∑∑===+=r i s j k ij ijs j kij ij k i P P X 1111)log exp()log exp(φφ 其中r i ≤≤1,s j ≤≤1step3 计算信道容量])l o g e x p (l o g [111∑∑==+=r i sj k ij ij k P Cφstep4 判断终止条件ε>-=++11||k k k CC C err 是否满足,若条件不满足则1+=k k 并继续执行step2,若条件满足则终止计算,此时的k i X 为最佳信源分布,k C 为信道容量3. 数值计算1) 对称信道) channel symmetric (的传输矩阵如下=3.05.02.02.03.05.05.02.03.0P 由对称信道的信道容量计算公式)(||log r H C -=ψ因而信道容量的理论值为);(m a x Y X I C =0.2)0.3, H (0.5,l o g 3-= 0.2l o g 0.0.3l o g 0.30.5l o g 0.5l o g 3+++= b i t /s y mb 0995.0= 用迭代法经2次迭代计算出的信道容量为bit/symbol0.099487'=C2) 弱对称信道) channel symmetric weakly (的传输矩阵如下=612131216131P 信道容量的理论值为);(max Y X I C =1/2)1/6, 1/3, H(log3-= 21l o g 2161l o g 6131l o g 31l o g 3+++= b i t /s y m b1258.0= 用迭代法经2次迭代计算出的信道容量为bit/symbol0.125815'=C3) 任意信道,信道传输矩阵如下=8.015.005.005.016.079.0P 用迭代法经4次迭代计算出的信道容量为bit/symbol0.571215 '=C 4) (assignment 5,problem 2 ,,Unused symbol ),信道的传输矩阵为=3231031313103132P 假定X 的取值为i a )31(≤≤i ,Y 的取值为j b )31(≤≤j 由1a X =和3a X =时信道的对称性以及2a X =时的不可靠传输,可以假定最佳输入概率分布为21)()(31====a X P a X P0)(2==a X P这时,3/1)()()(321======b Y P b Y P b Y P由信道容量定理,∑=-==j ij j ij i P b Y P P Y a X I ))(log();(可以算出32)1log(31)21log(32);(1=--==Y a X I 320)1log(31)1log(31)1log(31);(2<=---==Y a X I 32)1log(31)21log(32);(3=--==Y a X I 因此假定的输入分布确实达到了最佳输入分布,这时的信道容量为bit/symbol 32=C 用迭代法经33次迭代计算出的信道容量为bit/symbol 0.666667 '=C4. 实验代码% 迭代法计算信道容量% P 是信道传输矩阵P=[0.3 0.2 0.50.5 0.3 0.20.2 0.5 0.3];% P=[1/3 1/6 1/2% 1/3 1/2 1/6];P(find(P==0))=10^(-31); %修改传输矩阵中的0元素,便于程序的执行[r,s]=size(P);X0=1/r*ones(1,r); % 初始信源分布phi=zeros(r,s);temp=zeros(1,r);for i=1:rfor j=1:sphi(i,j)=X0(i)*P(i,j)/(X0(1:r)*P(1:r,j)); endendfor i=1:rtemp(i)=exp(log(phi(i,1:s))*P(i,1:s)'); endX1(1:r)=temp(1:r)/sum(temp);C1=log2(sum(temp)); % 信道容量k=1;err=1000;while(err>0.0000001)for i=1:rfor j=1:sphi(i,j)=X1(i)*P(i,j)/(X1(1:r)*P(1:r,j)); endendfor i=1:rtemp(i)=exp(log(phi(i,1:s))*P(i,1:s)'); endX0(1:r)=temp(1:r)/sum(temp);C0=log2(sum(temp)); % 信道容量err=abs(C0-C1)/C1;C1=C0;X1=X0;k=k+1;endfprintf('信道矩阵:\n');disp(P);fprintf('信道容量C = %f bit/symbol\n',C1); fprintf('迭代次数n = %d\n',k);。
信道容量计算
实验二 信道容量计算实验目的:了解对称信道与非对称信道容量的计算方法实验原理:信道容量是信息传输率的极限,当信息传输率小于信道容量时,通过信道编码,能够实现几乎无失真的数据传输;当数据分布满足最佳分布时,实现信源与信道的匹配,使得信息传输率能够达到信道容量。
本实验利用信道容量的算法,使用计算机完成信道容量的计算。
实验内容:假设离散无记忆二元信道如图所示,利用C 语言编程,完成下列信道容量的计算2e1. 令120.1e e p p ==和120.01e e p p ==,分别计算该对称信道的信道容量和最佳分布; 2. 令10.15e p =,20.1e p =和10.075e p =20.01e p =,分别计算该信道的信道容量和最佳分布;3、实验报告:给出源代码,写出信道对应的条件转移矩阵,计算出相应结果。
并定性讨论信道容量与信道参数之间的关系。
答: 实验思路:先把信道容量的计算方法写出来:再根据信道的转移矩阵: 再假设信道输入符号的概率分别为, , 求出pb1和pb2。
最后用循环求出结果。
12()2211m ax (,)log (,,...,)(|)(;)()(|)()i s p a j i i j i i j j C I X Y s H p p p p b a I X Y p a p b a lbp b ====-==∑∑111221pe pe pe pe --⎡⎤=⎢⎥⎣⎦P ()i p a 1()i p a -1、2、3、对应的条件矩阵:总结:对于给定信道,前向概率p(x)是一定的,所以信道容量就是在信道前向概率一定的情况下,寻找某种先验概率分布,从而使得平均互信息量最大。
上述定理只是给出了达到信道容量时,信道输入符号分布的充要条件;不能够给出信道输入的最佳概率分布,也没有给出信道容量的计算公式;达到信道容量的最佳分布一般不是唯一的,只要输入分布满足概率的约束条件,并且使得达到最大值即可。
信道容量
3. 信道容量信道容量指信道所能承受的最大数据传输速率,单位为bps或b/s。
信道容量受信道的带宽限制,信道带宽越宽,一定时间内信道上传输的信息就越多。
带宽指物理信道的频带宽度,即信道允许的最高频率和最低频率之差。
按信道频率范围的不同,通常可将信道分为窄带信道(0~300Hz)、音频信道(300~3400Hz)和宽带信道(3400Hz以上)三类。
信道容量有两种衡量的方法:奈奎斯特公式和香农公式。
(1) 奈奎斯特公式(Nyquist)对有限带宽无噪声信道,信道容量可用如下公式计算:其中,C —最大数据速率(信道容量)H —信道的带宽(Hz)N —一个脉冲所表示的有效状态数,即调制电平数例如,若某信道带宽为4kHz,任何时刻信号可取0、1、2和3四种电平之一,则信道容量为:奈奎斯特公式表明,对某一有限带宽无噪声信道,带宽固定,则调制速率也固定。
通过提高信号能表示的不同的状态数,可提高信道容量。
(2) 香农公式(Shannon)对有限带宽随机噪声(服从高斯分布)信道,信道容量可用如下公式计算:其中,H —信道的带宽(Hz)S —信道内信号的功率N —信道内服从高斯分布的噪声的功率S/N是信噪比,通常用表示,单位dB(分贝)例如,计算信噪比为30dB,带宽为4kHz的信道最大容量:由,得出S/N=1000 则,C=4k×log2(1+1000)≈40kbps表示无论采用何种调制技术,信噪比为30dB,带宽为4kHz的信道最大的数据速率约为40kbps。
4. 三个指标之间的关系从上面的分析可以看出,数据速率用于衡量信道传输数据的快慢,是信道的实际数据传输速率;信道容量用于衡量信道传输数据的能力,是信道的最大数据传输速率;而误码率用于衡量信道传输数据的可靠性。
信道带宽与信道容量的区别是什么?增加带宽是否一定能增加信道容量?带宽:信道可以不失真地传输信号的频率范围。
为不同应用而设计的传输媒体具有不同的信道质量,所支持的带宽有所不同。
正式实验报告二—信道容量计算
一、实验目的1.掌握离散信道的信道容量的计算方法;2.理解不同类型信道的不同特点与不同的计算方法;二、实验内容1.进一步熟悉一般离散信道的信道容量计算方法;2.进一步复习巩信道性质与实际应用;3.学习如何将复杂的公式转化为程序。
三、实验仪器、设备1、计算机-系统最低配置256M内存、P4 CPU;2、MATLAB编程软件。
四、实现原理信道容量是信息传输率的极限,当信息传输率小于信道容量时,通过信道编码,能够实现几乎无失真的数据传输;当数据分布满足最佳分布时,实现信源与信道的匹配,使得信息传输率能够达到信道容量。
本实验利用信道容量的算法,使用计算机完成信道容量的计算。
实验采用迭代算法计算信道容量,即:设DMC的转移概率pyx(i,j),p(i)是任意给定的一组初始给定输入分布,开始为等概率分布,以后逐次迭代更新p(i)的取值。
其所有分量P (i)均不为0。
按照如下方法进行操作:具体方法:1、计算q(j)=ijipyxip),(*)(,pyx(i,j)为信道转移概率2、计算a(i)先算中间变量d(i)=∑jjqjipyxjipyx)(/),(log(*),(然后,a(i)=exp(d(i))3、计算中间变量U=∑iip ia)(*)(4、计算IL=log2(u)5、计算IU=log2(max(a(i))6、当IU-IL>ε(ε为设定的迭代精度)时,进入以下循环,否则输出迭代次数n,信道容量C=IU计算结果,最佳分布p(i)。
①重新计算p(i)=p(i)*a(i)/U②计算q(j),方法同1③计算a(i),方法同2④计算中间变量U=∑iip ia)(*)(⑤计算IL=log2(u)⑥计算IU=log2(max(a(i))⑦计次变量n=n+1返回6判断循环条件是否满足。
五、实验步骤1、计算非对称信道的信道容量运行程序待程序运行完毕,记录迭代次数n和信道容量计算结果C。
2、计算对称信道的信道容量运行程序待程序运行完毕,记录迭代次数n和信道容量计算结果C。
信道容量的计算
信道容量的计算实验一:信道容量的计算一、实验目的(1)进一步熟悉信道容量的迭代算法。
(2)学习如何将复杂的公式转化为程序。
(3)掌握高级语言数值计算程序的设计和调试技术。
二、实验原理:迭代算法计算信道容量的原理如图所示:三、实验步骤11. 初始化信源分布:pi=,循环变量k=1,门限△,C(0)=-∞; r(k)2. φ(k)pjiij=pi∑rp(k)ipjii=1sexp[k)jilogφ(ij]3. p(k+1)∑pi=j=1∑rsexp[∑pk)jilogφ(ij]i=1j=1)rs4. C(k+1=log[∑exp(∑p(k)jilogφij)]i=1j=1+1)5. 若C(k-C(k)C(k+1)>∆,则k=k+1,转第2步6. 输出P*=(P(k+1)i)k+1)r和C(,终止。
7. 。
分别对两个矩阵⎡⎢0.690.260.05⎤⎡⎣0.05 0.25 0.7⎥⎦⎢0.690.26⎤⎣0.05 0.7⎥⎦四、实验程序clc;clear all;N = input('输入信源符号X的个数N=');M = input('输出信源符号Y的个数M=');p_yx=zeros(N,M); %程序设计需要信道矩阵初始化为零 fprintf('输入信道矩阵概率\n')for i=1:Nfor j=1:Mp_yx(i,j)=input('p_yx=');%输入信道矩阵概率 if p_yx(i)error('不符合概率分布')endendendfor i=1:N %各行概率累加求和s(i)=0;for j=1:Ms(i)=s(i)+p_yx(i,j);endendfor i=1:N %判断是否符合概率分布if (s(i)=1.000001) 进行计算比较结果error('不符合概率分布')endendb=input('输入迭代精度:');%输入迭代精度for i=1:Np(i)=1.0/N; %取初始概率为均匀分布endfor j=1:M %计算q(j)q(j)=0;for i=1:Nq(j)=q(j)+p(i)*p_yx(i,j);endendfor i=1:N %计算a(i)d(i)=0;for j=1:Mif(p_yx(i,j)==0)d(i)=d(i)+0;elsed(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j)); endenda(i)=exp(d(i));endu=0;for i=1:N %计算uu=u+p(i)*a(i);endIL=log2(u); %计算ILIU=log2(max(a));%计算IUn=1;while((IU-IL)>=b) %迭代计算for i=1:Np(i)=p(i)*a(i)/u; %重新赋值p(i)endfor j=1:M %计算q(j)q(j)=0;for i=1:Nq(j)=q(j)+p(i)*p_yx(i,j);endendfor i=1:N %计算a(i)d(i)=0;for j=1:Mif(p_yx(i,j)==0)d(i)=d(i)+0;elsed(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j)); endenda(i)=exp(d(i));endu=0;for i=1:N %计算uu=u+p(i)*a(i);endIL=log2(u); %计算ILIU=log2(max(a));%计算IUn=n+1;endfprintf('信道矩阵为:\n');disp(p_yx);fprintf('迭代次数n=%d\n',n);fprintf('信道容量C=%f比特/符号',IL);例一的运行结果:输入信源符号X的个数N=2输出信源符号Y的个数M=2五、实验结果对矩阵⎢⎡0.690.260.05⎤⎥进行运算后结果为: 0.050.70.25⎣⎦⎡0.690.26⎤而对矩阵⎢⎥运算发生错误0.050.7⎣⎦六、分析讨论利用迭代算法求信道容量试验中,我们可以看出,当信道矩阵符合概率分布,且其小数表示精度较高时,在判定门限合适的情况下,其计算的信道容量比较符合实际值;当其信道矩阵不符合概率分布,程序报错。
MIMO信道容量计算
实验一: MIMO信道容量计算实验学时:3实验类型:(演示、验证、综合、设计、√研究)实验要求:(√必修、选修)一、实验目的通过本实验的学习,理解和掌握信道容量的概念和物理意义;了解多天线系统信道容量的计算方法;采用计算机编程实现经典的注水算法。
二、实验内容MIMO信道容量;注水算法原理;采用计算机编程实现注水算法。
三、实验组织运行要求以学生自主训练为主的开放模式组织教学四、实验条件(1)微机(2)MATLAB编程工具五、实验原理、方法和手段MIMO(MIMO,Multiple Input Multiple Output)技术利用多根天线实现多发多收,充分利用了空间资源,在有限的频谱资源上可以实现高速率和大容量,已成为4G通信系统以及未来无线通信系统的关键技术之一。
图1平坦衰弱MIMO信道模型1.MIMO信道模型MIMO指多输入多输出系统,当发送信号所占用的带宽足够小的时候,信道可以被认为是平坦的,即不考虑频率选择性衰落。
平坦衰弱的MIMO信道可以用一个的复数矩阵描述:(1)其中为发送端天线数,为接收端天线数,的元素表示从第根发射天线到第根接收天线之间的空间信道衰落系数。
窄带MIMO信道模型(如图1所示)可以描述为:(2)其中,为发送信号;为接收信号;为加性高斯白噪声。
2.MIMO信道容量假设服从均值为0,协方差为单位阵的复高斯分布。
根据信道容量的定义,可以证明当服从高斯分布时,达到MIMO信道容量。
令的协方差矩阵为,则MIMO信道容量可表示为:(3)其中上标‘H’表示复共轭,为单位阵,det表示取行列式。
表示单位带宽下的MIMO信道传输速率,单位为Nat/sec。
发射机的传输功率可以表示为:其中,表示向量的模,Tr表示取矩阵的迹,E表示求期望。
假设发射机的最大传输功率为,则功率约束下的MIMO信道容量计算问题可以描述为:(4)即在功率约束下找到的最佳分布使得信道容量最大。
此处表示为半正定矩阵。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的
1.掌握离散信道的信道容量的计算方法;
2.理解不同类型信道的不同特点与不同的计算方法;
二、实验内容
1.进一步熟悉一般离散信道的信道容量计算方法;
2.进一步复习巩信道性质与实际应用;
3.学习如何将复杂的公式转化为程序。
三、实验仪器、设备
1、计算机-系统最低配置256M内存、P4 CPU;
2、MATLAB编程软件。
四、实现原理
信道容量是信息传输率的极限,当信息传输率小于信道容量时,通过信道编码,能够实现几乎无失真的数据传输;当数据分布满足最佳分布时,实现信源与信道的匹配,使得信息传输率能够达到信道容量。
本实验利用信道容量的算法,使用计算机完成信道容量的计算。
实验采用迭代算法计算信道容量,即:设DMC的转移概率pyx(i,j),p(i)是任意给定的一组初始给定输入分布,开始为等概率分布,以后逐次迭代更新p(i)的取值。
其所有分量P (i)均不为0。
按照如下方法进行操作:
具体方法:
1、计算q(j)=
i
j
i
pyx
i
p)
,(
*)(,pyx(i,j)为信道转移概率
2、计算a(i)
先算中间变量d(i)=∑
j
j
q
j
i
pyx
j
i
pyx)
(
/)
,(
log(
*)
,(
然后,a(i)=exp(d(i))
3、计算中间变量U=∑
i
i
p i
a)(
*)(
4、计算IL=log2(u)
5、计算IU=log2(max(a(i))
6、当IU-IL>ε(ε为设定的迭代精度)时,进入以下循环,否则输出迭代次数n,信道容量C=IU计算结果,最佳分布p(i)。
①重新计算p(i)=p(i)*a(i)/U
②计算q(j),方法同1
③计算a(i),方法同2
④计算中间变量U=∑
i
i
p i
a)(
*)(
⑤计算IL=log2(u)
⑥计算IU=log2(max(a(i))
⑦计次变量n=n+1
返回6判断循环条件是否满足。
五、实验步骤
1、计算非对称信道的信道容量
运行程序
待程序运行完毕,记录迭代次数n和信道容量计算结果C。
2、计算对称信道的信道容量
运行程序
待程序运行完毕,记录迭代次数n和信道容量计算结果C。
六、实验报告要求
1、根据格式要求撰写实验报告;
2、附录完整的程序代码;
3、总结实验心得。
七、思考题
1、考虑当信道转移矩阵为非方阵时,影响信道容量的因素有那些?
2、迭代精度和迭代次数的关系?。