⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exercise_1.m

📁 信息论中各种熵的matlab实现
💻 M
字号:
%---------(注:命名规则的选取)
%---------输入先验概率 转移矩阵
fprintf('\n请输入先验概率P_x和状态转移概率P_y_x\n');
eps=1e-8;
P_x=input('P_x=')+eps;                    %+eps是为了防止概率为0时,对数无意义
P_y_x=input('P_y_x=')+eps;              
if (min(P_x(:))<0 | max(P_x(:)>1))|(min(P_y_x(:))<0|max(P_x(:)>1))
    error('The data shoud be any numbers between 0 and 1.');
end;
eps=1e-10;
if min(sum(P_y_x')-1)<eps | (sum(P_x)-1)<eps
    error('The sum of rows should be 1.');
end;
P_xx=P_x'*ones(size(P_x,1),size(P_y_x,2));
P_xy=P_xx.*P_y_x;                          % x y的联合概率
fprintf('-----------------------------');
fprintf('\nx y的联合概率 P_xy=\n');
disp(P_xy);
P_y=sum(P_xy);                             % y的概率
fprintf('-----------------------------');
fprintf('\ny的概率 P_y=\n');
disp(P_y);
P_yy=ones(size(P_xy,1),size(P_y,1))*P_y;  
P_x_y=P_xy./P_yy;                          % x y的后验概率
fprintf('-----------------------------');
fprintf('\nx y的后验概率 P_x_y=\n');
disp(P_x_y);
%输出各类信息熵
H_x=compute(P_x);
H_y=compute(P_y);
H_xy=compute(P_xy);
fprintf('-----------------------------');
fprintf('\n x 信息熵 H_x=\n');
disp(H_x);                                 % x 信息熵
fprintf('-----------------------------');
fprintf('\n y 信息熵 H_y=\n');
disp(H_y);                                 % y 信息熵
fprintf('-----------------------------');
fprintf('\n x y的联合熵 H_xy=\n');
disp(H_xy);                                % x y的联合熵
I_xy=H_x+H_y-H_xy;                         % 平均互信息量
fprintf('-----------------------------');
fprintf('\n 平均互信息量 I_xy=\n');
disp(I_xy);
H_x_y=compute(P_x_y,P_xy);                 % 信道疑义度
fprintf('-----------------------------');
fprintf('\n 信道疑义度 H_x_y=\n');
disp(H_x_y);
H_y_x=compute(P_y_x,P_xy);                 % 燥声熵
fprintf('-----------------------------');
fprintf('\n 信道燥声熵 H_y_x=\n');
disp(H_y_x);
fprintf('Compute done !');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -