信息论上机1.docx
- 文档编号:23670082
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:19
- 大小:67.11KB
信息论上机1.docx
《信息论上机1.docx》由会员分享,可在线阅读,更多相关《信息论上机1.docx(19页珍藏版)》请在冰豆网上搜索。
信息论上机1
信息论实验报告
班级:
通信11-4
姓名:
李阳
学号:
11101060427
指导教师:
范锦宏
完成日期:
2014.6.8
2.1
程序代码:
clearall;
closeall;
clc;
p=0:
0.01:
1;
I=-log2(p+eps);
plot(p,I);
xlabel('\it{p(x_i)}');
ylabel('\it{I(x_i)}','rotation',0,'position',[-0.05,3.5,0]);
ylim([0,7]);
运行结果:
2.2
程序代码:
clearall;
closeall;
clc;
p=0:
0.01:
1;
q=1-p;
H=-p.*log2(p+eps)-q.*log2(q+eps);
plot(p,H);
xlabel('\it{p}');
ylabel('\it{H[p]}','rotation',0,'position',{-0.1,0.5,0]);
xlim([0,1]);
ylim([0,1]);
运行结果:
3.1
(1)
程序代码:
%画出作为r函数的差错概率图
clearall;
gamma_db=[-20:
0.1:
20];
gamma=10.^(gamma_db./10);
p_error=0.5.*(sqrt(2.*gamma));
semilogx(gamma,p_error)
xlabel('SNR/bit')
title('ErrorprobilityversusSNR/bit')
ylabel('ErrorProb.')
运行结果:
3.1
(2)
程序代码:
clearall;
gamma_db=[-20:
0.1:
20];
gamma=10.^(gamma_db./10);
p_error=0.5.*(sqrt(2.*gamma));
capacity=1.-sum(-p_error.*log2(p_error));
semilogx(gamma,capacity)
xlabel('SNR/bit')
title('channelcapacityversusSNR/bit')
ylabel('channelcapacity')
运行结果:
3-2
(1)
%W=3000Hz的加性高斯白噪声的信道容量作为P/N0的函数图
clearall
echoon
pn0_db=[-20:
0.1:
30];
pn0=10.^(pn0_db./10);
capacity=3000.*log2(1+pn0/3000);
pause
clf
semilogx(pn0,capacity)
title('Capacityvs.P/N0inanAWGNchannel')
xlabel('P/N0')
ylabel('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);
pause
clf
%在AWGN信道中作为带宽的函数的容量
semilogx(w,capacity)
title('Capacityvs.bandwidthinanAWGNchannel')
xlabel('Bandwidth(Hz)')
ylabel('Capacity(bits/second)')
运行结果:
3-2
(2)
echoon;
pn0_db=25
pn0=10.^(pn0_db./10);
w=0:
100000;
capacity=w.*log2(1+pn0./w);
pause;
clf
semilogx(w,capacity);
title('capacityvs.P/N0inanAWGNChannel');
xlabel('P/N0');
ylabel('Capacity(bits/second)');
运行结果:
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')
end
[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);
forj=1:
s
fori=1:
r
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));
end
end
c=sum(suma);
l=zeros(1,r);
sumaa=0;
fori=1:
r
forj=1:
s
l(i)=l(i)+pba(i,j)*log(pab(j,i)+eps);
end
a(i)=exp(l(i));
end
sumaa=sum(a);
fori=1:
r
paa(i)=a(i)/(sumaa+eps);
end
cc=log2(sumaa);
pa=paa;
end
运行结果:
输入:
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);
forj=1:
s
Pb(j,1)=0;
fori=1:
r
Pb(j,1)=Pb(j,1)+Pa(i)*Pba(i,j,1);
end
end
fori=1:
r
temp(i)=0;
forj=1:
s
temp(i)=temp(i)+Pb(j,1)*exp(S(m)*d(i,j));
end
end
fori=1:
r
forj=1:
s
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;
fori=1:
r
forj=1:
s
D
(1)=D
(1)+Pa(i)*Pba(i,j,1)*d(i,j);
end
end
R
(1)=0;
fori=1:
r
forj=1:
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
end
end
n=2;
while
(1)%计算pn(bj)
forj=1:
s
Pb(j,n)=0;
fori=1:
r
Pb(j,n)=Pb(j,n)+Pa(i)*Pba(i,j,n);
end
end%计算pn+1(bj/ai)
fori=1:
r
temp(i)=0;
forj=1:
s
temp(i)=temp(i)+Pb(j,n)*exp(S(m)*d(i,j));
end
end
fori=1:
r
forj=1:
s
if(temp(i)~=0)
Pba(i,j,n+1)=(Pb(j,n)*exp(S(m)*d(i,j)))/temp(i);
end
end
end%计算D(n)(S)和R(n)(S)
D(n)=0;
fori=1:
r
forj=1:
s
D(n)=D(n)+Pa(i)*Pba(i,j,n)*d(i,j);
end
end
R(n)=0;
fori=1:
r
forj=1:
s
if(Pba(i,j,n)~=0)
R(n)=R(n)+Pa(i)*Pba(i,j,n)*log2(Pba(i,j,n)/Pb(j,n));
end
end
end
if(abs(R(n)-R(n-1))<1e-7)
if(abs(D(n)-D(n-1))<1e-7)
break;
end
end
n=n+1;
end
S(m+1)=S(m)+0.5;
pba=[Pba(:
:
:
)];
RS=[RSR(n)];
DS=[DSD(n)];
m=m+1;
end
end
[k,l,q]=size(pba);
Pba=pba(:
:
q);
Rmin=min(RS);
Dmax=max(DS);
Smax=S(m-1);
fprintf(2,'迭代结果如下:
\n');
fprintf(2,'最小信息率Rmin:
\n');
disp(Rmin);
fprintf(2,'最佳转移概率分布Pba:
\n');
disp(Pba);
plot(DS,RS);
xlabel('D');ylabel('R(D)');title('信息率失真函数图象')
运行结果:
r=
2
s=
2
d=
01
10
Pa=
0.50000.5000
S=
-99.5000
迭代结果如下:
最小信息率Rmin:
0
最佳转移概率分布Pba:
0.73130.2687
0.26920.7308
8.1
程序代码:
clearall;
closeall;
clc;
k=4;
fori=1:
2^k
forj=k:
-1:
1
ifrem(i-1,2^(-j+k+1))>=2^(-j+k)
u(i,j)=1;
else
u(i,j)=0;
end
end
end
%定义生成矩阵g
g=[1001110111;
1110001110;
0110110101;
1101111001];
%生成码字
c=rem(u*g,2)
%求最小重量
w_min=min(sum((c(2:
2^k,:
))'))
运行结果:
8.2
程序代码:
function[H,G]=Hamm_gen(m)
%H=mxN:
奇偶校验矩阵,其中,N=2^m-1
%G=KxN:
Hamming码的生成矩阵,其中,K=N-m
ifnargin<2,
opt=1;
end
H=[ones(2,1)eye
(2)];
G=[1H(:
1).'];
ifm<3,
return;
end
fori=3:
m
N=2^i;
N2=N/2;
K=N-1-i;
forj=1:
N2-1,
H(i,j)=1;
end
forj=N2:
K,
H(i,j)=0;
end
H(1:
i-1,N2:
K)=H(1:
i-1,1:
N2-i);
H(1:
i,N-i:
N-1)=eye(i);
end
H(:
1:
K)=fliplr(H(:
1:
K));
G=[eye(K)H(1:
m,1:
K).'];
运行结果:
输入:
m=4;
[H,G]=Hamm_gen(m)
输出:
8.3
程序代码:
clearall;
k=11;
fori=1:
2^k
forj=k:
-1:
1
ifrem(i-1,2^(-j+k+1))>=2^(-j+k)
u(i,j)=1;
else
u(i,j)=0;
end
end
end
[H,G]=hamm_gen(4);
c=rem(u*G,2)
w_min=min(sum((c(2:
2^k,:
))'))
运行结果:
(15,11)的Hamming码的全部码字较多,共2048行15列
THANKS!
!
!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息论 上机