当前位置:文档之家› 实验二 离散信道及其容量

实验二 离散信道及其容量

实验二 离散信道及其容量
实验二 离散信道及其容量

实验二离散信道及其容量

一、[实验目的]

1、理解离散信道容量的内涵;

2、掌握求二元对称信道(BSC)互信息量和容量的设计方法;

3、掌握二元扩展信道的设计方法并会求其平均互信息量。

二、[实验环境]

windows XP,MATLAB 7

三、[实验原理]

若某信道输入的是N 维序列x ,其概率分布为q(x ),输出是N 维序列y ,则平均互信息量记为I(X ;Y ),该信道的信道容量C 定义为()

max (X;Y)q x C I =。四、[实验内容]

1、给定BSC 信道,信源概率空间为

信道矩阵0.990.010.010.99P ??=????

求该信道的I(X;Y)和容量,画出I(X;Y)和ω、C 和p 的关系曲线。

2、编写一M 脚本文件t03.m,实现如下功能:

在任意输入一信道矩阵P 后,能够判断是否离散输出对称信道。

3、对题1求其二次扩展信道的平均互信息I(X;Y)。

五、[实验过程]

每个实验项目包括:

1)设计思路

1、信道容量

()max (X;Y)q x C I =,因此要求给定信道的信道容量,只要知道该信道的最大互信息量,即求信道容量就是求信道互信息量的过程。

程序代码:

clear all,clc;

w=0.6;

w1=1-w;

p=0.01;X

P 0

10.60.4

=

p1=1-p;

save data1p p1;

I_XY=(w*p1+w1*p)*log2(1/(w*p1+w1*p))+(w*p+w1*p1)*log2(1/(w*p+w1*p1))-...

(p*log2(1/p)+p1*log2(1/p1));

C=1-(p*log2(1/p)+p1*log2(1/p1));

fprintf('互信息量:%6.3f\n信道容量:%6.3f',I_XY,C);

p=eps:0.001:1-eps;

p1=1-p;

C=1-(p.*log2(1./p)+p1.*log2(1./p1));

subplot(1,2,1),plot(p,C),xlabel('p'),ylabel('C');

load data1;

w=eps:0.001:1-eps;

w1=1-w;

I_XY=(w.*p1+w1.*p).*log2(1./(w.*p1+w1.*p))+(w.*p+w1.*p1).*log2(1./(w.*p+w1.*p1))-.. .(p.*log2(1./p)+p1.*log2(1./p1));

subplot(1,2,2),plot(w,I_XY)

xlabel('w'),ylabel('I_XY');

实验结果:

互信息量:0.891

信道容量:0.919

I(X;Y)和ω、C和p的关系曲线图:

C

X

2、离散对称信道:当离散准对称信道划分的子集只有一个时,信道关于输入和输出对称。

离散准对称信道:若一个离散无记忆信道的信道矩阵中,按照信道的输出集Y 可以将信道划分成n个子集,每个子矩阵中的每一行都是其他行同一组元素的不同排列。

实验代码:

clc;clear;

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

[r,c]=size(P);

if sum(P,2)-1~=zeros(1,r)';

error('输入的信道矩阵不合法!');%矩阵行和一定要为1

end

l=1;

Sum=0;

for j=2:c

for i=1:r%i是行变量

for k=1:r

if P(k,j)==P(i,1)

Sum=Sum+1;

break;

end

end

end

end

if Sum==r*(c-1)

fprintf('是离散输出对称信道!\n',j);

else fprintf('不是对称信道!');

end

实验结果:

输入信道转移概率矩阵:[0.010.99;0.990.01]

是离散输出对称信道!

输入信道转移概率矩阵:[0.40.6;0.30.7]

不是对称信道!

3、二次扩展信道的互信息量I(X;Y)=H(Y)-H(Y|X).

实验代码:

clc,clear;

p=0.01;

P_X1=[0.6,0.4];

p1=1-p;

