當前位置:成語大全網 - 漢語詞典 - Matlab作業字典編碼

Matlab作業字典編碼

裏面有壹段話我幾個小時也看不懂。

%霍夫曼編碼的MATLAB實現(基於0,1編碼);

clc

清晰;

A=[0.4,0.2,0.15,0.1,0.1,0.05];%原始概率系列

% A = A/總和(A);

% A = fliplr(sort(A));%按降序排列

t = A;

[m,n]=大小(A);

b =零(n,n-1);%空編碼表(矩陣)

對於i=1:n

B(i,1)= T(I);%生成編碼表的第壹列

結束

r=B(i,1)+B(i-1,1);%最後兩個元素相加

t(n-1)= r;

t(n)= 0;

T = fliplr(sort(T));

t = n-1;

對於j=2:n-1%生成編碼表的其他列。

對於i=1:t

B(i,j)= T(I);

結束

k = find(T = = r);

B(n,j)= K(end);%從第二列開始,每列的最後壹個元素記錄該列中特征元素的位置。

r=(B(t-1,j)+B(t,j));%最後兩個元素相加

t(t-1)= r;

t(t)= 0;

T = fliplr(sort(T));

t = t-1;

結束

B%輸出編碼表

D1 = sym('[0,1]);%對最後壹列中的元素進行編碼。

END = END 1;

t = 3;

d = 1;

j=2,i=1: 2

// -

//從這裏開始我就看不懂了。可以幫我註釋壹下嗎?而且這個算法有錯嗎?我覺得有問題。

對於j=n-2:-1:1%從倒數第二列開始對每列中的元素進行編碼。

對於i=1:t-2

如果我& gt1。B(i,j)==B(i-1,j)

d = d+1;

其他

d = 1;

結束

B(B(n,j+1),j+1)=-1;

temp=B(:,j+1);

x=find(temp==B(i,j))

END(I)= END1(x(d));

結束

y=B(n,j+1);

END(t-1)=[char(END1(y)),' 0 '];

END(t)=[char(END1(y)),' 1 '];

t = t+1;

END 1 = END;

結束

結束

//上面壹段求助,看了幾個小時也看不懂。請幫我每個評論。

%排名後的原始概率序列

結束%編碼結果

對於i=1:n

[a,b]= size(char(END(I)));

l(I)= b;

結束

Avlen=sum(L.*A)%平均代碼長度

h 1 = log2(A);

H=-A*(H1')%熵

P=H/avlen%編碼效率