MATLAB编写矩阵计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、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文本编辑框控件功能:输出要计算公式。如[12 45;78 56]+[659 238;79 56] MatA文本编辑框功能:输入参与计算矩阵A
MatB文本编辑框功能:输入参与计算矩阵B
MatC静态文本框功能:输出计算结果矩阵C
三、部分计算操作结果
(1) 加法+
MatA
text1 pushbutton22
pushbutton23
pushbutton24
pushbutton20
(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','')
注释:其余模块功能算法与以上代码较为相似,不在一一举例。
五、其余传参方法
本程序通过文本编辑框(edit text)达到传参的目的,下面介绍两种常用的其他传参方式。
(1)运用global定义全局变量传递参数
这种方法适用于gui内控件间以及不同gui间,是最简单的方式。
使用方法:gloal xxxx
在每一个要到该全局变量的地方,都要添一句gloal xxxx。
缺点:全局变量破坏了程序的封装性,所以,全局变量是能少用尽量少用。
(2)运用UserData传递参数
直接通过对象的userdata属性进行各个callback之间的数据存取操作。首先必须将数据存储到一个特定的对象中,假设对象的句柄值为handles.text1,需要存储的值为value,则输入以下程序即可:
set(' handles.text1,'UserData',Value);
此时,value数据就存在句柄值为ui_handle的对象内,在执行的过程中若要取回变量可以通过以下方式在任意callback中获取该数据值:
value=get('' handles.text1,'UserData');
缺点:每个对象仅能存取一个变量值,因此当同一对象存储两次变量时,先前的变量值就会被覆盖掉,因此都用UserData存储简单与单一的数据。
六、心得
这次作业在MATLAB GUI编程中是较为简单的,虽然老师当天布置的作业我当天完成,但是这期间还是遇到一些困难,比如起初我的程序计算结果矩阵C用文本编辑框(edit text),我的代码是正确的,但是却得不到结果。最后通过上网查资料,解决了该问题。同时我对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_OpeningFcn', @untitled1_OpeningFcn, ...
'gui_OutputFcn', @untitled1_OutputFcn, ...
'gui_LayoutFcn', [], ...