X2=[0,0;0,1;1,0;1,1];%二次扩展输入符号阵

Y2=X2;%二次扩展输出符号

P_X2=[P_X1(1)^2,P_X1(1)*P_X1(2),P_X1(2)*P_X1(1),P_X1(2)^2];

%求二次扩展后信道矩阵N

N=zeros(4);

for i=1:4

for j=1:4

l=length(find(xor(X2(i,:),Y2(j,:))==0));%比较得正确传递元素个数

N(i,j)=p1^l*p^(2-l);

end

end

%下面求I

P_Y2=P_X2*N;

P_XY2=[P_X2(1)*N(1,:);P_X2(2)*N(2,:);P_X2(3)*N(3,:);P_X2(4)*N(4,:)];%联合分布

H_Y2=sum(-P_Y2.*log2(P_Y2));

H_Y_X2=sum(sum(-P_XY2.*log2(N)));

I_XY2=H_Y2-H_Y_X2;

fprintf('2次扩展信道的平均互信息为:%5.3f',I_XY2);

实验结果:

2次扩展信道的平均互信息为:1.783

2)实验中出现的问题及解决方法;

1、信道容量与互信息量有关,而互信息量又与信源熵相关,所以要求得信道容量就必须知道信道传递概率,然后根据公式一步一步计算。

2、对于判断离散对称信道,不需要弄清楚的是它的概念,根据定义来判断。

3、对于扩展信道,分有记忆的和无记忆的,在不确定的情况下计算扩展信源的熵,我们要根据定义来计算。

六、[实验总结]

通过本次实验,我对于信道的分类,各种信道的特点有了一定的认识和了解。实验中涉及的主要是二元对称信道,而它的最佳分布是输入和输出均对称。

实验中最主要的部分还是关于信道容量的计算,此次实验,让我们验证了课本上的定理,也让我们更好地理解和掌握了课堂上所学的知识。

实验二 离散信道及其容量

实验二 离散信道及其容量 一、[实验目的] 1、理解离散信道容量的内涵; 2、掌握求二元对称信道(BSC )互信息量和容量的设计方法; 3、掌握二元扩展信道的设计方法并会求其平均互信息量。 二、[实验环境] windows XP,MATLAB 7 三、[实验原理] 若某信道输入的是N 维序列x ,其概率分布为q(x ),输出是N 维序列y ,则平均互信息量记为I(X ;Y ),该信道的信道容量C 定义为() max (X;Y)q x C I =。 四、[实验内容] 1、给定BSC 信道,信源概率空间为 信道矩阵 0.990.010.010.99P ??=???? 求该信道的I(X;Y)和容量,画出I(X;Y)和ω、C 和p 的关系曲线。 2 、编写一M 脚本文件t03.m ,实现如下功能: 在任意输入一信道矩阵P 后,能够判断是否离散对称信道,若是,求出信道容量C 。 3、已知X=(0,1,2);Y=(0,1,2,3),信源概率空间和信道矩阵分别为 求: 平均互信息量; 4、 对题(1)求其二次扩展信道的平均互信息I(X;Y)。 五、[实验过程 ] X P 0 1 0.6 0.4 = X Px 0 1 2 0.3 0.5 0.2 = 0.1 0.3 0 0.6 0.3 0.5 0.2 0 0.1 0.7 0.1 0.1 P=

