1、MATLAB编写矩阵计算器MATLAB大作业矩阵计算器设计制作班级:021231学号:02123066作者:王鹏一、GUI开发环境简介MATLAB提供了一套可视化的创建图形窗口的工具,使用用户界面开发环境可方便的创建GUI应用程序,它可以根据用户设计的GUI布局,自动生成M文件的框架,用户使用这一框架编制自己的应用程序。图形用户界面(GraphicalUserInterfaces,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。二、矩阵计算器介绍
2、2.1 程序使用的控件在矩阵计算器设计中主要用到三种控件,文本编辑框(edittext),静态文本框(Statictext),命令按钮(pushbutton),边框(panel)。然后在通过各个按钮的回调函数,实现简单的计算功能。2.2 程序功能介绍(1)具有用户图形界面。实现矩阵的加、减、乘、左除、右除等简单计算。 (2)有清空键,能清除操作。2.3 矩阵计算器界面及主要控件功能注释:text1文本编辑框控件功能:输出要计算公式。如12 45;78 56+659 238;79 56MatA文本编辑框功能:输入参与计算矩阵AMatB文本编辑框功能:输入参与计算矩阵BMatC静态文本框功能:输出
3、计算结果矩阵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,te
4、xtString);(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,)注释:其余模块功能算法与以上代码较为相似,不在一一举例。五、其余传参方法 本程序通过文本编辑框(edit text)达到传参的目的,下面介绍两种常
5、用的其他传参方式。(1)运用global定义全局变量传递参数这种方法适用于gui内控件间以及不同gui间,是最简单的方式。使用方法:gloal xxxx在每一个要到该全局变量的地方,都要添一句gloal xxxx。缺点:全局变量破坏了程序的封装性,所以,全局变量是能少用尽量少用。(2)运用UserData传递参数 直接通过对象的userdata属性进行各个callback之间的数据存取操作。首先必须将数据存储到一个特定的对象中,假设对象的句柄值为handles.text1,需要存储的值为value,则输入以下程序即可: set( handles.text1,UserData,Value); 此
6、时,value数据就存在句柄值为ui_handle的对象内,在执行的过程中若要取回变量可以通过以下方式在任意callback中获取该数据值 :value=get( handles.text1,UserData);缺点:每个对象仅能存取一个变量值,因此当同一对象存储两次变量时 ,先前的变量值就会被覆盖掉,因此都用UserData存储简单与单一的数据。六、心得 这次作业在MATLAB GUI编程中是较为简单的,虽然老师当天布置的作业我当天完成,但是这期间还是遇到一些困难,比如起初我的程序计算结果矩阵C用文本编辑框(edit text),我的代码是正确的,但是却得不到结果。最后通过上网查资料,解决了
7、该问题。同时我对MATLAB有了新的认识。1、通过MATLAB矩阵计算器的设计,初步了解了关于MATLAB图形用户界面的部分控件的使用方法。2、MATLAB的GUI提供的很多实用的控件,方便用于设计属于自己的图形界面。3、Matlab具有强大、丰富的内置函数和工具箱,界面设计时更加简洁、快捷与直观。七、详细代码function varargout = untitled1(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningF
8、cn, untitled1_OpeningFcn, . gui_OutputFcn, untitled1_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction unti
9、tled1_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = untitled1_OutputFcn(hObject, eventdata, handles)varargout1 = handles.output;function calculate_Callback(hObject, eventdata, handles)textString=get(handles.text1,String);f=ev
10、al(textString);set(handles.matC,string,num2str(f,%15.5g);function button1_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);function button2_Callback(hObject, eventdat
11、a, handles)a=get(handles.matA,string);textString=strcat(a,-);b=get(handles.matB,string);textString=strcat(textString,b);set(handles.text1,String,textString);function button3_Callback(hObject, eventdata, handles)a=get(handles.matA,string);textString=strcat(a,*);b=get(handles.matB,string);textString=s
12、trcat(textString,b);set(handles.text1,String,textString);function button4_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);function button5_Callback(hObject, eventdata
13、, handles)a=get(handles.matA,string);textString=strcat(a,/);b=get(handles.matB,string);textString=strcat(textString,b);set(handles.text1,String,textString);function button6_Callback(hObject, eventdata, handles)a=get(handles.matA,string);textString=strcat(a,-1);set(handles.text1,String,textString);fu
14、nction button7_Callback(hObject, eventdata, handles)a=get(handles.matA,string);textString=strcat(a,);set(handles.text1,String,textString);function matA_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundC
15、olor,white);endfunction matB_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction matC_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,de
16、faultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction text10_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction text1_CreateFcn(hObject, eventdata, handles
17、)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction pushbutton11_Callback(hObject, eventdata, handles)set(handles.text1,String,);set(handles.matA,String,);set(handles.matB,String,);set(handles.matC,String,);function p
18、ushbutton20_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);function pushbutton21_Callback(hObject, eventdata, handles)a=get(handles.matA,string);textString=strcat(
19、a,./);b=get(handles.matB,string);textString=strcat(textString,b);set(handles.text1,String,textString);function pushbutton22_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,textS
20、tring);function pushbutton23_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);function pushbutton24_Callback(hObject, eventdata, handles)a=get(handles.matA,string);textString=strcat(a,.);set(handles.text1,String,textString);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1