大三下信息论实验报告Word格式.docx
- 文档编号:19191758
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:17
- 大小:171.24KB
大三下信息论实验报告Word格式.docx
《大三下信息论实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《大三下信息论实验报告Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
)
c=1-Hp(p.^3+3.*p.*(1-p).^2);
plot(p,c);
信道容量'
c1=1-Hp(p);
c2=1-Hp(2*p.*(1-p));
c3=1-Hp(p.^3+3.*p.*(1-p).^2);
subplot(3,1,1)
plot(p,c1);
CⅠ'
);
subplot(3,1,2)
plot(p,c2);
CⅠⅡ'
subplot(3,1,3)
plot(p,c3);
CⅠⅡⅢ'
实验4容量代价函数的计算程序设计
1、问题的提出:
假定一个离散无记忆信源(DMC)的输入符号集为AX={1,2,...,r},输出符号集为AY={1,2,....,s},信道的转移概率矩阵P(Y|X):
{p(y|x)};
该信道不是免费的,其输入代价为b(x)。
容量代价函数C(β)=supCn(β)/n
n
如果单位时间内占用信道的平均代价必须≤β,则C(β)的值表示信道单位时间内能够可靠传输的最大信息量。
计算容量代价函数C(β)在通信领域,密码学等方面均有着很重要的用途。
对于一般信道要求出C(β)非常困难,计算过程繁琐,很容易计算错误。
2、解决问题的原理方法:
1.C()的一般计算方法:
计算bmin是很容易的。
;
当bmin£
b£
bmax时,设试验信源X达到了C(b),即C(b)=max{I(X;
Y):
E([b(x)]=b}。
在数学上,就是在约束条件下:
(1)
并且P(x)³
0
(2)
的约束下求平均互信息量
的条件极大值。
为此引入待定常数S和m,并作辅助函数
(3)
其中
由
得,
(4)
上式两边同乘以p(x)并对x求和。
即C(b)=loge+Sb+m(5)
显然(4)提供r个方程,再加上
(1)
(2)的方程,共r+2个方程;
而有r个未知数p(x)、及S、m,共r+2未知数,显然可以求解。
一般来说,S、m是b的函数。
(1)
(2)(4)组成的r+2个方程是一个非常复杂的非线性方程组。
(4)式可以写成矩阵形式:
2.一般非线性方程组求解方法:
下面介绍求非线性方程组一组是实根的梯度法:
设非线性方程组为
并定义目标函数为:
则梯度法的计算过程如下:
(1)选取一组初值x0,x1,...,xn-1
(2)计算目标函数值F
(3)若F<
e,则X=(x0,x1,...,xn-1)即为方程组的一组实根,过程结束;
否则继续。
(4)计算目标函数在(x0,x1,...,xn-1)的偏导数
再计算
(5)计算
其中l=F/D。
重复
(2)~(5)直到满足精度要求为止。
在上述过程中,如果D=0,则说明遇到了目标函数的局部极值点,此时可改变初值在试试。
在我们的问题中,不会遇到该问题。
另在计算中我们限制一个最大循环次数,以防D过小,使计算时间过长的情况。
3、解决问题的具体方法:
用Matlab画出容量代价函数C(b)的曲线图。
为了计算一给定代价信道的容量函数,要用3个MATLAB函数,如下:
⏹Cfun
CFUN代价容量方程组,用于信道容量
x输入,一行m+2列(1*(m+2)
beta平均代价,标量
b代价矩阵,一行m列(1*m)
Py_x转移概率矩阵,m行n列(m*n)
代码:
functionF=Cfun(x,beta,b,Py_x)
%CFUN代价容量方程组,用于信道容量
%x输入,一行m+2列(1*(m+2)
%beta平均代价,标量
%b代价矩阵,一行m列(1*m)
%Py_x转移概率矩阵,m行n列(m*n)
sizePy_x=size(Py_x);
m=sizePy_x
(1);
n=sizePy_x
(2);
F=zeros(m+2,1);
i=1:
m;
P_y=x(1,1:
m)*Py_x;
TP_y=zeros([m,n]);
forj=1:
m
TP_y(j,:
)=P_y;
end
TP_y=TP_y'
;
t=Py_x(i,:
)'
./TP_y;
t(find(t==0))=1;
F(i)=sum(Py_x(i,:
.*log2(t))-log2(exp
(1))-x(m+1)*b(i)-x(m+2);
F(m+1)=1-sum(x(1,1:
m));
F(m+2)=beta-sum(x(1,1:
m).*b);
⏹C
C求信道容量
functionc=C(beta,b,Py_x)
%C求信道容量
sizeB=size(b);
if~(sizeB
(2)==sizePy_x
(1))
disp('
参数b的列数应和参数Py_x的行数相同'
c=-1;
return;
sumPy=sum(Py_x'
if~(all(Py_x>
=0)&
all(sumPy==1))
参数Py_x的每个元素都要大于或等于0,且每行的和应等于1'
minBeta=min(b);
ifbeta<
minBeta
参数beta太小'
x0=ones(1,m+2)./m;
options=optimset('
TolFun'
0.000001,'
Display'
'
off'
r=fsolve(@Cfun,x0,options,beta,b,Py_x);
s=r(m+1);
u=r(m+2);
c=log2(exp
(1))+s*beta+u;
end
⏹plotCBeta
PLOTCBETA画信道的代价容量曲线
b代价向量,一行m列(1*m)
Py_x转移概率矩阵,m行n列(m*n)
function[minb,maxb]=plotCBeta(b,Py_x)
%PLOTCBETA画信道的代价容量曲线
%b代价向量,一行m列(1*m)
maxBeta=max(b);
beta=minBeta:
0.1:
maxBeta;
l=length(beta);
r=zeros(1,l);
fori=1:
l
r(i)=C(beta(i),b,Py_x);
minb=minBeta;
maxC=max(r);
maxb=maxC;
l=find(r==maxC);
plot(beta(1:
l),r(1:
l));
4、实验结果:
示例1:
Q=[100;
010;
001],b=[321],求其代价容量函数?
>
Q=[100;
001];
b=[3,2,1];
plotCBeta(b,Q)
结果:
ans=
1
五、结果分析
C(b)的性质:
在βmin≤β≤βmax内,是一个严格上升函数。
C(βmin)=Cmin,C(βmax)=Cmax。
当β≥βmax时,C(β)是一个常数Cmax。
因此C(β)=max{I(X;
E[b(x)]=β},βmin≤β≤βmax。
这说明,达到C(β)的试验信号,可以在E[b(x)]=β的区域中找到,实际上也只能在这个区域内找到。
实验6BCH循环码的编码与译码
用VC或Matlab软件编写循环BCH码的编码与译码程序。
利用程序对教科书的例题做一个测试。
3.MicrosoftVisualC++6.0或以上
1.通过BCH循环码的编码与译码程序的编写,彻底了解并掌握循环BCH的编码与译码原理
2.通过循环BCH码的编码与译码程序的编写,提高编程能力。
2.对不同信道的进行误码率分析。
特别是对称信道,画出误码性能图。
即信道误码率与循环汉明码之间的关系。
1.循环BCH的编码与译码原理(略)
2.循环BCH的程序实现。
六、实验步骤
bch_en_decode.m文件
functionbch_en_decode()
code=bch155
code=code+randerr(5,15,1:
3);
code=rem(code,2);
code=gf(code)%随机产生1-3位错误
decode=debch155(code)
functiondecode=debch155(code)
code=gf(code);
M=4;
code=gf(code.x,M);
[m,n]=size(code);
decode=[];
code1=[];
m;
code1=code(i,:
M=code1.m;
T2=6;
N=15;
S=code1*((gf(2,M,code1.prim_poly)).^([N-1:
-1:
0]'
*([1:
T2])));
LambdaX=gf([1zeros(1,T2)],M,code1.prim_poly);
Tx=[01zeros(1,T2-1)];
L=0;
fork=1:
T2;
LambdaXTemp=LambdaX;
Delta=S(k)-LambdaXTemp(1+[1:
L])*(S(k-[1:
L]))'
ifDelta.x;
LambdaX=LambdaXTemp-Delta*Tx;
if2*L<
k;
L=k-L;
Tx=LambdaXTemp/Delta;
end;
Tx=[0Tx(1:
T2)];
LambdaXValue=LambdaX.x;
LambdaX=gf(LambdaXValue(1:
max(find(LambdaXValue))),M,code1.prim_poly);
errLoc_int=roots(LambdaX);
errLoc=log(errLoc_int);
fori=1:
length(errLoc);
errorMag=1;
code1(N-errLoc(i))=code1(N-errLoc(i))-errorMag;
decode=[decode;
code1];
ccode=gf(decode.x);
decoded=ccode(:
1:
5);
function[yout]=bch155(x)%定义函数
k=5;
%信息码位,BCH(15,5)
ifnargin<
1
x2=randint(5,k);
n=5;
msg=x2%判断输入信息,若未输入,系统自动产生5组信息码,并显示出信息位
elseifrem(length(x),k)==0;
n=length(x)/k;
x2=[];
%判断msg是否为K的整数倍,并把输入码员分组
fori=0:
n-1
x2=[x2;
x(i*k+1)x(i*k+2)x(i*k+3)x(i*k+4)x(i*k+5)];
end
ifrem(length(x),k)>
0%把输入码员补零并分组
x=[x,zeros(size(1:
k-rem(length(x),k)))];
n=length(x)/k;
n-1
ik=[eye(5)zeros(5,10)];
%输入信息码扩展
x3=x2*ik;
yout=[];
fori=1:
n
g=[10100110111];
[w,yo]=deconv(x3(i,:
),g);
%产生余式
yo=abs(rem(yo,2));
yout=[yout;
yo];
yout=yout+x3;
%产生信息码
运行结果:
msg=
11010
01101
01000
11101
00100
code=
110101100100011
011011100001010
010001111010110
111010110010001
001000111101011
code=GF
(2)array.
Arrayelements=
110101010100011
011111100001010
000001111000110
110010111010001
001100111101011
decode=GF(2^4)array.Primitivepolynomial=D^4+D+1(19decimal)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大三 信息论 实验 报告