zoukankan      html  css  js  c++  java
  • matlab huffman k

    huffman.m

    function [h,l]=huffman(p)

    if (length(find(p<0))~=0)
    error('Not a prob,negative component');
    end
    if (abs(sum(p)-1)>10e-10)
    error('Not a prob.vector,component do not add to 1')
    end

    n=length(p);
    q=p;
    m=zeros(n-1,n);
    for i=1:n-1
    [q,l]=sort(q);
    m(i,:)=[l(1:n-i+1),zeros(1,i-1)];
    q=[q(1)+q(2),q(3:n),1];
    end

    for i=1:n-1
    c(i,:)=blanks(n*n);
    end

    c(n-1,n)='0';
    c(n-1,2*n)='1';
    for i=2:n-1
    c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))...
    -(n-2):n*(find(m(n-i+1,:)==1)));
    c(n-i,n)='0';
    c(n-i,n+1:2*n-1)=c(n-i,1:n-1);
    c(n-i,2*n)='1';
    for j=1:i-1
    c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,...
    n*(find(m(n-i+1,:)==j+1)-1)+1:n*find(m(n-i+1,:)==j+1));
    end
    end

    for i=1:n
    h(i,1:n)=c(1,n*(find(m(1,:)==i)-1)+1:find(m(1,:)==i)*n);
    ll(i)=length(find(abs(h(i,:))~=32));
    end
    l=sum(p.*ll);

    test.m

    clear all,clc
    p = [0.3 ,0.1, 0.21, 0.09, 0.05, 0.25];
    [h,l] = huffman(p)

    output:


    h =

    11
    010
    00
    0111
    0110
    10


    l =

    2.3800

  • 相关阅读:
    lombok 简化 Java 代码
    java集合之ArrayList
    java集合概述
    NOIP 2017 逛公园
    NOIP 2017 时间复杂度
    NOIP 2017 奶酪
    NOIP 2013 货车运输
    NOIP 2012 疫情控制
    NOIP 2015 运输计划
    NOIP2014 联合权值
  • 原文地址:https://www.cnblogs.com/ksheep/p/2742648.html
Copyright © 2011-2022 走看看