当前位置:文档之家› MATLAB编写矩阵计算器

MATLAB编写矩阵计算器

一、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文本编辑框功能:输入参与计算矩阵AMatB文本编辑框功能:输入参与计算矩阵BMatC静态文本框功能:输出计算结果矩阵C三、部分计算操作结果(1) 加法+MatAtext1 pushbutton22pushbutton23pushbutton24pushbutton20(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', m, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @untitled1_OpeningFcn, ...'gui_OutputFcn', @untitled1_OutputFcn, ...'gui_LayoutFcn', [], ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});endfunction untitled1_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;guidata(hObject, handles);function varargout = untitled1_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;function calculate_Callback(hObject, eventdata, handles)textString=get(handles.text1,'String');f=eval(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, 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 button3_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 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, 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);function 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,'BackgroundColor','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,'defaultUicontrolBackgroundColor'))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)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 pushbutton20_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(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',textString);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);。

相关主题