资源描述:
《MATLAB编写矩阵计算器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、MATLAB大作业矩阵计算器设计制作班级:021231学号:02123066作者:王鹏一、GUI开发环境简介MATLAB提供了一套可视化的创建图形窗口的工具,使用用户界面开发环境可方便的创建GUI应用程序, 它可以根据用户设计的GUI布局,自动生成M文件的框架,用户使用这一框架编制自己的应用程序。图形用户界面(Graphical User Interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。二、矩阵计
2、算器介绍2.1程序使用的控件在矩阵计算器设计中主要用到三种控件,文本编辑框(edit text),静态文本框(Static text),命令按钮(push button),边框(panel)。然后在通过各个按钮的回调函数,实现简单的计算功能。2.2程序功能介绍(1)具有用户图形界面。实现矩阵的加、减、乘、左除、右除等简单计算。 (2)有清空键,能清除操作。2.3矩阵计算器界面及主要控件功能注释:text1文本编辑框控件功能:输出要计算公式。如[1245;7856]+[659238;7956]MatA文本编辑框功能:输入参与计算矩阵AMatB文本编辑框功能:输入参与计算矩
3、阵BMatC静态文本框功能:输出计算结果矩阵Cpushbutton21button1button2button3button5button4button6pushbutton11calculateButton7pushbutton22pushbutton23pushbutton24pushbutton20MatCtext1MatBMatA三、部分计算操作结果(1)加法+(1)求逆(2)转置(3)群运算.*四、部分模块功能算法的实现(1)按键’加法+’响应:a=get(handles.matA,'string');textString=strcat(a,'+');b=ge
4、t(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,'
5、string',num2str(f,'%15.5g'))(1)按键’清空’响应set(handles.text1,'String','')set(handles.matA,'String','[]')set(handles.matB,'String','[]')set(handles.matC,'String','')注释:其余模块功能算法与以上代码较为相似,不在一一举例。五、其余传参方法本程序通过文本编辑框(edittext)达到传参的目的,下面介绍两种常用的其他传参方式。(1)运用global定义全局变量传递参数这种方法适用于gui内控件间以及不同gui间,是最简单
6、的方式。使用方法:gloalxxxx在每一个要到该全局变量的地方,都要添一句gloalxxxx。缺点:全局变量破坏了程序的封装性,所以,全局变量是能少用尽量少用。(2)运用UserData传递参数直接通过对象的userdata属性进行各个callback之间的数据存取操作。首先必须将数据存储到一个特定的对象中,假设对象的句柄值为handles.text1,需要存储的值为value,则输入以下程序即可:set('handles.text1,'UserData',Value);此时,value数据就存在句柄值为ui_handle的对象内,在执行的过程中若要取回变量可以通过以
7、下方式在任意callback中获取该数据值:value=get(''handles.text1,'UserData');缺点:每个对象仅能存取一个变量值,因此当同一对象存储两次变量时,先前的变量值就会被覆盖掉,因此都用UserData存储简单与单一的数据。六、心得这次作业在MATLABGUI编程中是较为简单的,虽然老师当天布置的作业我当天完成,但是这期间还是遇到一些困难,比如起初我的程序计算结果矩阵C用文本编辑框(edittext),我的代码是正确的,但是却得不到结果。最后通过上网查资料,解决了该问题。同时我对MATLAB有了新的认识。1