实验报告-3-信道容量
- 格式:doc
- 大小:55.50 KB
- 文档页数:5
信道容量是信道的一个参数,反映了信道所能传输的最大信息量,其大小与信源无关。
对不同的输入概率分布,互信息一定存在最大值。
我们将这个最大值定义为信道的容量。
一但转移概率矩阵确定以后,信道容量也完全确定了。
尽管信道容量的定义涉及到输入概率分布,但信道容量的数值与输入概率分布无关。
我们将不同的输入概率分布称为试验信源,对不同的试验信源,互信息也不同。
其中必有一个试验信源使互信息达到最大。
这个最大值就是信道容量。
信道容量有时也表示为单位时间内可传输的二进制位的位数(称信道的数据传输速率,位速率),以位/秒(b/s)形式予以表示,简记为bps。
通信的目的是为了获得信息,为度量信息的多少(信息量),我们用到了熵这个概念。
在信号通过信道传输的过程中,我们涉及到了两个熵,发射端处信源熵——即发端信源的不确定度,接收端处在接收信号条件下的发端信源熵——即在接收信号条件下发端信源的不确定度。
接收到了信号,不确定度小了,我们也就在一定程度上消除了发端信源的不确定性,也就是在一定程度上获得了发端信源的信息,这部分信息的获取是通过信道传输信号带来的。
如果在通信的过程中熵不能够减小(不确定度减小)的话,也就没有通信的必要了。
最理想的情况就是在接收信号条件下信源熵变为0(不确定度完全消失),这时,发端信息完全得到。
通信信道,发端X,收端Y。
从信息传输的角度看,通过信道传输了I(X;Y)=H(X)-H(X|Y) ,( 接收Y前后对于X的不确定度的变化)。
I该值与两个概率有关,p(x),p(y|x),特定信道转移概率一定,那么在所有p(x) 分布中,max I(X;Y)就是该信道的信道容量C(互信息的上凸性)。
入与输出的互信息量的最大值,这一最大取值由输入信号的概率分布决定。
[3]X代表已传送信号的随机变量空间,Y代表已收到信号的随机变量空间。
代表已知X的情况下Y的条件机率。
我们先把通道的统计特性当作已知,p Y | X(y | x)就是通道的统计特性。
《信息与编码》课内实验报告学生姓名:及学号:学院:班级:课程名称:信息与编码实验题目:离散信道容量指导教师姓名及职称:2015年4月20日目录一、实验目的 (1)二、实验内容 (1)三、实验要点及说明 (1)四、实现方法 (1)五、实验结果 (1)六、源程序清单 (2)七、思考及总结 (3)一、实验目的1.掌握离散信道的信道容量的计算方法;2.理解不同类型信道的不同特点与不同的计算方法;二、实验内容1.进一步熟悉一般离散信道的信道容量计算方法;2.进一步复习巩信道性质与实际应用;3.学习如何将复杂的公式转化为程序。
三、实验要点及说明准确理解信道容量计算公式意义及如何计算,并能通过matlab编程计算相应信道容量;要编写一个通用的程序,计算不同类型的信道的容量,进一步分析影响信道容量的因素。
四、实现方法以matlab软件为基础,以通过编程,1)计算对称信道的信道容量。
2)计算非对称信道的信道容量。
3)分析影响信道容量的因素。
五、实验结果1:计算对称信道的信道容量>> dcxdrl([.2 .8;.8 .2])ans =0.27812:计算非对称信道的信道容量fdcrl([.2 .8 ;.1 .9])ans =0.01443:影响信道容量的因素影响信道容量的因素有:信源和信宿的个数,以及各个信道的概率,虽然说,这个过程中会有信息量的损失,但是这个我们在计算信道容量的时候也是计算在内。
六、源程序清单1:对称function y=dcxdrl(p)%计算对称信道容量[h,l]=size(p);if h~=lerror('非对称信道矩阵非方阵')endif abs(sum(p')-1)>0.00001*ones(1,h)error('信道概率分布错误!')endif abs(sum(p)-sum(p'))>0.0001*ones(1,h)error('非对称信道!')endy=log2(l)+sum(p(1,:).*log2(p(1,:)));2:非对称function y=fdcrl(p)%非对称信道容量[l,m]=size(p);if l~=m|max(abs(sum(p')-1))>0.001error('信道矩阵非方阵或概率分布错误!')endb=p.*log2(p);x=p\sum(b,2);y=log2(sum(2.^x));七、思考及总结通过这次课内实验更加理解了信道容量计算公式意义及如何计算,并且能通过matlab编程计算相应信道容量,并能准确地计算出对称与非对称的信道容量。
湖南大学信息科学与工程学院实验报告实验名称信道容量的迭代算法课程名称信息论与编码第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篇一、实验目的1. 了解跳频通信系统的基本原理和特点。
2. 掌握跳频通信系统测试方法及步骤。
3. 分析跳频通信系统的性能指标,评估系统性能。
二、实验原理跳频通信系统是一种利用频率跳变技术实现信息传输的通信方式。
其基本原理是在通信过程中,发送端和接收端在预设的跳频序列上按一定规律跳变频率,从而实现信号的传输。
跳频通信系统具有抗干扰能力强、保密性好、频谱利用率高等优点。
三、实验装置1. 跳频通信实验平台:包括跳频发射机、跳频接收机、频率合成器、示波器、计算机等。
2. 实验软件:跳频通信实验软件。
四、实验内容1. 跳频通信系统基本参数设置:设置跳频频率、跳频速率、跳频序列等参数。
2. 跳频发射机与跳频接收机连接:将跳频发射机与跳频接收机通过射频同轴电缆连接。
3. 跳频通信系统测试:在跳频通信实验平台上进行跳频通信测试,包括以下内容:(1)测试跳频通信系统的频率跳变特性:观察跳频发射机与跳频接收机输出信号的频率变化情况,确保频率跳变符合预设要求。
(2)测试跳频通信系统的误码率:通过增加干扰信号,观察跳频通信系统的误码率变化,评估系统抗干扰能力。
(3)测试跳频通信系统的传输速率:观察跳频通信系统的传输速率,确保传输速率满足实际需求。
4. 数据分析:对测试数据进行整理和分析,评估跳频通信系统的性能指标。
五、实验步骤1. 连接跳频通信实验平台,设置跳频通信系统基本参数。
2. 将跳频发射机与跳频接收机通过射频同轴电缆连接。
3. 打开跳频通信实验软件,进行跳频通信测试。
4. 观察跳频通信系统的频率跳变特性,确保频率跳变符合预设要求。
5. 通过增加干扰信号,观察跳频通信系统的误码率变化,评估系统抗干扰能力。
6. 观察跳频通信系统的传输速率,确保传输速率满足实际需求。
7. 对测试数据进行整理和分析,评估跳频通信系统的性能指标。
六、实验结果与分析1. 频率跳变特性:实验结果显示,跳频通信系统的频率跳变符合预设要求,跳频频率在预设范围内变化,跳频速率稳定。
实验一: 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)即在功率约束下找到的最佳分布使得信道容量最大。
此处表示为半正定矩阵。
lte实验报告LTE实验报告引言:随着移动通信技术的不断发展,4G LTE(Long Term Evolution)成为当前最先进的移动通信技术之一。
本实验旨在通过对LTE系统的搭建和性能测试,深入了解和掌握其工作原理和性能特点。
一、LTE系统搭建1. 硬件准备在搭建LTE系统前,需要准备一些必要的硬件设备,如基站设备、天线、信号发生器等。
这些设备构成了一个完整的LTE系统,为后续的实验提供了基础。
2. 网络配置在搭建LTE系统时,需要进行网络配置,包括设置基站和终端的IP地址、子网掩码等。
通过网络配置,可以实现基站与终端之间的通信。
3. 基站配置基站是LTE系统的核心组成部分,负责信号的发射和接收。
在搭建LTE系统时,需要进行基站的配置,包括频率选择、功率控制、天线设置等。
通过基站的配置,可以实现对LTE系统的控制和管理。
二、LTE系统性能测试1. 信号覆盖测试LTE系统的一个重要指标是信号覆盖范围。
通过在不同位置放置终端设备,测试其在不同距离下的信号接收情况,可以评估LTE系统的信号覆盖能力。
实验结果显示,LTE系统具有较广的信号覆盖范围,能够满足大范围的通信需求。
2. 信道容量测试LTE系统的另一个重要指标是信道容量,即系统能够传输的最大数据量。
通过在不同网络负载下进行测试,可以评估LTE系统的信道容量。
实验结果显示,LTE系统具有较高的信道容量,能够支持大规模的数据传输。
3. 时延测试时延是衡量LTE系统性能的重要指标之一。
通过发送和接收数据包,并记录其传输时间,可以计算出LTE系统的时延。
实验结果显示,LTE系统具有较低的时延,能够实现实时的数据传输。
4. 抗干扰性测试LTE系统的抗干扰性是其性能的重要保证。
通过在干扰环境下进行测试,可以评估LTE系统的抗干扰能力。
实验结果显示,LTE系统具有较好的抗干扰性能,能够在干扰环境下保持较高的通信质量。
三、LTE系统优化1. 频率规划频率规划是LTE系统优化的重要环节。
信道容量是信道的一个参数,反映了信道所能传输的最大信息量,其大小与信源无关。
对不同的输入概率分布,互信息一定存在最大值。
我们将这个最大值定义为信道的容量。
一但转移概率矩阵确定以后,信道容量也完全确定了。
尽管信道容量的定义涉及到输入概率分布,但信道容量的数值与输入概率分布无关。
我们将不同的输入概率分布称为试验信源,对不同的试验信源,互信息也不同。
其中必有一个试验信源使互信息达到最大。
这个最大值就是信道容量。
信道容量有时也表示为单位时间内可传输的二进制位的位数(称信道的数据传输速率,位速率),以位/秒(b/s)形式予以表示,简记为bps。
通信的目的是为了获得信息,为度量信息的多少(信息量),我们用到了熵这个概念。
在信号通过信道传输的过程中,我们涉及到了两个熵,发射端处信源熵——即发端信源的不确定度,接收端处在接收信号条件下的发端信源熵——即在接收信号条件下发端信源的不确定度。
接收到了信号,不确定度小了,我们也就在一定程度上消除了发端信源的不确定性,也就是在一定程度上获得了发端信源的信息,这部分信息的获取是通过信道传输信号带来的。
如果在通信的过程中熵不能够减小(不确定度减小)的话,也就没有通信的必要了。
最理想的情况就是在接收信号条件下信源熵变为0(不确定度完全消失),这时,发端信息完全得到。
通信信道,发端X,收端Y。
从信息传输的角度看,通过信道传输了I(X;Y)=H(X)-H(X|Y) ,( 接收Y前后对于X的不确定度的变化)。
I该值与两个概率有关,p(x),p(y|x),特定信道转移概率一定,那么在所有p(x) 分布中,max I(X;Y)就是该信道的信道容量C(互信息的上凸性)。
入与输出的互信息量的最大值,这一最大取值由输入信号的概率分布决定。
[3]X代表已传送信号的随机变量空间,Y代表已收到信号的随机变量空间。
代表已知X的情况下Y的条件机率。
我们先把通道的统计特性当作已知,p Y | X(y | x)就是通道的统计特性。
《信息与编码》课内实验报
告
学生姓名:
及学号:
学院:
班级:
课程名称:信息与编码
实验题目:离散信道容量
指导教师
姓名及职称:
2015年4月20日
目录
一、实验目的 (1)
二、实验内容 (1)
三、实验要点及说明 (1)
四、实现方法 (1)
五、实验结果 (1)
六、源程序清单 (2)
七、思考及总结 (3)
一、实验目的
1.掌握离散信道的信道容量的计算方法;
2.理解不同类型信道的不同特点与不同的计算方法;
二、实验内容
1.进一步熟悉一般离散信道的信道容量计算方法;
2.进一步复习巩信道性质与实际应用;
3.学习如何将复杂的公式转化为程序。
三、实验要点及说明
准确理解信道容量计算公式意义及如何计算,并能通过matlab编程计算相应信道容量;
要编写一个通用的程序,计算不同类型的信道的容量,进一步分析影响信道容量的因素。
四、实现方法
以matlab软件为基础,以通过编程,
1)计算对称信道的信道容量。
2)计算非对称信道的信道容量。
3)分析影响信道容量的因素。
五、实验结果
1:计算对称信道的信道容量
>> dcxdrl([.2 .8;.8 .2])
ans =
0.2781
2:计算非对称信道的信道容量
fdcrl([.2 .8 ;.1 .9])
ans =
0.0144
3:影响信道容量的因素
影响信道容量的因素有:信源和信宿的个数,以及各个信道的概率,虽然说,这个过程中会有信息量的损失,但是这个我们在计算信道容量的时候也是计算在内。
六、源程序清单
1:对称
function y=dcxdrl(p)
%计算对称信道容量
[h,l]=size(p);
if h~=l
error('非对称信道矩阵非方阵')
end
if abs(sum(p')-1)>0.00001*ones(1,h)
error('信道概率分布错误!')
end
if abs(sum(p)-sum(p'))>0.0001*ones(1,h)
error('非对称信道!')
end
y=log2(l)+sum(p(1,:).*log2(p(1,:)));
2:非对称
function y=fdcrl(p)
%非对称信道容量
[l,m]=size(p);
if l~=m|max(abs(sum(p')-1))>0.001
error('信道矩阵非方阵或概率分布错误!')
end
b=p.*log2(p);
x=p\sum(b,2);
y=log2(sum(2.^x));
七、思考及总结
通过这次课内实验更加理解了信道容量计算公式意义及如何计算,并且能通过matlab编程计算相应信道容量,并能准确地计算出对称与非对称的信道容量。