每个实验项目包括:1)设计思路2)实验中出现的问题及解决方法; 1)设计思路 1、信道容量( ) max (X; Y) q x C = I ,因此要求给定信道的信道容量,只要知道该信道 的最大互信息量,即求信道容量就是求信道互信息量的过程。 程序代码: clear all,clc; w=0.6; w1=1-w; p=0.01; X P 01 = 0.6 0.4 p1=1-p; save data1 p p1; I_XY=(w*p1+w1*p)*log2(1/(w*p1+w1*p))+(w*p+w1*p1)*log2(1/(w*p+w1*p1))- ... (p*log2(1/p)+p1*log2(1/p1)); C=1-(p*log2(1/p)+p1*log2(1/p1)); fprintf('互信息量:%6.3f\n信道容量:%6.3f',I_XY,C); p=eps:0.001:1-eps; p1=1-p; C=1-(p.*log2(1./p)+p1.*log2(1./p1)); subplot(1,2,1),plot(p,C),xlabel('p'),ylabel('C'); load data1; w=eps:0.001:1-eps; w1=1-w; I_XY=(w.*p1+w1.*p).*log2(1./(w.*p1+w1.*p))+(w.*p+w1.*p1).*log2(1./(w.*p+w1.*p1))- . . .(p.*log2(1./p)+p1.*log2(1./p1)); subplot(1,2,2),plot(w,I_XY) xlabel('w'),ylabel('I_XY'); 实验结果:

实验二 离散信道及其容量

实验二离散信道及其容量 一、[实验目的] 1、理解离散信道容量的内涵; 2、掌握求二元对称信道(BSC)互信息量和容量的设计方法; 3、掌握二元扩展信道的设计方法并会求其平均互信息量。 二、[实验环境] windows XP,MATLAB 7 三、[实验原理] 若某信道输入的是N 维序列x ,其概率分布为q(x ),输出是N 维序列y ,则平均互信息量记为I(X ;Y ),该信道的信道容量C 定义为() max (X;Y)q x C I =。四、[实验内容] 1、给定BSC 信道,信源概率空间为 信道矩阵0.990.010.010.99P ??=???? 求该信道的I(X;Y)和容量,画出I(X;Y)和ω、C 和p 的关系曲线。 2、编写一M 脚本文件t03.m,实现如下功能: 在任意输入一信道矩阵P 后,能够判断是否离散输出对称信道。 3、对题1求其二次扩展信道的平均互信息I(X;Y)。 五、[实验过程] 每个实验项目包括: 1)设计思路 1、信道容量 ()max (X;Y)q x C I =,因此要求给定信道的信道容量,只要知道该信道的最大互信息量,即求信道容量就是求信道互信息量的过程。 程序代码: clear all,clc; w=0.6; w1=1-w; p=0.01;X P 0 10.60.4 =

p1=1-p; save data1p p1; I_XY=(w*p1+w1*p)*log2(1/(w*p1+w1*p))+(w*p+w1*p1)*log2(1/(w*p+w1*p1))-... (p*log2(1/p)+p1*log2(1/p1)); C=1-(p*log2(1/p)+p1*log2(1/p1)); fprintf('互信息量:%6.3f\n信道容量:%6.3f',I_XY,C); p=eps:0.001:1-eps; p1=1-p; C=1-(p.*log2(1./p)+p1.*log2(1./p1)); subplot(1,2,1),plot(p,C),xlabel('p'),ylabel('C'); load data1; w=eps:0.001:1-eps; w1=1-w; I_XY=(w.*p1+w1.*p).*log2(1./(w.*p1+w1.*p))+(w.*p+w1.*p1).*log2(1./(w.*p+w1.*p1))-.. .(p.*log2(1./p)+p1.*log2(1./p1)); subplot(1,2,2),plot(w,I_XY) xlabel('w'),ylabel('I_XY'); 实验结果: 互信息量:0.891 信道容量:0.919 I(X;Y)和ω、C和p的关系曲线图: C X 2、离散对称信道:当离散准对称信道划分的子集只有一个时,信道关于输入和输出对称。 离散准对称信道:若一个离散无记忆信道的信道矩阵中,按照信道的输出集Y 可以将信道划分成n个子集,每个子矩阵中的每一行都是其他行同一组元素的不同排列。

实验三 信道容量计算

