版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/D_Katter/article/details/79542094
1.读取图片
//选择图片路径
[filename pathname]=uigetfile({‘*.jpg,’*.bmp’,’*.gif’},’选择图片’);
//合成路径+文件名
str=[pathname filename];
//读取图片
im=imread(str);
//使用第一个axes
Axes=(handle.axes1);
//显示图片
Imshow(im);
//关闭
Close(gif);
2.边缘检测
Button group 功能函数
Function uibuttongroup1.selectionChangedFen(hObject,eventdata.handles)
//全局变量声明
Global im
//特征提取
Str=get(hObject,’string’); 功能函数里面字符串的提取
//使用图片
Axes(handles.axes1);
//选择项的功能处理
Switch str
Case’
Imshow(im);
Case’sobel’
BW=edge(rgb2gray(im),’sobel’);
Imshow(BW);
Case’prewitt’
BW=edge(rgb2gray(im),’prewitt’);
Imshow(BW);
case’canny’
BW=edge(rgb2gray(im),’canny’);
Imshow(BW);
End;
MATLAB的变量:
在matlab中使用变量可以不同声明,在使用时,程序会自动给其分配内存
在引入变量后,涉及到存储的问题,存在基本工作区间和函数区间
变量储存在基本工作区间,函数储存在函数区间,在相应空间使用的变量只在对应的区间有效。Assign函数可以实现跨用
变量分为3中类型,局部变量,全局变量,永久变量
局部变全局,使用global a 或者使用hanles.chengji=chengji
SWITCH语句一般是用在functionselcetion中,跟C语言中用法一样
Switch expression (数值,字符,字符串)
Case value1(数值,字符,字符串或者多个数值的组合,其中两种表达方式)
Value1:表达一:1|2 表达二: {3.4}
Statement1
Case value2
Statement2
End
在执行case语句后,若是没有匹配的,执行otherwise,可以省略
3.成绩查询系统设计
fin=fopen(‘chengji。txt’,‘r’);
str=fgetl(fin);
【str1 str2 str3 str4】=strread(str,‘%s’,‘%s’,‘%s’,‘%s’,‘delimiter’,‘ ’);
Xingming(1)=str1;
Counter=2;
While feof(fin)==0
Str=fgetl(fin);
【name yuwen shuxue yingyu】=strread(str,‘%s’,‘%d’,‘%d’,‘%d’,‘delimiter’,‘ ’);
Xingming(counter)=name;
Counter=counter+1;
End;
Set(handles.listbox1,’string’,x ingming);
Handles.chengji=chengji;
Fclose(fin);
Value=get(hObject,’value’)-1;
Set(handles.edit1’string’,num2str(handles.c hengji(value,:)));
4.读取文本文件
4.1读取txt文件
fin=fopen(‘chengji,txt’,’r’);
str=fgetl(fin);
【str1 str2 str3 str4】=(str ,‘%s’,’%s’,’%s’,’%s’,’delimiter’,’ ’);
Xingming(1)=str1;
Counter=2;
While feof(fin)==0
Str=fgetl(fin);
[name yuwen shuxue yingyu ]=strread(str,’%s,’’%d’,’%d’,’%d’,’delimiter’,’ ’);
Xingming(1)=name;
Chengji(counter-1,:)=【yuwen shuxue yingyu】
Counter=counter+1;
End;
Set(handles.box1,’string’,’xingming’);
Handles.chengji=chengji;
Fclose(fin);
4.2读取excel文件
【filename pathname】=uigetfile(‘*.ls’,’choose a file’);
Str=[filename pathname];
Set(handles.edit3,’string’,str);
[chengji xingming(1)]=xlsread(str);
Set(handles.listbox1,’string’xingming(:,1));
Handles.chengji=chengji;
Guidata(hObject,handles);
在读取这个文件的时候,遇到一个问题,弄了很久
Value=get(hObject,’value’)-1;
Set(handles.edit1,’string’,num2str(handles.chenhji(value,;))
使用了num2,实现了数值类型的转换,在excel表格中的数据一定要符合转换后的类型,不然是会出错的。
其中还遇到了一个问题,就是在handles.edit1的时候,这个edit1或者edit2是要根据自己放的图框进行匹配的,
当时没注意,调试了很久,一直说是没有定义这个变量,因此,出现类似的问题,应该检查硬件配置和软件配置是否对应。
4.3可以有选择性的对文件进行读取
[filename pathname]=uigetfile({‘*.xls’,’excel files(*.xls)’,’*txt’,’txt files(*.txt)’,’*.*’,’*all files(*.*)’},’choose a file’);
L=length(filename);
L<5;
Errordlg(‘wrong file’,’file open error’);
Return;
End
Test =filename(1,L-3:L);
Switch test
Case ‘.txt’
Str=[pathname filename];
Set(handles.edit3,’string’,’str’);
Fin=fopen(str,’r’);
Str=fgetl(fin);
[str1 str2 str3 str4]=strread(str,’%s’,’%s’,%s’’,’%s’, ‘delimiter’,’ ’)
Xingming(1)=str1
Counter=2
While feof(fin)==0
Str=fgetl(fin);
[name yuwen shuxue yingyu]=(str,’%s’,’%d’,’%d’,’&d’,’ delimiter’,’ ’);
Xingming(counter)=name;
Chengji(counter-1,:)=[yuwen shuxue yingyu];
Counter=counter+!;
End
Set(handles.listbox1,’string’,xingming);
Handles,chengji=chengji;
Fclose(fin);
Guidata(hObject,handles);
Case ‘.xls’
Str=filename pathname];
Set(handles.edit3,’string,’string);
[chengji xingming]=xlsread(str);
Set(handles.listbox1,’string’,xingming(‘’,1))
Handles.chengji=chengji;
Guidata(hObject,handls);
Otherwise
Errordlg(‘wrong file’,’file open error’
在学习第三个模块的时候,出现了语法中括号不对称的问题,最后是利用{}这个大括号替换()才解决的问题,
说明在语法方面存在括号的使用规则
5.播放视频插件
Pos[0 0 0 0];
Moviecontrol=actxcontrol(wmplayer.ocx.7,pos);
Handles.moviecontrol=moviecontrol;
Mp=handles.moviecontrol.controls;
Handles.Output=mp;
【filename pathname】=uigetfile(‘*.*’,’please select a movie….’);
If~(filename)
Return
End
Handles.moviecontrol.url=【pathname filename】;
Handles.moviecomtrol.controls.play;
Units=get(handles,fiure1.’units’);
Set(handled.figure1,’units’,’pixels’);
Pos=get(handles.figure1,’position’)
Set(handles.fihure1,’units’,units):
Pos[0 0 pos(3 :4 )];
Move(handles.moviecontrol,pos)
…
6.参考资料
- 网络视频: MATLAB初学者10个视频
- MATLAB中文论坛
- 《MATLAB GUI设计入门与实践 》
- 《罗华飞GUI学习手记》
- 源代码下载