huffman編碼的MATLAB遞迴實現

2021-07-03 03:14:00 字數 926 閱讀 3283

huffman.m:

%huffman編碼的遞迴實現。

%輸入:input:第一列為值,第二列為各個值的概率。

% codein,輸入即可,沒用,作遞迴時用到。

%輸出:output:排序後的input。

% code:對應p每行的huffman編碼。

% key:沒用,設為~即可,作遞迴時用到。

%參看測試**huffmantest.m。

function [ output, code, key ] = huffman( input, codein )

[sp,~] = size(input);

if sp==1

code = codein;

key = 1;

output = input;

return;

end[~,index] = sort(input(:,2),'descend');

output = input(index,:);

key = find(index==sp);

if ~iscell(codein)

codein = cell(sp,1);

else

codeintemp = codein;

for t = 1:sp

codein = codeintemp;

endendptemp = output;

ptemp(sp-1,:) = ptemp(sp-1,:)+ptemp(sp,:);

[~, codetemp, keytemp] = huffman(ptemp(1:sp-1,:),codein);

code = codetemp;

code(keytemp) = ;

code=[codetemp,'0']

Huffman樹與Huffman編碼

一.哈夫曼樹概念 路徑 祖先到節點之間的分支構成一條通往節點的路徑 路徑長度 路徑上分支的數目稱為路徑長度 節點的權 給樹中節點所設的物理意義的值 節點帶權路徑長度 從根到該點路徑長度與該點權值的乘機 huffman樹就是所有樹中每點帶權路徑加和最短的樹。二.huffman樹構造步驟 1.根據每個點...

Huffman樹與Huffman編碼

huffman tree簡介 赫夫曼樹 huffman tree 又稱最優二叉樹,是一類帶權路徑長度最短的樹。假設有n個權值,如果構造一棵有n個葉子節點的二叉樹,而這n個葉子節點的權值是,則所構造出的帶權路徑長度最小的二叉樹就被稱為赫夫曼樹。這裡補充下樹的帶權路徑長度的概念。樹的帶權路徑長度指樹中所...

huffman樹和huffman編碼

huffman樹和huffman編碼 include include include include define overflow 1 typedef struct htnode,huffmantree typedef char huffmancode void select huffmantre...