香农编码的 matlab 实现「建议收藏」

香农编码的 matlab 实现「建议收藏」closeall;clearall;clc;%香农编码matlab实现p=[0.50.190.190.070.05]%输入概率n=length(p);y=fliplr(sort(p));D=zeros(n,4);D(:,1)=y’;fori=2:nD(1,2)=0;D(i,2)=D(i-1,1)+D(i-1,2)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

close all;clear all;clc;
% 香农编码matlab实现
p = [0.5 0.19 0.19 0.07 0.05] %输入概率
n = length(p);
y = fliplr(sort(p));
D = zeros(n,4);
D(:,1) = y';
for i = 2:n
    D(1,2) = 0;
    D(i,2) = D(i-1,1)+D(i-1,2);
end
for i = 1:n
    D(i,3) = -log2(D(i,1));
    D(i,4) = ceil(D(i,3));
end
D
A = D(:,2)';
B = D(:,4)';
for j=1:n
    C=binary1(A(j),B(j))
end
function [C] = binary1(A,B)
C=zeros(1,B);
temp = A;
for i=1:B
    temp = temp*2;
    if temp >= 1
        temp = temp - 1;
        C(1,i) = 1;
    else
        C(1,i) = 0;
    end
end
end

输出结果:

p =

    0.5000    0.1900    0.1900    0.0700    0.0500

D =

    0.5000         0       1.0000    1.0000
    0.1900    0.5000    2.3959    3.0000
    0.1900    0.6900    2.3959    3.0000
    0.0700    0.8800    3.8365    4.0000
    0.0500    0.9500    4.3219    5.0000

C =

     0

C =

     1     0     0

C =

     1     0     1

C =

     1     1     1     0

C =

     1     1     1     1     0

D中第一列表示输入概率,第二列表示累加概率,第四列表示对应输入概率的编码长度

C中按顺序对应D中相应输入概率的编码结果

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195123.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月23日 下午2:15
下一篇 2025年10月23日 下午2:43


相关推荐

  • MAC读写NTFS移动硬盘的解决办法

    MAC读写NTFS移动硬盘的解决办法  一个NTFS的移动硬盘,在MAC上能读不能写。大哥你能读为什么不能写?况且NTFS多少年了你为什么不支持?怎么办?下载Mounty11 双击,再点击山岭的图标。 插入移动硬盘。  运气好的话就能以读写模式加载。运气不好呢?会提示失败。有人说运行chkdsk/f,吾试了依然不行。换了一个LINUX格式的U盘,顺利写入。…

    2022年6月21日
    26
  • 深度学习中Dropout原理解析「建议收藏」

    深度学习中Dropout原理解析「建议收藏」1.Dropout简介1.1Dropout出现的原因在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。过拟合是很多机器学习的通病。如果模型过拟合,那么得到的模型几乎不能用。为了解决过拟合问题,一…

    2022年6月14日
    43
  • 使用Pycharm安装Python第三方库

    使用Pycharm安装Python第三方库除了使用 easy insatll 和 pip 工具安装 Python 第三方库外还可以使用 pycharm 安装 Python 第三方库 步骤如下 1 打开 pycharm 点击 File 再点击 settings2 点击 settings 之后再点击 project 下面的 projectInter 将会出现如下界面 3 接下来点击上面界面右上角的 将会出现如下界面 然后在搜索框中搜索

    2026年3月27日
    3
  • systemctl 详解

    systemctl 详解Systemd 并不是一个命令 而是一组命令 涉及到系统管理的方方面面 一 命令 1 1systemctlsy 是 Systemd 的主命令 用于管理系统 重启系统 sudosystemct 关闭系统 切断电源 sudosystemct CPU 停止工作 sudosystemct 暂停系统 sudosystemct 让系统进入冬眠状态 sudosystemct

    2026年3月18日
    2
  • Android日志分析工具的开发介绍

    Android日志分析工具的开发介绍Android 日志分析工具的开发介绍一 软件下载地址 技术交流 用于公布软件最新版本信息和相关技术交流 V3 6 3 http download csdn net detail u0 V3 5 3 http download csdn net detail u0

    2026年3月20日
    2
  • tcp/ip和tcp协议(路由选择协议)

    一图看完本文一、计算机网络体系结构分层计算机网络体系结构分层计算机网络体系结构分层不难看出,TCP/IP与OSI在分层模块上稍有区别。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”。二、TCP/IP基础1.TCP/IP的具体含义从字面意义上讲,有人可能会认为…

    2022年4月10日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号