当前位置:网站首页>MATLAB實現Huffman編碼譯碼含GUI界面
MATLAB實現Huffman編碼譯碼含GUI界面
2022-07-07 11:49:00 【Matlab科研工作室】
1 簡介
在matlab中模擬C中鏈錶,利用複數運算,聯系具體字符和概率,每次找到最小概率的兩個字符對應的編號,依次記錄下來,最後根據奇偶碼的不同實現Huffman編碼.本算法新穎獨特,易於理解,編程.
2 部分代碼
function varargout = huffman_GUI(varargin)
% HUFFMAN_GUI M-file for huffman_GUI.fig
% HUFFMAN_GUI, by itself, creates a new HUFFMAN_GUI or raises the existing
% singleton*.
%
% H = HUFFMAN_GUI returns the handle to a new HUFFMAN_GUI or the handle to
% the existing singleton*.
%
% HUFFMAN_GUI('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in HUFFMAN_GUI.M with the given input arguments.
%
% HUFFMAN_GUI('Property','Value',...) creates a new HUFFMAN_GUI or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before huffman_GUI_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to huffman_GUI_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help huffman_GUI
% Last Modified by GUIDE v2.5 10-Jan-2014 18:20:43
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @huffman_GUI_OpeningFcn, ...
'gui_OutputFcn', @huffman_GUI_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before huffman_GUI is made visible.
function huffman_GUI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to huffman_GUI (see VARARGIN)
% Choose default command line output for huffman_GUI
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes huffman_GUI wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = huffman_GUI_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes during object creation, after setting all properties.
function xylj_CreateFcn(hObject, eventdata, handles)
% hObject handle to xylj (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function xylj_Callback(hObject, eventdata, handles)
% hObject handle to xylj (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of xylj as text
% str2double(get(hObject,'String')) returns contents of xylj as a double
% --- Executes on button press in dqxy.
function dqxy_Callback(hObject, eventdata, handles)
% hObject handle to dqxy (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[Filename Pathname]=uigetfile({'*.txt'},'請選擇文件'); %選擇文件框函數
str=[Pathname Filename]; %得到路徑和文件名
xinyuan=textread(str,'%s'); %以字符串的形式,讀入文本文件
xinyuan=xinyuan{:}; %將cell型數據轉換成char
set(handles.xylj,'string',str) %顯示信源的路徑
set(handles.xy,'string',xinyuan) %顯示信源
% --- Executes during object creation, after setting all properties.
function xy_CreateFcn(hObject, eventdata, handles)
% hObject handle to xy (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function xy_Callback(hObject, eventdata, handles)
% hObject handle to xy (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of xy as text
% str2double(get(hObject,'String')) returns contents of xy as a double
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in bm.
function bm_Callback(hObject, eventdata, handles)
% hObject handle to bm (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
clc; %清除command window
data=get(handles.xy,'String'); %讀入信源
data=uint8(data); %將信源轉化為uint8
[codeword_OK,simbolsout1,fout1,simbolsout2,fout2,zipped,info] = norm2huff(data); %編碼
%排序前
for i=1:length(fout1)
fout1str{i}=num2str(fout1(i)); %將排序之前的概率轉換成cell型數據,方便listbox使用
str1{i}=char(simbolsout1(i)-1); %將排序之前的碼元轉換成cell型數據,方便listbox使用,char將ASCII碼轉成字符
end
handles.str1=str1; %得到排序前碼元
handles.fout1str=fout1str; %得到排序前概率
%排序後
for i=1:length(fout2)
str2{i}=char(simbolsout2(i)-1); %將排序之後的碼元轉換成cell型數據,方便listbox使用,char將ASCII碼轉成字符
end
handles.str2=str2; %得到排序後碼元
%得到編碼
for i=1:length(codeword_OK)
codestr{i}=num2str(double(codeword_OK{i}));
codestr{i}=codestr{i}(find(codestr{i}~=' ')); %去掉字符串裏的空格,得到霍夫曼碼
end
handles.codestr=codestr; %保存霍夫曼碼
handles.zipped=zipped; %保存編碼的結果
handles.info=info;
guidata(hObject, handles); %更新handles結構體
% --- Executes on button press in myzl.
function myzl_Callback(hObject, eventdata, handles)
% hObject handle to myzl (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.xsmyzl,'Value',1)
set(handles.xsmyzl,'String',handles.str1);
% --- Executes during object creation, after setting all properties.
function xsmyzl_CreateFcn(hObject, eventdata, handles)
% hObject handle to xsmyzl (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: listbox controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
% --- Executes on selection change in xsmyzl.
function xsmyzl_Callback(hObject, eventdata, handles)
% hObject handle to xsmyzl (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns xsmyzl contents as cell array
% contents{get(hObject,'Value')} returns selected item from xsmyzl
error('input argument must be a uint8 vector')
end
%f=repmat(0,1,256);
% 掃描向量
len=length(vector);
for index=0:255; %注意向量的索引參數是從0開始的
f(index+1)=sum(vector==uint8(index));
end
%
3 仿真結果
4 參考文獻
[1]吳記群, 李雙科. Matlab下實現huffman編碼[J]. 中國科技信息, 2006(19):2.
博主簡介:擅長智能優化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。
部分理論引用網絡文獻,若有侵權聯系博主删除。
边栏推荐
- How to add aplayer music player in blog
- Automated testing framework
- Solve the problem that vscode can only open two tabs
- Le Cluster kubernets en cours d'exécution veut ajuster l'adresse du segment réseau du pod
- [encapsulation of time format tool functions]
- [texture feature extraction] LBP image texture feature extraction based on MATLAB local binary mode [including Matlab source code 1931]
- The annual salary of general test is 15W, and the annual salary of test and development is 30w+. What is the difference between the two?
- R language Visual facet chart, hypothesis test, multivariable grouping t-test, visual multivariable grouping faceting boxplot, and add significance levels and jitter points
- Verilog realizes nixie tube display driver [with source code]
- C#中在路径前加@的作用
猜你喜欢
SwiftUI Swift 内功之如何在 Swift 中进行自动三角函数计算
MATLAB实现Huffman编码译码含GUI界面
OneDNS助力高校行业网络安全
一起探索云服务之云数据库
浙江大学周亚金:“又破又立”的顶尖安全学者,好奇心驱动的行动派
STM32F1与STM32CubeIDE编程实例-MAX7219驱动8位7段数码管(基于SPI)
禁锢自己的因素,原来有这么多
Le Cluster kubernets en cours d'exécution veut ajuster l'adresse du segment réseau du pod
【全栈计划 —— 编程语言之C#】基础入门知识一文懂
Automated testing framework
随机推荐
Android interview knowledge points
【系统设计】指标监控和告警系统
【滤波跟踪】基于matlab扩展卡尔曼滤波EKF和无迹卡尔曼滤波UKF比较【含Matlab源码 1933期】
禁锢自己的因素,原来有这么多
[question] Compilation Principle
SwiftUI 4 新功能之掌握 WeatherKit 和 Swift Charts
Talk about SOC startup (VI) uboot startup process II
[extraction des caractéristiques de texture] extraction des caractéristiques de texture de l'image LBP basée sur le mode binaire local de Matlab [y compris le code source de Matlab 1931]
Automated testing framework
Flet教程之 15 GridView 基础入门(教程含源码)
Briefly introduce closures and some application scenarios
【神经网络】卷积神经网络CNN【含Matlab源码 1932期】
QT | multiple windows share a prompt box class
Unsupervised learning of visual features by contracting cluster assignments
超标量处理器设计 姚永斌 第9章 指令执行 摘录
Mastering the new functions of swiftui 4 weatherkit and swift charts
STM32入门开发 NEC红外线协议解码(超低成本无线传输方案)
请查收.NET MAUI 的最新学习资源
‘module‘ object is not callable错误
Leetcode - interview question 17.24 maximum submatrix