实验三信道容量计算 一、实验目的: 了解对称信道与非对称信道容量的计算方法。 二、实验原理: 信道容量是信息传输率的极限,当信息传输率小于信道容量时,通过信道编码,能够实现几乎无失真的数据传输;当数据分布满足最佳分布时,实现信源与信道的匹配,使得信息传输率能够达到信道容量。本实验利用信道容量的算法,使用计算机完成信道容量的计算。 实验采用迭代算法计算信道容量,即:设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判断循环条件是否满足。 四、实验内容: 假设离散无记忆二元信道如图所示,编程,完成下列信道容量的计算 2e 1. 令120.1e e p p ==和120.01e e p p ==,先计算出信道转移矩阵,分别计算该对称信道的信道容量和最佳分布,将用程序计算的结果与用对称信道容量计算公式的结果进行比较,并贴到实验报告上。 2. 令10.15e p =,20.1e p =和10.075e p =20.01e p =,分别计算该信道的信道容量和最佳分布; 四、实验要求: 在实验报告中给出源代码,写出信道对应的条件转移矩阵,计算出相应结果。并定性讨论信道容量与信道参数之间的关系。

一般离散无记忆信道容量的迭代计算

一般离散无记忆信道容量的迭代计算 信道容量的迭代算法 1信道容量的迭代算法的步骤 一、用了matlab 实现DMC 容量迭代的算法如下: 第一步:首先要初始化信源分布: .0deta 10,1,0,1)(>>=?==,选置,,k r i r P k i 即选取一个精度,本次中我选deta=0.000001。 第二步:}{,) ()()()(k ij i ji k i ji k i k ij t p p p p t 得到反向转移概率矩阵根据式子∑=。 第三步: 第四步: 第五步: 若a C C C k k k det )1() ()1(>-++,则执行k=k+1,然后转第二步。直至转移条件不成立, 接着执行下面的程序。 第六步:输出迭代次数k 和()1+k C 和1+k P ,程序终止。 2. Matlab 实现 clear; r=input('输入信源个数:'); s=input('输入信宿个数:'); deta=input('输入信道容量的精度: '); ()()()()(){}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 计算由式()()()()()()。C t p t P I C k r i s j k ij ji k k k 10011log exp log ,+==++????????????????==∑∑计算由式

Q=rand(r,s); %形成r行s列随机矩阵Q A=sum(Q,2); %把Q矩阵每一行相加和作为一个列矩阵A B=repmat(A,1,s); %把矩阵A的那一列复制为S列的新矩阵 %判断信道转移概率矩阵输入是否正确 P=input('输入信道转移矩阵P:')%从这句话开始将用下面两句代替可自动生成信道转移矩阵 [r,s]=size(P); for i=1:r if(sum(P(i,:))~=1) %检测概率转移矩阵是否行和为1. error('概率转移矩阵输入有误!!') return; end for j=1:s if(P(i,j)<0||P(i,j)>1) %检测概率转移矩阵是否负值或大于1 error('概率转移矩阵输入有误!!') return; end end end %将上面的用下面两句代替可自动生成信道转移矩阵 %disp('信道转移概率矩阵:') %P=Q./B 信道转移概率矩阵(每一个原矩阵的新数除以所在行的数总和) i=1:1:r; %设置循环首项为1,公差为1,末项为r(Q的行数)的循环 p(i)=1/r; %原始信源分布r个信源,等概率分布 disp('原始信源分布:')

4.信道及其容量

第4章 离散信道及其容量 4.1节 离散无记忆信道(DMC, Discrete Memoryless Channel ) 什么是 “信道”? 通信的基本目标是将信源发出的消息有效、可靠地通过“信道”传输到目的地,即信宿(sink )。但什么是“信道”? Kelly 称信道是通信系统中“不愿或不能改变的部分”。比如CDMA 通信中,设备商只能针对给定的频谱范围进行设备开发,而运营商可能出于成本的考虑,不愿意进行新的投资,仍旧采用老的设备。通信是对随机信号的通信,因此信源必须具有可选的消息,因此不可能利用一个sin(〃)信号进行通信,而是至少需要两个可供发射机进行选择。一旦选择了信息传输所采用的信号,信道决定了从信源到信宿的过程中信号所受到的各种影响。从数学上理解,信道指定了接收机接收到各种信号的条件概率(conditional probability),但输入信号的先念概念(prior probability )则由使用信道的接收机指定。 如果只考虑离散时间信道,则输入、输出均可用随机变量序列进行描述。输入序列X 1, X 2,……是由发射机进行选择,信道则决定输出序列Y 1, Y 2,……的条件概率。数学上考虑的最 简单的信道是离散无记忆信道。 离散无记忆信道由三部分组成: (1) 输入字符集A ={a 1, a 2, a 3,…}。该字符集既可以是有限,也可以是可数无限。其中每个 符号a i 代表发射机使用信道时可选择的信号。 (2) 输出字符集B={b 1, b 2, b 3,…}。该字符集既可以是有限,也可以是可数无限。其中每个 符号bi 代表接收机使用信道时可选择的信号。 (3) 条件概率分布P Y |X (〃|X ),该条件分布定义在B 上,其中X ∈A 。它描述了信道对输 入信号的影响。 离散无记忆的假设表明,信道在某一时刻的输出只与该时刻的输入有关,而与该时刻之前的输入无关。或者: 1111|(|,...,,,...,)(|)n n n Y X n n P y x x y y P y x --=,n =1,2,3…. Remark: (1) n x 在信道传输时受到的影响与n 时刻以前的输入信号无关。 (2) DMC 是时不变的,即|n n Y X P 与n 无关。因此|(|)n n Y X n n P y x 可简写为|(|)Y X n n P y x 。

信道容量及其一般计算方法

实验一信道容量及其一般计算方法 1.实验目的 一般离散信道容量的迭代运算 2.实验要求 (1)理解和掌握信道容量的概念和物理意义 (2)理解一般离散信道容量的迭代算法 (3)采用Matlab编程实现迭代算法 (4)认真填写实验报告。 3.源代码 clc;clear all; //清屏 N = input('输入信源符号X的个数N='); //输入行数 M = input('输出信源符号Y的个数M='); //输入列数 p_yx=zeros(N,M); //程序设计需要信道矩阵初始化为零 fprintf('输入信道矩阵概率\n') for i=1:N //从第一行第一列开始输入 for j=1:M p_yx(i,j)=input('p_yx='); //输入信道矩阵概率 if p_yx(i)<0 //若输出概率小于0则不符合概率分布 error('不符合概率分布') end end end for i=1:N //各行概率累加求和 s(i)=0; for j=1:M s(i)=s(i)+p_yx(i,j); end end for i=1:N //判断是否符合概率分布 if (s(i)<=0.999999||s(i)>=1.000001) //若行相加小于等于0.9999999或者大于等于1.000001 Error //('不符合概率分布') end end b=input('输入迭代精度:'); //输入迭代精度 for i=1:N p(i)=1.0/N; //取初始概率为均匀分布(每行值分别为1/N,)end for j=1:M //计算q(j) q(j)=0; for i=1:N q(j)=q(j)+p(i)*p_yx(i,j); //均匀分布的值乘上矩阵值后+q(j),然后赋值给q(j)实现求和

信道容量实验报告

湖南大学 信息科学与工程学院 实验报告 实验名称信道容量的迭代算法课程名称信息论与编码 第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,(ji p )) 2:initialize:信源分布i p =1/r ,相对误差门限σ,C=—∞ 3:repeat 4: 5: 6: C 221 1 log [exp(log )] r s ji ij r j p φ==∑∑ 7:until C C σ ?≤ 8:output P*= ()i r p ,C 9:end procedure 21 21 1 exp(log ) exp(log ) s ji ij j r s ji ij r j p p φφ===∑∑∑i p 1 i ji r i ji i 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 纠错://#include f:\visualc++\channel\cpp1.cpp(5) : fatal error C1083: Cannot open include file: 'values.h': No such file or directory ————#include 纠错://#include 2、变量赋值错误 f:\visualc++\channel\cpp1.cpp(17) : error C2065: 'ij' : undeclared identifier f:\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;iDELTA) 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 identifier F:\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 identifier f:\visualc++\channel\cpp1.cpp(60) : error C2059: syntax error : '.'

