matlabGUI学习笔记
- 格式:doc
- 大小:17.50 KB
- 文档页数:5
学习好资料 欢迎下载
Matlab GUI学习笔记
任务一:创建一个简单的GUI
New--->GUI--->名称及保存地址
拖动要添加的组件至界面,双击界面的任意地方修
改界面的颜色等属性(property inspector)
任务二:按钮的使用,图片读取,高分辨率
1.鼠标拖动改变按钮位置及大小
2.右击按钮---》property inspector
可以更改按钮上的文字特征及按钮底色等
3.右击按钮---》viewcallbacks--->callback--->编写函数
建立按钮与实际操作之间的关系
例如:建立读取文图片按钮
[filename,pathname]=...
uigetfile({‘*.jpg’;’*.bnp’;’*.gif’},’选择图片’);
str=[pathname filename];
imread(str);
%使用第一个axes显示图片
axes=(handles.axes1);
imshow(str);
任务三:radiobutton(单选按钮),switch语句,图像边缘 学习好资料 欢迎下载
在界面添加按钮群button group,然后将radiobutton拖至其中
在buttongroup中右击---》viewcallbacks--->selectionchangeFcn
然后在此函数下键入
%声明全局变量im
global im
%拿到用户选择按钮的名称 ,注意Object首字母大写
str=get(hObject,’string’);
axes(handles.axes1);
switch str
case ‘原图’
imshow(im);
case ‘sobel’
bw=edge(rgb2gray(im),’sobel’;%以sobel方式检测边缘
imshow(bw);
case ‘prewitt’
bw=edge(rgb2gray(im),’prewitt’);
imshow(bw);
case ‘canny’
bw=edge(rgb2gray(im),’canny’);
imshow(bw);
End 学习好资料 欢迎下载
任务四:创建学生成绩查询系统的界面
新建一个GUI,将listbox(列表框)拖至界面,修改属性值至需要的值;将editor text(用于显示动态的文本)拖至界面,修改相应属性至需要的值;将static text(用于显示不变的文本)拖至界面,修改相应属性至需要的值。若想在listbox、editor text中显示多个条目,将属性里的max设置为想要显示的最大条目数。
任务五:学生成绩查询系统功能的实现
在视频四中做好的界面的M文件做关联,将界面按钮和功能实现关联。首先:找到程序运行的第一个函数Openfunc()函数,键入以下语句:
fin=fopen(‘chengji.txt’,’r’);
%以只读方式打开文件并返回文件句柄到fin
str=fgetl(fin); %读入文件的一行并保存在str中
[str1 str2 str3 str4]=strread(str,’%s %s %s %s’,’delimiter’,’ ’);
%读取4个字符串分别放在str1 str2 str3 str4中,字符串的delimiter(分隔符,定界符)是空格;
xingming(1)=str1; %将第一个字符串付给xingming(1); 学习好资料 欢迎下载
countor=2; %计数器个数变为2;
While feof(fin)==0
str=fgetl(fin); %当文件未到达末尾时读取countor对应的行
[name yuwen shuxue yingyu]
=strread(str,’%s %d %d%d’,’delimiter’,’ ’);
xingming(countor)=name;将读取的姓名存放在xingming中
chengji(countor-1,:)=[yuwen shuxue yingyu];
countor=countor+1; %fgetl()指向下一行
end
set(handles.listbox1,’string’,xingming);
%将姓名以字符串的形式关联显示到lisbox1中
%feof()函数用于检测指针是否到了文件末尾,当feof()返回0时,表示未到达文件末尾,返回1时说明文件到达末尾;
handles.chengji=chengji;
%将局部变量定义成句柄函数以便在其他函数中引用或将其定义成全局变量;
fclose(fin); %关闭fin文件
%点中listbox1,右击选择callback,即可跳转到listbox1函数实现function listbox1_callback(...)
value=get(hObject,’value’)-1; 学习好资料 欢迎下载
%获得用户所点中的名字的值,由于第一行是name字符,并非一个实际的姓名,故值减1
set(handles.edit1,’string’,num2str(handles.chengji(value,:)));
%在edit1中显示成绩,成绩的行由value决定,列不管,直接用:
%由于显示的是字符串,故将成绩转换成字符串的形式使用num2str()函数
至此,一个简单的学生成绩查询系统基本实现,还可以考虑实现将分数与姓名对齐在同一行,还可以实现,将各科的成绩数值对应科目名称,使他们在一列;