📄 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 + -