?? untitled.m
字號:
clear
N=input('請輸入信源符號的個數:') ;
for i=1:N
%data(1).name=input('請輸入各信源符號的名稱:');
data(i).p=input('請輸入各信源符號發生的概率:');
end
for i=1:N
pp(i)=data(i).p;
data(i).imap=i; %各符號在編碼過程中的指針
data(i).Code=''; %各符號的編碼結果
end
for j = 1:N % N——信源符號的個數
for i = 1:N - j
if (pp(i) > pp(i + 1))
fT = pp(i);
pp(i) = pp(i + 1);
pp(i + 1) = fT;
for k = 1:N
if data(k).imap == i
data(k).imap = i + 1;
elseif data(k).imap == i + 1
data(k).imap = i;
end
end
end
end
end
p=pp;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%// 計算哈夫曼編碼表
%// 開始編碼
for i=1:N-1
for k = 1:N
if data(k).imap== i
data(k).Code = strcat('1',data(k).Code);
elseif (data(k).imap== i + 1)
data(k).Code = strcat('0',data(k).Code);
end
end
p(i + 1) = p(i + 1)+p(i);
for k = 1:N
if (data(k).imap == i)
data(k).imap = i + 1;
end
end
for j = i + 1:N-1
if p(j) >p(j + 1)
fT =p(j);
p(j) = p(j + 1);
p(j + 1) = fT;
for k = 1:N
if (data(k).imap == j)
data(k).imap = j + 1;
elseif (data(k).imap == j + 1)
data(k).imap = j;
end
end
end
end
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -