信息论上机1_精品文档文档格式.docx
《信息论上机1_精品文档文档格式.docx》由会员分享,可在线阅读,更多相关《信息论上机1_精品文档文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
\it{I(x_i)}'
'
rotation'
0,'
position'
[-0.05,3.5,0]);
ylim([0,7]);
运行结果:
2.2
q=1-p;
H=-p.*log2(p+eps)-q.*log2(q+eps);
plot(p,H);
\it{p}'
\it{H[p]}'
{-0.1,0.5,0]);
xlim([0,1]);
ylim([0,1]);
3.1
(1)
%画出作为r函数的差错概率图
gamma_db=[-20:
0.1:
20];
gamma=10.^(gamma_db./10);
p_error=0.5.*(sqrt(2.*gamma));
semilogx(gamma,p_error)
SNR/bit'
)
title('
ErrorprobilityversusSNR/bit'
ErrorProb.'
3.1
(2)
gamma_db=[-20:
gamma=10.^(gamma_db./10);
p_error=0.5.*(sqrt(2.*gamma));
capacity=1.-sum(-p_error.*log2(p_error));
semilogx(gamma,capacity)
channelcapacityversusSNR/bit'
channelcapacity'
3-2
(1)
%W=3000Hz的加性高斯白噪声的信道容量作为P/N0的函数图
clearall
echoon
pn0_db=[-20:
30];
pn0=10.^(pn0_db./10);
capacity=3000.*log2(1+pn0/3000);
pause
clf
semilogx(pn0,capacity)
Capacityvs.P/N0inanAWGNchannel'
P/N0'
Capacity(bits/second)'
clear
w={1:
10,12:
2:
100,105:
5:
500;
510:
10:
5000;
5025:
25:
20000,20050:
50:
100000};
pn0_db=25;
pn0=10^(pn0_db/10);
capacity=w.*log2(1+pn0./w);
%在AWGN信道中作为带宽的函数的容量
semilogx(w,capacity)
Capacityvs.bandwidthinanAWGNchannel'
Bandwidth(Hz)'
3-2
(2)
echoon;
pn0_db=25
pn0=10.^(pn0_db./10);
w=0:
100000;
capacity=w.*log2(1+pn0./w);
pause;
semilogx(w,capacity);
capacityvs.P/N0inanAWGNChannel'
3.3
%3.3离散无记忆信道的迭代计算%
function[cc,paa]=channelcap(p,k)
%p:
输入的正向转移矩阵,k:
迭代计算的精度
%cc:
最佳信道容量,paa:
最佳输入概率矩阵
%pa:
初始输入概率矩阵,pba:
正向转移概率矩阵
%pb:
输出矩阵概率,pab:
反向转移概率矩阵
%c:
初始信道容量,r:
输入符号数,s:
输出符号数
%提示错误信息
if(length(fing(p<
0))~=0
error('
notaprob.vector,negetivecomponent'
end
if(abs(sum(p'
)-1)>
10e-10)
error('
notaprov.vector,componentdonotaddupto1'
[r,s]=size(p);
pa=(1/(r+eps))*ones(1,r);
sumrow=zeros(1,r);
pba=p;
n=0;
c=0;
cc=1;
whileabs(cc-c)>
=k
n=n+1;
pb=zeros(1,s);
forj=1:
s
fori=1:
r
pb(j)=pb(j)+pa(i)*pba(i,j);
end
end
suma=zeros(1,s);
pab(j,i)*pba(i,j)/(pb(j)+eps);
suma(j)=suma(j)+pa(i)*pba(i,j)*log2((pab(j,i)+eps)/(pa(i)+eps));
c=sum(suma);
l=zeros(1,r);
sumaa=0;
fori=1:
forj=1:
l(i)=l(i)+pba(i,j)*log(pab(j,i)+eps);
a(i)=exp(l(i));
sumaa=sum(a);
paa(i)=a(i)/(sumaa+eps);
cc=log2(sumaa);
pa=paa;
输入:
p=[0.2,0.3,0.5;
0.6,0.2,0.2;
0.5,0.2,0.3;
0.1,0.3,0.6];
k=10e-4;
[a,b]=channelcap(p,k)
输出:
a=
0.2057
b=
0.06080.40310.06920.4668
4-1
%function[]=RD(Pa,d,S)formatlongS=[];
%r=input('
输入信源数r='
%s=input('
输出信源数s='
%d=input('
失真矩阵d='
%Pa=input('
输入概率分布Pa='
r=2
s=2
d=[01;
10]
Pa=[0.50.5]
S
(1)=-99.5
times=100;
pba=[];
RS=[];
DS=[];
m=1;
forz=1:
times%初始化
Pba(1:
r,1:
s,1)=1/(r*s)*ones(r,s);
s
Pb(j,1)=0;
r
Pb(j,1)=Pb(j,1)+Pa(i)*Pba(i,j,1);
r
temp(i)=0;
temp(i)=temp(i)+Pb(j,1)*exp(S(m)*d(i,j));
Pba(i,j,2)=(Pb(j,1)*exp(S(m)*d(i,j)))/temp(i);
end%计算D
(1)(S)和R
(1)(S)
D
(1)=0;
r
forj=1:
s
D
(1)=D
(1)+Pa(i)*Pba(i,j,1)*d(i,j);
end
R
(1)=0;
s
if(Pba(i,j,1)~=0)
R
(1)=R
(1)+Pa(i)*Pba(i,j,1)*log2(Pba(i,j,1)/Pb(j,1));
end
n=2;
while
(1)%计算pn(bj)
Pb(j,n)=0;
fori=1:
r
Pb(j,n)=Pb(j,n)+Pa(i)*Pba(i,j,n);
end%计算pn+1(bj/ai)
fori=1:
temp(i)=0;
forj=1:
s
temp(i)=temp(i)+Pb(j,n)*exp(S(m)*d(i,j));
r