离散信道容量迭代实现

中文摘要 信道是信息传递的通道,承担信息的传输和储存的任务,是构成通信系统的重要组成部分。信道容量是指信道能够传输信息量的大小。信道容量的研究在现实中有着非常重要的理论意义。而信道容量的计算是一个比较复杂的问题,所以我们要借助于数学软件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. Key word :channel capacity、matlab

正式实验报告二—信道容量的计算

一、实验目的 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、计算非对称信道的信道容量 运行程序

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

实验二 一般信道容量迭代算法 1. 实验目的 掌握一般离散信道的迭代运算方法。 2. 实验要求 1) 理解和掌握信道容量的概念和物理意义 2) 理解一般离散信道容量的迭代算法 3) 采用Matlab 编程实现迭代算法 4) 认真填写试验报告 3.算法步骤 ①初始化信源分布),,,,,(21)0(p p p p P r i ????=(一般初始化为均匀分布),置迭代计数器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??= ④?? ??????????????=∑∑+i k ji j ij k p C ?)()1(ln exp ln ⑤如果δ≤-++C C C k 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:r for j=1:s B(i,j)=log(P(i,j)/(X*P(:,j))+eps); if P(i,j)==0 B(i,j)=0; else end end A(1,i)=exp(P(i,:)*B(i,:)'); end C_k=log2(X*A'); C_k1=log2(max(A)); if (abs(C_0-C_1)

信息论与编码[第三章离散信道及其信道容量]山东大学期末考试知识点复习

第三章离散信道及其信道容量 3.1.1 信道的分类 在信息论中,信道是传输信息的通道,是信息传输系统的重要组成部分之一。信道的分类有: 按照信道输入端或输出端的个数可分为单用户信道和多用户信道。 按照信道输出端有无信号反馈到输入端可分为有反馈信道和无反馈信道。 按照信道的统计参数是否随时间变化可分为时变参数信道和固定参数信道。 按照信道输入/输出信号取值幅度集合以及取值时间集合的离散性和连续性可分为离散信道(数字信道)和波形信道(模拟信道)。 按照信道输入/输出信号取值幅度集合的离散性和连续性(取值时间是离散的)可分为离散信道和连续信道。 按照信道输入/输出信号在取值时刻上是否有依赖关系可分为有记忆信道和无记忆信道。 按照信道输入信号与输出信号之间是否统计依赖关系可分为有噪信道和无噪(无干扰)信道。 3.1.2 离散信道的数字模型 1.一般离散信道(多维离散信道) 一般离散信道输入/输出信号取值幅度和取值时刻都是离散的平稳随机矢量。其数学模型可用离散型概率空间[X,P(y|x),Y]来描述。其中X=(X1X2…X N)为输入信号,Y= (Y1Y2…Y N)为输出信号。X中X i∈A={a1,a2,…,a r},Y中Y i∈B={b1,b2,…,b s}。又P(y|x)(x∈X,y∈Y)是信道的传递概率(转移概率),反映输入和输出信号之间统计依赖关系,并满足

概率空间[X,P(y|x),Y]也可用图来描述。 2.基本离散信道(单符号离散信道) 单符号离散信道是离散信道中最基本的信道,其信道输入/输出信号都是取值离散的单个随机变量。数学模型是概率空间[X,P(y|x),Y],(或[X,P(b j|a i),Y]),其中X∈A={a1,a2,…,a r},Y∈B={b1,b2,…,b s),P(y|x)=P(b j|a i)(i=1,2,…,r;j=1,2,…,s)并满足 概率空间[X,P(y|x),Y]也可用图来描述,如图3.1所示。 若将传递概率排列成矩阵形式,则称其为传递矩阵(或称信道矩阵)P,即 3.无噪(无干扰信道) 若离散信道[X,P(y|x),Y]满足

信道容量实验报告

w .. . .. 湖南大学 信息科学与工程学院 实验报告 实验名称信道容量的迭代算法 课程名称信息论与编码

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,( ji p )) 2:initialize:信源分布 i p =1/r ,相对误差门限σ,C=—∞ 3:repeat 4: 5: 1i ji r i ji i p p p p =∑ij φ

6: C 2211log [exp(log )] r s ji ij r j p φ==∑∑ 7:until C C σ ?≤ 8:output P*= ()i r p ,C 9:end procedure 5.程序调试 1、头文件引入出错 f:\visualc++\channel\cpp1.cpp(4) : fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory ————#include 纠错://#include f:\visualc++\channel\cpp1.cpp(5) : fatal error C1083: Cannot open include file: 'values.h': No such file or directory ————#include 纠错://#include 2、变量赋值错误 f:\visualc++\channel\cpp1.cpp(17) : error C2065: 'ij' : undeclared identifier f:\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;iDELTA) f:\visualc++\channel\Cpp1.cpp(84) : error C2021: expected exponent value, not ' ' 21 211exp(log )exp(log )s ji ij j r s ji ij r j p p φφ===∑∑∑i p

一般信道容量迭代算法

实验二一般信道容量迭代算法1.实验目的 一般离散信道容量的迭代运算 2.实验要求 (1)理解和掌握信道容量的概念和物理意义 (2)理解一般离散信道容量的迭代算法 (3)采用Matlab编程实现迭代算法 (4)认真填写实验报告。 3.算法 4.算法流程图 5.代码(要求写出关键语句的解释和运行结果) 6.计算下列信道的信道容量 例一: 0.980.02 0.050.95?????? 例二: 0.60.4 0.010.99?????? 例三: 0.790.160.05 0.050.150.8?????? 7.思考题: 迭代精度指的是什么?它对计算结果的影响?

3.实验的算法: 1. 初始化信源分布:p i =r 1 ,循环变量k=1,门限△,C (0)=-∞; 2. ∑== r i ji k i ji k i k ij p p p p 1 )()()(φ 3. ∑∑∑===+= r i s j k ij ji s j k ij ji k i p p p 1 1)(1 ) () 1(] log exp[] log exp[φ φ 4. ])log exp(log[1 1 ) () 1(∑∑==+=r i s j k ij ji k p C φ 5. 若 ?>-++) 1() ()1(k k k C C C ,则k=k+1,转第2步 6. 输出P *=()() r k i P 1+和()1+k C ,终止。 4.算法流程图如下: 5.代码如下: 否 是 ()()? ?? ??=+=+????? ?????=∑∑∑i i i i i j i i j i i j i j i a n n C a x p n n C x y p x p x y p x y p a max ln ,1)(ln ,1)/()()/(ln )/(exp 21 ()()ε <+-+n n C n n C ,1,121()n n C C ,11+= ∑= i i i i i i a x p a x p x p )()()( 输入 )()()0(i i x p x p = 结束

实验二 离散信道容量

实验二 离散信道容量 一、实验目的 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.认真填写实验报告

MIMO信道容量计算.docx

实验一: MIMO 信道容量计算 实验学时:3 实验类型:(演示、验证、综合、设计、√研究) 实验要求:(√必修、选修) 一、实验目的 通过本实验的学习,理解和掌握信道容量的概念和物理意义;了解多天线系统信道容量的计算方法;采用计算机编程实现经典的注水算法。 二、实验内容 MIMO 信道容量; 注水算法原理; 采用计算机编程实现注水算法。 三、实验组织运行要求 以学生自主训练为主的开放模式组织教学 四、实验条件 (1)微机 (2)MATLAB 编程工具 五、实验原理、方法和手段 MIMO (MIMO,Multiple Input Multiple Output )技术利用多根天线实现多发多收,充分利用了空间资源,在有限的频谱资源上可以实现高速率和大容量,已成为4G 通信系统以及未来无线通信系统的关键技术之一。 图1平坦衰弱MIMO 信道模型 1.MIMO 信道模型 MIMO 指多输入多输出系统,当发送信号所占用的带宽足够小的时候,信道可以被认为是平坦的,即不考虑频率选择性衰落。平坦衰弱的MIMO 信道可以用一个 R T n n ?的复数矩阵H 描述: 111212122212T T R T R R n n n n n n h h h h h h h h h ?? ? ??? =? ? ??????H (1) 其中T n 为发送端天线数, R n 为接收端天线数,H 的元素 ,j i h 表示从第i 根发射天线到第j 根接收天线之间的空间信道衰落系数。 窄带MIMO 信道模型(如图1所示)可以描述为: =+y Hx n (2) 其中,x 为发送信号;y 为接收信号;n 为加性高斯白噪声。 2.MIMO 信道容量 假设n 服从均值为0,协方差为单位阵的复高斯分布。根据信道容量() max{(;)} p X C I X Y =的定义,可以证明当 () p x 服从高斯分布时,达到MIMO 信道 容量。令x 的协方差矩阵为 x R ,则MIMO 信道容量可表示为: ()() logdet H C +x x R I HR H (3)

MIMO信道容量计算公式资料

MIMO系统容量的计算方法 上网时间:2007年11月06日打印版 推荐给同仁 发送查询 用于多输入多输出结构的天线单元会影响无线通信系统的容量并能对抗多径效应。提高性能的一个关键是为系统方案寻找MIMO 优化设计,使得无需增加天线单元,只优化现有天线就能达到目的。 Thaysen等人描述了互方向、位置以及互耦对在无限大地平面上两个相同天线间包络互相关性的影响,为确定包络相关与固定方向上距离的关系以及互耦合同固定距离时天线方向旋转的关系,他们还研究了使用两个彼此靠近,在同一地平面的相同PIFA时的对称和非对称耦合的情况,其结果(使用IE3D仿真软件仿真)阐明了如何确定天线指向与位置来使包络相关最小。研究了两种不同情形:一种是使用平行PIFA,另一种是天线间具有垂直关系,如图1所示(水平距离d的定义使得图1a的情形中,d为正值。)对于平行情况(图1a),天线间距为10毫米,这时包络相关系数是ρe=0.8,把其中一副天线简单地旋转180度,包络相关系数就降低到ρe=0.4。类似结果对于垂直天线结构(图1b)也能观察到,这时包络相关系数从ρe=0.5下降到ρe=0.25。在垂直结构中,当开路端与馈线垂直时包络相关系数最大。 研究者们发现在平行天线情况下中心频率偏移(|S11|最小)受影响最大,每副天线在相同端都有馈入点,可观察到12%的频偏变化。与单副PIFA 单元相比,另一种情形(两副天线互相垂直情况)变化量低于2%。平行结构的最大包络相关系数是ρe=0.8,当天线彼此交叠垂直时,馈线均在同一端的情况下包络相关系数取得最大值。 此外,可发现互耦与包络相关系数几乎呈指数关系。研究发现,互耦极限为-10dB,在该极限以下,包络相关系数几乎为恒定值,达到ρe=0.15,因此,降低互耦的努力将受限于这个水平。 把天线置于有限平面会影响其性能。图2给出的设计,是按照平面倒F天线(PIFA)的输入阻抗和带宽来优化天线(即改变馈入点跟到地点间的距离,这取决于PIFA在地平面的位置)。对一些性能参数(相关性和带宽)组合优化可选出最佳天线结构。不过,移动电话的外盖、人手、和头部的邻近效应也应包括进分析当中。这样,当把外盖、手、头的影响考虑进来时,最优结构的结果就可能稍有不同。

相关主题
文本预览
相关文档 最新文档