MATLAB编写矩阵计算器.docx
《MATLAB编写矩阵计算器.docx》由会员分享,可在线阅读,更多相关《MATLAB编写矩阵计算器.docx(14页珍藏版)》请在冰豆网上搜索。
MATLAB编写矩阵计算器
MATLAB大作业
矩阵计算器设计制作
班级:
021231
学号:
02123066
作者:
王鹏
一、GUI开发环境简介
MATLAB提供了一套可视化的创建图形窗口的工具,使用用户界面开发环境可方便的创建GUI应用程序, 它可以根据用户设计的GUI布局,自动生成M文件的框架,用户使用这一框架编制自己的应用程序。
图形用户界面(Graphical User Interfaces ,GUI)则是由窗口、光标、按键、菜单、
文字说明等对象(Objects)构成的一个用户界面。
用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
二、矩阵计算器介绍
2.1程序使用的控件
在矩阵计算器设计中主要用到三种控件,文本编辑框(edit text),静态文本框(Static text),命令按钮(push button),边框(panel)。
然后在通过各个按钮的回调函数,实现简单的计算功能。
2.2程序功能介绍
(1)具有用户图形界面。
实现矩阵的加、减、乘、左除、右除等简单计算。
(2)有清空键,能清除操作。
2.3矩阵计算器界面及主要控件功能
注释:
text1文本编辑框控件功能:
输出要计算公式。
如[1245;7856]+[659238;7956]
MatA文本编辑框功能:
输入参与计算矩阵A
MatB文本编辑框功能:
输入参与计算矩阵B
MatC静态文本框功能:
输出计算结果矩阵C
三、部分计算操作结果
(1)加法+
(2)求逆
(3)转置
(4)群运算.*
四、部分模块功能算法的实现
(1)按键’加法+’响应:
a=get(handles.matA,'string');
textString=strcat(a,'+');
b=get(handles.matB,'string');
textString=strcat(textString,b);
set(handles.text1,'String',textString);
(2)按键’转置’响应
a=get(handles.matA,'string');
textString=strcat(a,'''');
set(handles.text1,'String',textString);
(3)按键’计算’响应
textString=get(handles.text1,'String');
f=eval(textString);
set(handles.matC,'string',num2str(f,'%15.5g'))
(5)按键’清空’响应
set(handles.text1,'String','')
set(handles.matA,'String','[]')
set(handles.matB,'String','[]')
set(handles.matC,'String','')
注释:
其余模块功能算法与以上代码较为相似,不在一一举例。
五、其余传参方法
本程序通过文本编辑框(edittext)达到传参的目的,下面介绍两种常用的其他传参方式。
(1)运用global定义全局变量传递参数
这种方法适用于gui内控件间以及不同gui间,是最简单的方式。
使用方法:
gloalxxxx
在每一个要到该全局变量的地方,都要添一句gloalxxxx。
缺点:
全局变量破坏了程序的封装性,所以,全局变量是能少用尽量少用。
(2)运用UserData传递参数
直接通过对象的userdata属性进行各个callback之间的数据存取操作。
首先必须将数据存储到一个特定的对象中,假设对象的句柄值为handles.text1,需要存储的值为value,则输入以下程序即可:
set('handles.text1,'UserData',Value);
此时,value数据就存在句柄值为ui_handle的对象内,在执行的过程中若要取回变量可以通过以下方式在任意callback中获取该数据值:
value=get(''handles.text1,'UserData');
缺点:
每个对象仅能存取一个变量值,因此当同一对象存储两次变量时,先前的变量值就会被覆盖掉,因此都用UserData存储简单与单一的数据。
六、心得
这次作业在MATLABGUI编程中是较为简单的,虽然老师当天布置的作业我当天完成,但是这期间还是遇到一些困难,比如起初我的程序计算结果矩阵C用文本编辑框(edittext),我的代码是正确的,但是却得不到结果。
最后通过上网查资料,解决了该问题。
同时我对MATLAB有了新的认识。
1、通过MATLAB矩阵计算器的设计,初步了解了关于MATLAB图形用户界面的部分控件的使用方法。
2、MATLAB的GUI提供的很多实用的控件,方便用于设计属于自己的图形界面。
3、Matlab具有强大、丰富的内置函数和工具箱,界面设计时更加简洁、快捷与直观。
七、详细代码
functionvarargout=untitled1(varargin)
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@untitled1_OpeningFcn,...
'gui_OutputFcn',@untitled1_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
functionuntitled1_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output=hObject;
guidata(hObject,handles);
functionvarargout=untitled1_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
functioncalculate_Callback(hObject,eventdata,handles)
textString=get(handles.text1,'String');
f=eval(textString);
set(handles.matC,'string',num2str(f,'%15.5g'));
functionbutton1_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'+');
b=get(handles.matB,'string');
textString=strcat(textString,b);
set(handles.text1,'String',textString);
functionbutton2_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'-');
b=get(handles.matB,'string');
textString=strcat(textString,b);
set(handles.text1,'String',textString);
functionbutton3_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'*');
b=get(handles.matB,'string');
textString=strcat(textString,b);
set(handles.text1,'String',textString);
functionbutton4_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'\');
b=get(handles.matB,'string');
textString=strcat(textString,b);
set(handles.text1,'String',textString);
functionbutton5_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'/');
b=get(handles.matB,'string');
textString=strcat(textString,b);
set(handles.text1,'String',textString);
functionbutton6_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'^-1');
set(handles.text1,'String',textString);
functionbutton7_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'''');
set(handles.text1,'String',textString);
functionmatA_CreateFcn(hObject,eventdata,handles)
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
functionmatB_CreateFcn(hObject,eventdata,handles)
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
functionmatC_CreateFcn(hObject,eventdata,handles)
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
functiontext10_CreateFcn(hObject,eventdata,handles)
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
functiontext1_CreateFcn(hObject,eventdata,handles)
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
functionpushbutton11_Callback(hObject,eventdata,handles)
set(handles.text1,'String','');
set(handles.matA,'String','[]');
set(handles.matB,'String','[]');
set(handles.matC,'String','');
functionpushbutton20_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'.*');
b=get(handles.matB,'string');
textString=strcat(textString,b);
set(handles.text1,'String',textString);
functionpushbutton21_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'./');
b=get(handles.matB,'string');
textString=strcat(textString,b);
set(handles.text1,'String',textString);
functionpushbutton22_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'.\');
b=get(handles.matB,'string');
textString=strcat(textString,b);
set(handles.text1,'String',textString);
functionpushbutton23_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'.^');
b=get(handles.matB,'string');
textString=strcat(textString,b);
set(handles.text1,'String',textString);
functionpushbutton24_Callback(hObject,eventdata,handles)
a=get(handles.matA,'string');
textString=strcat(a,'.''');
set(handles.text1,'String',textString);