香农编码的 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 机器学习框架对比

    机器学习框架对比2.1主流深度学习框架对比各个开源框架在Github上的数据统计数据统计截止于2017.07.15可以看到各大主流框架基本都支持Python,目前Python在科学计算和数据挖掘领域可以说是独领风骚。虽然有来自R、Julia等语言的竞争压力,但是Python的各种库实在是太完善了,Web开发、数据可视化、数据预处理、数据库连接,爬虫等无所不能,有一个完美的生态环境。仅

    2022年6月16日
    30
  • 大神的算法学习之路

    大神的算法学习之路我的算法学习之路关于严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的。原文链接:http://zh.lucida.me/blog/on-learning-algorithms/原文作者:Lucida这篇文章讲了什么?我这些年学习数据结构…

    2022年6月19日
    34
  • 达梦数据库安装及配置图文教程 附DM8安装包

    达梦数据库安装及配置图文教程 附DM8安装包达梦数据库的安装欢迎使用新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用你好!这是你第一次使用M…

    2022年5月28日
    62
  • 理解希尔排序的排序过程是_希尔排序原理

    理解希尔排序的排序过程是_希尔排序原理1,有关插入排序(1)插入排序的基本方法是:每步将一个待排序的元素,按其排序码大小插入到前面已经排好序的一组元素的适当位置上去,直到元素全部插入为止。(2)可以选择不同的方法在已经排好序的有序数据表中寻找插入位置,依据查找方法的不同,有多种插入排序方法。下面是常用的三种。1>直接插入排序2>折半插入排序3>希尔排序(3)直接插入排序基本思想:当插入第i(i>1)个元素时,前

    2022年10月20日
    2
  • 获取股票历史数据和当前数据的API

    获取股票历史数据和当前数据的API关键字:股票,stock,API,接口1.获取股票当前数据新浪数据接口:http://hq.sinajs.cn/list={code}。{code}替换为股票代码,沪市股票代码加前缀sh,深市股票代码加前缀sz。例如:在浏览器地址栏输入:http://hq.sinajs.cn/list=sh601766,sz000002,得到如下结果:varhq_str_sh601766=”中国中车,10.280,10.210,10.310,10.380,10.160,10.300,10.310,.

    2022年6月24日
    45
  • Java多线程常用面试题(含答案,精心总结整理)

    Java多线程常用面试题(含答案,精心总结整理)Java并发编程问题是面试过程中很容易遇到的问题,提前准备是解决问题的最好办法,将试题总结起来,时常查看会有奇效。现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。核心:thread.Jo

    2022年7月15日
    22

发表回复

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

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