要将用Matlab语言编写的函数文件编译成可独立执行的*.exe文件(即可脱离Matalab环境的执行程序),首先要安装和配置好Matlab Compiler,一般来说,在安装Matlab时就已经安装了相应版本的Matlab Compiler。只是不同版本的Matlab,其编译器的使用方法有一定的差异,这一点要引起一定的注意。
在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:
Mbuild –setup
然后根据提示执行相应的操作,使用者可根据自己计算机中现有编译器的情况选择合适的编译器,如VC++ 6.0、VC++7.0、Bland C的编译器等,目前Matlab好象还不支持VC++8.0(我计算机安装的就是VC++2005,Matlab就无法识别)。当然,如果你的计算机里根本就没有安装其他任何语言的编译器,也可选择Matlab自带的Lcc编译器,其实这个编译器对大多数用户已经够用了(我就是选择的Matlab自带的Lcc编译器)。
配置好编译器后,自然就是对自己编写的M文件进行编译了。 将M文件编译为独立可执行文件的语法是: >>mcc –m fun1.m fun2.m…..
其中fun1就是最后的可执行文件的名称。 3、通过本次课程设计,使自己对MATLAB GUI设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。
九、 参考文献
【1】 郑阿奇,曹戈,赵阳.MATLAB实用教程[M].北京:电子工业出版社
【2】 程卫国,冯峰,姚东,徐听.MATLAB5.3应用指南[M].北京:人民邮电出
版社
【3】 陈杨.MATLAB 6.X图像编程与图像处理[M].西安:西安电子科技大学出版
社
17
十、 附录
function varargout = two(varargin)
% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @two_OpeningFcn, ...
'gui_OutputFcn', @two_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(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 erzhi is made visible. function two_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
--------------------------------------------------------- %接下来是菜单的程序
--------------------------------------------------------- function handles)
-------------------------------------------------------- %文件打开程序
function open_Callback(hObject, eventdata, handles)
[name,path]=uigetfile({'*.bmp'},'载入图像'); if isequal(name,0)|isequal(path,0) errordlg('没有选中文件','出错');
file_Callback(hObject,
eventdata,
= =
=
struct('gui_Name',
return; else
x=imread([path,name]); axes(handles.axes1); imshow(x); handles.img=x; handles.noise_img=x; guidata(hObject,handles) end
--------------------------------------------------- function save_Callback(hObject, eventdata, handles)
%文件保存
[filename,pathname] = uiputfile('*.bmp','图片保存为');
if isequal([filename,pathname],[0,0]) errordlg('没有保存','出错'); return; else
file=strcat(pathname,filename); (handles.axes2); i=getimage(gca); imwrite(i,file); end
----------------------------------------------------- function handles)
clc; close all; close(gcf);
--------------------------------------------------------- %编辑菜单的程序
------------------------------------------------------ function handles)
------------------------------------------------- function huidu_Callback(hObject, eventdata, handles)
%灰度处理 axes(handles.axes2); if isrgb(handles.img)
y=rgb2gray(handles.img); %RGB??????????
edit_Callback(hObject,
eventdata,
exit_Callback(hObject,
eventdata,
18
imshow(y); else
msgbox('这已经是灰度图像','转换失败'); end
------------------------------------------------------ function liangdu_Callback(hObject, eventdata, handles)
%亮度处理
prompt={'输入参数1','输入参数2','输入gamma'};
defans={'[0 0.7]','[0 1]','1'};
p=inputdlg(prompt,'输入参数',1,defans); p1=str2num(p{1}); p2=str2num(p{2}); p3=str2num(p{3}); gamma=p3; x=(handles.img);
y=imadjust(x,p1,p2,gamma); axes(handles.axes2); imshow(y);
------------------------------------------------------ function jietu_Callback(hObject, eventdata, handles)
%截图
set(handles.axes2,'HandleVisibility','ON'); axes(handles.axes2); y=imcrop(handles.img); imshow(y); handles.Timage=y;
------------------------------------------------------ function fangda_Callback(hObject, eventdata, handles)
------------------------------------------------------ function lingjz_Callback(hObject, eventdata, handles)
%邻近插值放大 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'2'};
p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});
y=imresize(handles.img,p1,'nearest'); %最近邻插值法放大
imshow(y);
------------------------------------------------------ function eventdata, handles)
%双线放大 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'2'};
p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});
y=imresize(handles.img,p1,'bilinear'); %最近邻插值法放大
imshow(y);
------------------------------------------------ function eventdata, handles)
%双三次放大 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'2'};
p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});
y=imresize(handles.img,p1,'bicubic'); imshow(y);
------------------------------------------------------- function suoxiao_Callback(hObject, eventdata, handles)
%邻近插值缩小 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'0.2'};
p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});
y=imresize(handles.img,p1,'nearest');
%最近邻插值法缩小
imshow(y);
------------------------------------------------------ function eventdata, handles)
%双线性缩小 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'0.2'};
p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});
shuangxian_Callback(hObject, shuangsanci_Callback(hObject, shuangxianfa_Callback(hObject,
19
y=imresize(handles.img,p1,'bilinear'); %最近邻插值法缩小
imshow(y);
--------------------------------------------------------
function
shuangsancisuox_Callback(hObject,
eventdata, handles)
%双三次缩小 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'0.2'};
p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});
y=imresize(handles.img,p1,'bicubic'); imshow(y);
------------------------------------------------------ function eventdata, handles)
------------------------------------------------------- function updown_Callback(hObject, eventdata, handles)
%上下翻转 axes(handles.axes2); x=(handles.img); if isrgb(handles.img) for k=1:3
y(:,:,k)=flipud(x(:,:,k));%上下翻转函数 end imshow(y); else
x=(handles.img); y=flipud(x); imshow(y); end
--------------------------------------------------------- function leftright_Callback(hObject, eventdata, handles)
%左右翻转 axes(handles.axes2); if isrgb(handles.img) x=(handles.img); for k=1:3
y(:,:,k)=fliplr(x(:,:,k));%左右翻转函数 end imshow(y);
xuanzhuan_Callback(hObject,
else
x=(handles.img); y=fliplr(x); imshow(y); end
------------------------------------------------------ function zeft90_Callback(hObject, eventdata, handles)
%左转90度 axes(handles.axes2); x=(handles.img);
y=imrotate(x,90); imshow(y);
------------------------------------------------------- function right90_Callback(hObject, eventdata, handles)
%右转90度 axes(handles.axes2); x=(handles.img);
y=imrotate(x,-90); imshow(y);
------------------------------------------------------ function other_Callback(hObject, eventdata, handles)
%任意角度旋转 axes(handles.axes2); prompt={'输入参数1:'}; defans={'30'};
p=inputdlg(prompt,'输入参数',1,defans); p1=str2num(p{1});
y=imrotate(handles.img,p1); imshow(y);
----------------------------------------------------- function handles)
%加入高斯噪声 axes(handles.axes2);
prompt={'输入参数1:','输入参数2'}; defans={'0','0.02'};
p=inputdlg(prompt,'输入参数',1,defans); p1=str2num(p{1}); p2=str2num(p{2});
y=imnoise(handles.img,'gaussian',p1,p2); imshow(y);
gs_Callback(hObject,
eventdata,
20