⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled.m

📁 Huffman编码
💻 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 + -