香农编码的 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中相应输入概率的编码结果

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • WinExec、ShellExecute和CreateProcess

    WinExec、ShellExecute和CreateProcess有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。CreateProcess因为使用复杂,比较少用。    WinExec主要运行EXE文件。  ⑴ 函数原型: UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);   ⑵ 参数:   lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程…

  • charles乱码怎么解决_抓包精灵ssl乱码

    charles乱码怎么解决_抓包精灵ssl乱码前言当使用Charles抓包时,发现数据都是乱码,这时需要安装证书解决办法1.点击charles窗口,点击左上角Help->SSLProxying→InstallCharles

  • Arduino单片机控制步进电机

    Arduino单片机控制步进电机步进电机是一种将电脉冲转化为角位移的执行机构。当步进电机的驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步长)。通过控制脉冲个数来控制角位移量,达到准确定位的目的;通过控制脉冲频率来控制电机转动的速度和加速度,达到调速的目的。下面是连接图,右上角是Arduino与驱动器的连线,VCC、脉冲、方向、使能是单片机提供的4个引脚,字面意思是对于驱动器而言,与Ar…

  • JAVA中运算符的详讲

    JAVA中运算符的详讲

  • Linux下视频流媒体服务器搭建详解「建议收藏」

    Linux下视频流媒体服务器搭建详解「建议收藏」目标用于搭建内网流媒体服务器支持视频的点播。背景用于支持培训网站中视频点拨功能,在培训网站总体方案中需要加入流媒体服务器,用于存储和传输视频资源。相关概念流媒体流媒体(StreamingMedia)是一种新兴的网络传输技术,在互联网上实时顺序地传输和播放视/音频等多媒体内容的连续时基数据流。流媒体技术包括流媒体数据采集、视/音频编解码、存储、传输、播放等领域。流媒体系统组成包括编码工具、流媒体数…

    2022年10月20日
  • 微信小程序入门文档下载_小程序开发教程全集免费

    微信小程序入门文档下载_小程序开发教程全集免费一基本介绍微信专门为小程序开发了一个ide叫做微信开发者工具最新一版的微信开发者工具,把微信公众号的调试开发工作也集成了进去,可以更换开发模式。https://mp.weixin.qq.com

发表回复

您的电子邮箱地址不会被公开。

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