Matlab绘制二进制熵函数曲线实验

一:实验目的

  • 熟悉工作环境及Matlab软件
  • 掌握绘图函数的运用
  • 理解熵函数表达式及其性质

 二:实验内容

1.用 Matlab 软件(matlab2010a版本)绘制二进熵函数曲线 

 

 

  • 二元信源

 

2.绘制三元信源的熵

 三元信源

 

 

3.绘制平均互信息量图形 

 

对于二元对称信道的输入概率空间为

 

 

 

三:实验代码 

1.

p=0.00001:0.001:1;
h=-p.*log2(p)-(1-p).*log2(1-p);
plot(p,h);
title('二进熵函数曲线');
ylabel('H(p,1-p)')

 2.

p=linspace(eps,1-eps,100);

q=linspace(eps,1-eps,100);

[P,Q]=meshgrid(p,q);

P_Q=P+Q;

for n=1:100

    for m=1:100

        if P_Q(n,m)>=1

            Q(n,m)=nan;

        end

    end

end

H=-P.*log2(P)-Q.*log2(Q)-(1-P-Q).*log2(1-P-Q);

mesh(P,Q,H)

title('三维熵函数的图形')

3.

[w,p]=meshgrid(0.00001:0.001:1);
h=-(w.*(1-p)+(1-w).*p).*log2(w.*(1-p)+(1-w).*p)-(w.*p+(1-w).*(1-p)).*log2(w.*p+(1-w).*(1-p))+(p.*log2(p)+(1-p).*log2(1-p))
meshz(w,p,h)
title('平均互信息量')
ylabel('H')

四:实验结果

 

 

MATLAB中研究二元对称信道下的离散信道平均互信息,你可以创建一个函数来计算互信息并绘制图,假设信噪比(SNR)用ω表示。首先,我们需要定义信道输入的概率P,然后利用奈奎斯特准则计算条件。接下来,我们将使用BCH编码理论中的公式来估计平均互信息。下面是一个基本的示例代码: ```Matlab function mi = calculate_MI_omega(P, omega) % 假设P为信号的概率(0 <= P <= 1) % omega为信噪比 if ~isnumeric(P) || (P < 0 || P > 1) error('Invalid probability value'); end % 计算信源 H_X = -P * log2(P) - (1 - P) * log2(1 - P); % 信道噪声 H_Z = log2(1 + omega); % 条件 H_Y_given_X = H_Z; % 平均互信息 I(X; Y) I_XY = H_X - H_Y_given_X; % 返回结果 mi = I_XY; end % 示例:对于固定p=0.5,绘制不同ω下的MI曲线 p = 0.5; omegas = linspace(0, 10, 100); % 信噪比范围 % 计算平均互信息 mi_values = zeros(size(omegas)); for i = 1:length(omegas) mi_values(i) = calculate_MI_omega(p, omegas(i)); end % 绘制图表 figure; plot(omegas, mi_values, 'LineWidth', 2); xlabel('\omega (信噪比,单位: 比特/符号)'); ylabel('Average Mutual Information (比特)'); title(sprintf('Fixed P = %.2f, Average MI vs. \u03A9', p)); % 显示信息 disp(['横轴表示信噪比 (\(\omega\)) 的值, 单位是比特/符号']); disp(['纵轴显示平均互信息 (I(X; Y)), 单位是比特']); ``` 这段代码首先定义了一个计算互信息的函数`calculate_MI_omega`,然后在主程序中生成一个信噪比数组,并计算对应的平均互信息。最后,通过`plot`函数画出互信息曲线。记得替换`linspace(0, 10, 100)`为你实际需要的信噪比步长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值