基于matlab的信道编码实验:多维连续信源与信道的信息量、多维连续信道的信道容量

当年matlab的一个很简单的课程实验,现在拿出来分享一下:

一、特殊N维连续信源的熵

1、均匀分布的连续信源: 

1.1一维:

1.2N维

若N维随机变量X=(X1,X2....XN)中各分量彼此统计独立,且分别在[a1,b1]、[a2,b2].....[aN,bN]的区域内均匀分布,则信源熵为: 

因此只要知道各随机变量的取值区间,分别求出各个变量在各自区间内均匀分布时的相对熵,再将这些相对熵进行累加求和,就能计算出多维连续信源的相对熵。

实现代码;

%%特殊N维连续信源的熵
%均匀分布
clc;
clear;
N = input('连续信源维数N=');%信源维数
H = 0;%N维连续信源的熵
for i=1:N
    x = input('均匀分布区间=');
    h = log2(max(x)-min(x));%一维连续信源的熵
    H = H+h;
end
fprintf('N维连续信源熵H(x)=%4.2f\n',H);

结果:

 2、无记忆N维高斯连续信源的熵

设N维高斯连续信源是无记忆信源,即随机变量之间不相关,此时协方差矩阵[M]的行列式为0,因此信源的相对熵为: 

上式表明,N维高斯信源是由N个相互统计独立的、方差为𝜎𝑖2的高斯连续随机变量组成的N维无记忆高斯信源,其中每个高斯随机变量的相对熵为。

单维连续信源的最大相对熵定理表明,在一定限制条件下,相对熵存在最大值。

对于N维连续信源,最大相对熵定理同样成立。

最大多维相对熵定理表明:

1、在取值区间限定为N维区域体积的条件下,均匀分布的N维连续信源的相对熵达到最大值,其最大值仅取决于取值区间。

2、在协方差矩阵[M]限定的条件下,高斯分布的N维连续信源的相对熵达到最大值,其最大值仅取决于协方差矩阵[M]。

3、在随机变量的方差限定的条件下,无记忆高斯信源的相对熵达到最大值,其最大值仅取决于方差。

clc;
clear;
H = 0;
N = input('请输入信源维数N=');
x = input('请以数组的形式依次输入N个高斯随机变量的方差=');
for i=1:N
    h = 0.5*log(2*pi*exp(1)*x(i));
    H = H +h;
end
fprintf('N维无记忆高斯连续信源的相对熵为:h(x)=%4.5f',H);

结果:

二、N维连续信道的平均互信息量

X与Y的平均互信息量定义为 

 

实验结果:例如,已知4维无记忆连续信道的输入随机变量X的概率密度函数为p(x)及其输入区间。信道的传递概率密度函数及信道输出随机变量Y的输出区间都给出。则该连续信源的相对熵计算结果如图4-2-1所示。图4-2-14维连续信道的平均互信息量

clear
clc
syms x y;
N = input('请输入连续无记忆信源和连续无记忆信道的扩展次数N:');
px = input('输入信源的输入概率密度函数:');
parameterx = input('请输入信源的取值区间[a b] = ');
a = parameterx(1);
b = parameterx(2);
py_x = input('信道传递概率密度函数:');
parametery = input('请输入y的取值区间[m n] = ');
m = parametery(1);
n = parametery(2);
pxy=px*py_x;
q1 = int(pxy,x,a,b);
px_y = px*py_x/q1;
fun = @(x,y) pxy*log2(pxy/(px*q1));
res = int(fun,x,a,b);
res2 = int(res,y,m,n)*N;
fprintf("平均互信息量为I(X,Y)= %8.7f (比特/自由度)\n",res2);

结果

 三、信道容量

1、信道容量公式

clc;
clear;
W = input('信道带宽W=');
S = input('信号平均功率S=');
N = input('噪声功率N=');
C = W*log2(1+S/N);
fprintf('信道容量C=%4.8f\n',C);

结果:

 2、增加信道容量的两种方式验证

%高斯信道容量仿真
pn0_db=-20:0.1:30; 
pn0=10.^(pn0_db./10);
capacity=3000.*log2(1+pn0/3000); 
pause;
clf;
semilogx(pn0,capacity) 
title('Capacity vs. P/N0 in an AWGN channel');
xlabel('P/N0')
ylabel('Capacity (bits/second)');
clearw=[1:10,12:2:100,105:5:500,510:10:5000,5025:25:20000,20050:50:100000];
pn0db=25; 
pn0=10^(pn0db/10);
capacity=w.*log2(1+pn0./w); 
pause;
clf;
semilogx(w,capacity);
title('Capacity vs. bandwidth in an AWGN channel'); xlabel('Bandwidth (Hz)');
ylabel('Capacity (bits/second)');

结果:

 

 

代码:

%信道容量、信噪比和带宽三者间关系
w=[1:5:20,25:20:100,130:50:300,400:100:1000,1250:250:5000,5500:500:10000];pn0_db=[-20:1:30]; 
pn0=10.^(pn0_db/10);
for i=1:45 
    for j=1:51 
        c(i,j)=w(i)*log2(1+pn0(j)); 
    end
end
[w,pn0_db]=meshgrid(w,pn0_db);
surf(w,pn0_db,c'); 
title('Capacity vs. bandwidth and SNR');
        

结果:

 

 

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值