MATLAB 课设.docx
《MATLAB 课设.docx》由会员分享,可在线阅读,更多相关《MATLAB 课设.docx(22页珍藏版)》请在冰豆网上搜索。
MATLAB课设
《MATLAB实践》
课程设计
学生姓名:
张陶
学号:
20140610100212
专业班级:
14通信工程(卓越)
指导教师:
邹丹
2015年12月30日
目录
第一章matlab软件简介2
第二章设计目的.3
第三章具体设计............................................................................5
第四章运行结果分析....................................................................18
第五章课程设计心得......................................................................19
一、Matlab软件简介
MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用 MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB 成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB的应用:
利用MATLAB可以进行以下各种工作:
·数值计算
·数值和符号计算
·工程和科学绘图
·控制系统的设计与仿真
·数字图像处理
·数字信号处理
·通讯系统设计与仿真
·财务与经融工程
二、设计目的
综合运用matlab的工具箱实现图像处理的GUI程序设计,利用matlab图像处理工具箱,实现简单的图像处理的UI界面设置。
三、总体设计
软件总体的设计界面布局如上图所示,主要分为两个部分:
显示区和操作区。
显示区:
显示载入的原图像以及经过操作后的图像。
操作区:
通过各种菜单实现对图像相应的操作。
从截图中可以看出,界面的下半部分为操作区,有“灰度图像”“退出”“旋转图像”“调节对比度”等一系列按钮,界面的上半部分是图像显示区域,分为“原图像显示”和“处理后图像显示”。
界面的最上方是菜单栏部分,菜单栏里包含了“文件”“编辑”“背景音乐”等菜单,通过下拉的设计方式,可以选择相应的操作。
在设计的过程中,为了使界面显得简约,特地利用了菜单栏下拉的功能,点击对应的功能按钮,对用的操作按钮就会在界面的下半部分显示出来,使得界面更加稀松,看着舒服。
四、具体设计
1.菜单栏的设计
通过MenuEditor
创建如下菜单,通过以下菜单来控制显示或隐藏功能按键
以“编辑”菜单中的“图形旋转”为例说明功能键的隐藏与显示
实现程序如下所示:
functionturing_Callback(hObject,eventdata,handles)
%hObjecthandletoturing(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
set(handles.pushbutton15,'Visible','on');
ifstrcmp(get(gcbo,'Checked'),'on')
set(handles.pushbutton15,'Visible','on');
set(gcbo,'Checked','off');
set(handles.pushbutton15,'Visible','off');
else
set(gcbo,'Checked','on');
end
改程序段通过控制“图形旋转”功能键的Visiable的属性‘on‘或者’off‘和“图像旋转”菜单键的checked的属性’on‘或者’off‘来实现功能键的隐藏或者显示。
其他功能键的代码类似。
2.图像文件的读取和保存
利用“文件”菜单下的“打开文件”“另存为”分别实现图像文件的开和保存。
实现程序如下:
打开文件:
functionopenfile_Callback(hObject,eventdata,handles)
%hObjecthandletoopenfile(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'载入图像');
ifisequal(filename,0)|isequal(pathname,0)
errordlg('没有选中文件',’出错');
return;
else
file=[pathname,filename];
globalS
S=file;
x=imread(file);
set(handles.axes1,'HandleVisibility','ON');
axes(handles.axes1);
imshow(x);
保存文件:
functionsavefiles_Callback(hObject,eventdata,handles)
%hObjecthandletosavefiles(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
[sfilename,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存图像文件','untitled.jpg');
if~isequal([sfilename,sfilepath],[0,0])
sfilefullname=[sfilepath,sfilename];
imwrite(handles.img,sfilefullname);
else
msgbox('您按了取消键',’保存失败');
end
其中,通过uigetfile选择读取图像文件的路径和格式,imread,imshow,axes函数将图像文件显示到指定的位置上。
通过uiputfile读取文件和文件的保存格式,imwrite实现文件的保存。
3.UI界面的退出
在设计这个程序是,加入了“退出”的功能键,用户可以通过该按钮直接退出程序。
实现程序如下:
functionexit_Callback(hObject,eventdata,handles)
%hObjecthandletoexit(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
clc;
closeall;
close(gcf);
clear;
4.图像任意比例的对比度调整并显示
在菜单栏中选中“对比度调节”后再下方的操作区就会出现“对比度调节”的控制按钮,点击一下就会弹出“输入参数”的界面,只要输入参数确定后就可以在右边的显示去得到想要的图像了。
程序实现如下:
functionpushbutton14_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton14(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
globalT
axes(handles.axes2);
T=getimage;
prompt={'输入参数:
'};
defans={'1'};
p=inputdlg(prompt,'input',1,defans);
p1=str2num(p{1});
f=immultiply(handles.img,p1);
imshow(f);
handles.img=f;
guidata(hObject,handles);
其中,prompt函数用于调用对话框,用户填入数据后通过immultily函数处理并显示。
5.图像任意亮度的调节
类似于调节对比度一样,用户同样需要输入相应的参数。
程序实现如下:
functionpushbutton13_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton13(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
globalT
axes(handles.axes2);
T=getimage;
prompt={'调整倍数'};
defans={'1'};
p=inputdlg(prompt,'input',1,defans);
p1=str2num(p{1});
y=imadjust(handles.img,[],[],p1);
imshow(y);
handles.img=y;
guidata(hObject,handles);
该程序主要通过imadjust函数实现,其他方面的实现与对比度相同。
6.图像的旋转
图像旋转使我们经常使用的一个功能,但是一些看图软件只能实现90度的旋转,本设计突破了这个局限,使得图像能够任意角度的旋转,这里用到了imrotate函数。
程序实现如下:
functionpushbutton15_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton15(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
globalT
axes(handles.axes2);
T=getimage;
prompt={'旋转角度:
'};
defans={'0'};
p=inputdlg(prompt,'input',1,defans);
p1=str2num(p{1});
f=imrotate(handles.img,p1,'bilinear','crop');
imshow(f);
handles.img=f;
guidata(hObject,handles);
在菜单栏中选择“图像旋转”的选项,出现“图像旋转”的按钮,单击后就会出现需要输入参数的界面,与之前类似,输入参数就会在显示区得到旋转后的图片。
Imrotate函数用于旋转的实现,p1是旋转的角度大小。
7.背景颜色调整
在本次设计中加入了背景颜色,在菜单栏中选中颜色一栏就可以显示出相应的控制键。
程序实现如下:
functionpushbutton11_Callback(hObject,eventdata,handles)
set(gcf,'color','green');
该段程序调整背景颜色为蓝色
functionpushbutton12_Callback(hObject,eventdata,handles)
set(gcf,'color','blue');
该段程序调整背景颜色为绿色
8.背景音乐的实现
该功能主要分为“打开音乐文件”“播放”“暂停/继续”“停止”四个部分,打开音乐文件类似于之前的打开图像文件,播放的功能通过play函数实现,用户在暂停播放音乐文件后还可以通过继续播放的功能从暂停出继续播放,停止播放后需要重新打开文件。
程序实现如下:
打开音乐文件:
functionUntitled_9_Callback(hObject,eventdata,handles)
%hObjecthandletoUntitled_9(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
globalmfilepath
try
[mfnamempnamemindex]=uigetfile('*.wav','choose?
music');
ifmindex
mfilepath=[mpnamemfname];
set(handles.edit1,'string',mfilepath);
end
catch
%msgbox('´íÎó','NOTICING','error');
end
通过uigetfile函数获取文件的格式,mfilepath获取文件路径。
播放音乐:
functionUntitled_6_Callback(hObject,eventdata,handles)
%hObjecthandletoUntitled_6(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
globalmfilepathplayersign
sign='false';
try
ifmfilepath~=0
[data,Fs,nbits]=wavread(mfilepath);
else
try
[data,Fs,nbits]=wavread('相见恨晚.wav');
catch
%msgbox('错误','NOTICING');
end
end
player=audioplayer(data,Fs,nbits);
play(player);
sign='true';
set(handles.Untitled_6,'string','pause','Enable','on');
catch
%msgbox('´íÎó','NOTICING');
end
在获取文件之后,play函数用于播放音乐文件,需要申明的是这里播放的音乐格式是wav格式,MP3格式无法播放。
暂停/继续程序实现:
functionUntitled_10_Callback(hObject,eventdata,handles)
%hObjecthandletoUntitled_10(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
globalplayer
ifstrcmp(get(gcbo,'Checked'),'off')
pause(player);
set(gcbo,'Checked','on');
else
set(gcbo,'Checked','off');
resume(player);
end
该部分用到了检测按键是否按下的Checked的属性,若Checked的属性为off,则表示按键按下,执行暂停的功能,否则执行继续播放的功能。
停止播放程序实现:
functioncutdown_Callback(hObject,eventdata,handles)
%hObjecthandletocutdown(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
globalplayersign
try
stop(player);
sign='false';
set(handles.cutdown,'string','pause','Enable','off');
catch
%msgbox('error','NOTICING');
end
一旦按键按下,就直接退出音乐播放,需要重新打开文件才能再次播放。
8.低通滤波处理
实现程序如下:
functionpushbutton18_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton18(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
axes(handles.axes2);
y1=handles.img;
f=double(y1);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
nn=2;
d0=50;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
y2=ifft2(result);
y3=uint8(real(y2));
imshow(y3);
9.高通滤波处理
实现程序如下:
functionpushbutton19_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton19(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
axes(handles.axes2);
x=(handles.img);
f=double(x);%Êý¾ÝÀàÐÍת»»
k=fft2(f);%¸µÀïÒ¶±ä»»
g=fftshift(k);%ת»»Êý¾Ý¾ØÕó
[M,N]=size(g);
nn=2;
d0=25;%½ØֹƵÂÊ25
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);%¼ÆËã¸ßͨÂ˲¨Æ÷´«µÝº¯Êý
ifd<=d0
h=0;
elseh=1;
end
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
y2=ifft2(result);
y3=uint8(real(y2));
imshow(y3);
%--------------------------------------------------------------------
functionUntitled_12_Callback(hObject,eventdata,handles)
%hObjecthandletoUntitled_12(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
set(handles.pushbutton19,'Visible','on');
ifstrcmp(get(gcbo,'Checked'),'on')
set(handles.pushbutton19,'Visible','on');
set(gcbo,'Checked','off');
set(handles.pushbutton18,'Visible','off');
else
set(gcbo,'Checked','on');
end
10.灰度图像实现
灰度图像的按键就在操作区,在载入图像文件之后就可以执行图像灰度化。
程序实现如下:
functionchangeable_