matlab-GUI矩阵计算器
- 格式:pdf
- 大小:957.37 KB
- 文档页数:19
基于MATLAB的计算器制作从入门到高级项目一、建立GUI框架1,双击MATLAB图标(本实例使用的是MATLAB R2014),打开软件2,打开GUI操作界面。
有两种方式:a、在命令行窗口输入guide,然后点击回车。
b、先点击新建图标,在选择‘图形用户界面’。
得到如下窗口:左上方有两个按钮:‘新建GUI’,‘打开现有GUI’。
对于‘新建GUI’:下方的选择框内有你可以选择建立的GUI类型,对于初学者一般选择第一个。
下方是用来设置保存文件位置的。
对于‘打开现有GUI’:初学者可能会在网上下载一些GUI源程序,使用‘打开现有GUI’,再浏览到文件所在位置便可。
3、构建GUI框架:在选择新建GUI并且确定后,会弹出如下窗口:在窗口的左边会有很多选项,可以一个个拖动编辑框内;是不是发现这些选项发挥的作用刚好就是我们平常打开一个网页或者一个软件进行操作时的选择按钮。
比较常见的有:按钮、单选按钮、拖动条、弹出式菜单等。
看到这里细心地朋友就会发现,MATLAB GUI似乎可以开发出大型软件哦,只要你有足够的想象力,当你从一个小白进阶到一个高手之后,你可以做到的。
本次计算器制作只需要用到静态文本(或者是动态文本)用来做显示器,按钮(用来操作)。
也可以添加一个面板用来修饰。
在拖出的选项上双击,会得出该选项的属性栏,比如说双击一个按钮选项,你会得到:这个属性框比较复杂,没有必要一个个说清楚(有兴趣的可以自己研究,其实理解起来也挺简单的)本次计算器制作,我们只需要知道以下几个:◆a、BackgroundColor取值为颜色的预定义字符或RGB数值;缺省(就是默认的意思)值为浅灰色;◆b、ForegroundColor取值为颜色的预定义字符或RGB数值,该属性定义控件对象标题字符的颜色;缺省值为黑色;◆c、String取值为字符串矩阵或块数组,定义控件对象标题或选项内容;◆d、FontName取值为控件标题等字体的字库名;◆e、FontSize取值为数值,控制字体大小;◆f、Tag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象;◆g、Style取值可以是pushbutton(缺省值),radiobutton, checkbox, edit, text, slider,frame, popupmenu 或listbox;项目二、简单加法器的制作1、框架准备‘加法器’:使用静态文本,在 string 处将文本修改为(加法器),在 fontsize可修改字体大小,在BackgroundColor处可修改背景颜色。
摘要基于MATLAB GUI的计算器设计是利用GUIDE创建图形用户界面进行计算器设计。
设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。
通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。
计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设置。
计算器实现的功能有:数字0~9和小数点的输入显示,平方、开平方和对数的输入显示。
进行四则运算、正弦计算、余弦计算、正切计算和余切计算,可以求阶乘、求百分数和求倒数。
可以进行括号及变量x与变量y的输入,结合坐标轴编辑框和曲线颜色编辑框实现函数的曲线绘制。
最后运行调试,实现基于MATLAB GUI的计算器的设计。
MATLAB GUI介绍MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂,主要面对科学计算、可视化以及交互式程设计的高科技计算环境。
MATLAB是将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,特别是所附带的30多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。
MATLAB的图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。
MATLAB的图形用户界(GUI)是由光标,窗口,菜单、文字说明等对象构成一个用户界面。
matlab中gui设计计算器原理及设计方案在MATLAB中设计GUI(图形用户界面)计算器的基本原理和设计方案如下:基本原理:MATLAB的GUI设计基于事件驱动模型。
这意味着当用户与界面交互(例如,点击按钮或输入文本)时,会触发一个或多个事件。
这些事件会调用相应的回调函数,执行相应的操作。
设计方案:1. 启动MATLAB并创建GUI:打开MATLAB。
使用guide命令启动GUI设计器。
2. 添加GUI组件:在GUI设计器中,添加需要的组件,如按钮(push button)、文本框(edit text)、标签(label)等。
3. 设置组件属性:为每个组件设置必要的属性,例如位置、大小、标签文本等。
4. 编写回调函数:双击每个组件,MATLAB会自动生成一个默认的回调函数。
根据需要修改这些函数,以实现所需的功能。
例如,对于按钮,当用户点击它时,可以编写代码来执行相应的计算。
5. 测试GUI:在设计过程中,经常测试GUI以确保其正常工作。
可以使用simulink中的模拟功能,或直接在MATLAB环境中测试。
6. 保存和运行:保存GUI文件。
在MATLAB命令窗口中输入文件名(不包括扩展名),然后按Enter运行GUI。
7. 调试和优化:根据测试结果,调整回调函数和组件属性,优化GUI的行为和外观。
8. 发布:一旦GUI满足所有需求,可以发布它以供其他人使用。
这通常涉及将GUI打包为一个可执行文件或应用程序包。
9. 维护和更新:随着软件的发展,可能需要定期维护和更新GUI。
这可能涉及添加新功能、修复错误或改进性能。
在整个过程中,熟悉MATLAB的GUI设计和编程技巧是非常重要的。
此外,由于GUI设计可能需要反复的测试和调整,因此耐心和细心也是必不可少的。
MATLAB大作业班级:姓名:学号:计算器➢题目本题目通过MATLAB的gui程序设计较为简单,在gui设计中主要用到三种控件,文本编辑框(edit text),静态文本框(Static text),命令按钮(push button)。
然后在通过各个按钮的回调函数,实现简单的计算功能。
➢1、功能介绍(1)具有友好的用户图形界面。
实现十进制数的加、减、乘、除、乘方、开方等简单计算。
(2)具有科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行。
(注:三角函数计算的是弧度而不是角度)。
(3)有清除键,能清除操作。
➢2、功能实现程序由两个部分组成:MATLAB代码(.m文件)和GUI图形(.fig)。
程序使用的流程:直接利用图形界面中的按键键入所需数值、运算符等即可得出结果。
备注:软件版本:MATLAB 2011b首先用MATLAB GUI功能,在绘制一个静态文本框和一个文本编辑框,以及33个命令按钮,调整好各控件大小、颜色,整体布局如图所示:(附录中有相关属性修改介绍)然后通过双击各个按钮来改写其属性,在m文件中编写其回调函数,最后在运行调试。
2.1 各功能界面设计GUI设计界面:注:底部边框用(Panel)工具添加,有两种设计顺序。
(1、先加底部边框,再在底部边框上画功能键。
2、先画功能键,布好局,画底框,全选功能键拖动到底框上。
)2.2 各功能模块实现(可根据需要增减功能键)算法设计:1. 数字键设计:0—9以及小数点函数都一样,只是参数不同:例如:按键‘1’响应:global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','1') ;elsetextString =strcat(textString,'1');set(handles.text1,'String',textString)endjj=0;2. 四则运算函数:‘+’功能响应:textString = get(handles.text1,'String');textString =strcat(textString,'+');set(handles.text1,'String',textString)‘-’功能响应:textString = get(handles.text1,'String');textString =strcat(textString,'-');set(handles.text1,'String',textString)‘×’功能响应:textString = get(handles.text1,'String');textString =strcat(textString,'*');set(handles.text1,'String',textString)‘÷’功能响应:textString = get(handles.text1,'String');textString =strcat(textString,'/');set(handles.text1,'String',textString)3. 科学计算函数:例如:‘sin’功能响应:textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)set(handles.text1,'String','0.') ;elsea = strread(textString, '%f');a=sin(a);set(handles.text1,'String',a)end4. 退格键(DEL):通过取屏幕值,计算出其字符长度,然后取其前N-1项的值来实现退格:global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','0.') ;elsess=char(textString);l=length(textString);textString=ss(1:l-1);set(handles.text1,'String',textString)endjj=0;5. 清屏键函数(AC):set(handles.text1,'String','0.') ;2.3 各模块程序添加方法选中一个需添加程序的功能键,右击,View Callbacks,Callback,出现如下图所示界面。
matlab 符号矩阵运算
在MATLAB中进行符号矩阵运算,需要使用符号计算工具箱。
以下是一些常见的符号矩阵运算:
1. 转置:符号矩阵的转置可以通过符号“ ' ”或函数transpos来实现。
例如,如果A是一个符号矩阵,则A.' 是A 的转置。
2. 乘法:两个符号矩阵的乘法可以通过函数mtimes来实现。
例如,如果A和B是两个符号矩阵,则C=A*B是A和B的乘积。
3. 加法:两个符号矩阵的加法可以通过加法运算符“+”来实现。
例如,如果A和B是两个具有相同尺寸的符号矩阵,则
C=A+B是A和B的加积。
4. 逆运算:一个方阵的逆运算可以通过函数inv来实现。
例如,如果A是一个方阵,则inv(A)是A的逆矩阵。
需要注意的是,不是所有的方阵都有逆矩阵。
5. 行列式运算:一个方阵的行列式运算可以通过函数determ或det来实现。
例如,如果A是一个方阵,则det(A)或determ(A)是A的行列式。
6. 求秩运算:一个符号矩阵的求秩运算可以通过函数rank 来实现。
例如,如果A是一个符号矩阵,则rank(A)是A的秩。
7. 特征值和特征向量运算:一个符号矩阵的特征值和特征向量运算可以通过函数eig、eigensys等来实现。
例如,如果A
是一个符号矩阵,则[V,D]=eig(A)将返回特征向量V和特征值D。
以上是一些常见的符号矩阵运算,但MATLAB符号计算工具箱还提供了许多其他函数和运算符来进行符号矩阵运算。
MATLABGUI的使用经验与技巧
一、Matlab介绍
Matlab是一款由MathWorks公司推出的矩阵/数组工具软件,具有高
效的数学计算和可视化功能。
可以为科学计算和工程建模提供便捷的处理
方式,是一款多功能软件。
Matlab GUI(图形用户界面)是一种软件界面,使用户能够即时地与Matlab应用程序进行交互。
二、Matlab GUI的使用经验及技巧
1、UI组件:
Matlab GUI的UI组件是构建GUI的基础,主要有按钮、复选框、单
选框、输入框、列表框等,可以根据实际需求添加不同的UI组件,并且
可以定义UI组件的属性,如按钮的背景色、位置等。
2、回调函数:
Matlab GUI的回调函数是比较重要的一个组成部分,当用户激活一
些UI组件时,会触发回调函数,实现用户与程序的交互,从而实现各种
操作和功能。
回调函数中可以定义各种语句,调用函数,甚至可以执行程
序段,实现复杂功能。
3、数据处理:
Matlab GUI通过一定的语句,即可实现用户的数据输入、输出、处
理及其他操作,从而达到一定的功能要求。
可以在GUI中运行matlab程序,处理复杂的数据,这需要熟练掌握Matlab语言,以及其他数据处理
技术,例如正则表达式等。
4、可视化:
可视化是GUI最重要的功能之一,可以使用各种图表或实时显示数据,让用户更直观地查看和理解数据。
简易算术计算器的设计一、算术计算器的功能:能进行简单的加、减、乘、除法运算,输入文本框显示为常量多项式,输出文本框显示为精确到小数点后十位的数值。
计算器包含十个数字键0~9、小数点键“.”、小括号键“(”“)”、运算符号、清屏键、退格键、退出键等。
二、设计思路:每按下一个数字键或者符号键的时候,利用get(handles.edit1,'string')获取当前输入文本框edit1的string属性,并通过字符串合并函数strcat()将当前输入文本框edit1的字符型string属性与按键的字符型string属性合并成字符串,然后利用属性设置函数set(); 将合并后的字符串返回到输入文本框edit1的string属性。
当输入结束,用户按下等号的时候,采用x=get(handles.edit1,'string')获取当前输入文本框edit1的string属性,然后利用字符串执行命令y1=eval(x)计算输入文本框的表达式,得到的结果是字符型常量;然后利用字符串输出格式控制函数y=sprintf('%.10f',y1)使输出结果精确到小数点后十位;最后利用属性设置函数set(handles.edit2,'string',y)将转换后的字符串返回到输出文本框edit2的string 属性。
三、设计步骤:1、运行matlab 7.13版,进入主界面。
2、点击工具栏上的GUIDE图标进入GUI开发环境。
3、创建控件:Push Button包括数字0~9、运算符“+ - ×÷”、功能键等十九个,输入和动态静态文本框Edit Text,显示文字的静态文本框Static Text四个等。
4、对控件单击右键弹出菜单,选择Property Inspector,设置控件属性。
控件属性表text text1 制作:***16pointsboldon0.8310.8160.7840 0 1 text2 Inputtext3 Outputtext4 算术计算器200.7490.749editedit1 空白字符串10pointson 1 1 1 0 0 0 edit2 空白字符串5、选择工具栏上的Align Objects按键,调整控件布局。
电子信息工程系实验报告课程名称:MATLAB语言实验项目名称:MATLAB图形用户界面设计实验时间:2019-5-8 班级:姓名:学号:实验目的: 1、熟悉MATLAB的主要控件使用方法。
2、熟悉MATLAB的GUI设计流程。
实验环境:硬件配置( Pentium(R) 4 CPU 2.40GHz,1GB内存)操作系统(Windows XP)编程软件:MATLAB7.0实验内容与结果:使用MATLAB的GUI接口设计一个简单的计算器。
效果图:程序源码部分函数及相关注释:%0~9数字键及小数点按钮代码范例%全局变量locaval用于存储用户输入的多位数值%全局变量gloval2用于存储待处理的第二位数值function pushbutton1_Callback(hObject, eventdata, handles)global locaval;a = get(handles.pushbutton1,'String');locaval=strcat(locaval,a);set(handles.text1,'String',locaval);global gloval2gloval2=locaval;guidata(hObject, handles);%运算符按钮处理“+、-、*、\”范例%全局变量flagnum存储运算符标志%全局变量global1用于储存第一个待处理数值function pushbutton10_Callback(hObject, eventdata, handles)a = get(handles.pushbutton10,'String');b = get(handles.text1,'String');set(handles.text1,'String',a);global flagnumglobal gloval1global locavallocaval=' ';flagnum=1;gloval1=b;guidata(hObject, handles);%取相反数按钮“+\-”代码%算法实现:用零减去文本框现在的值,再赋值给文本框function pushbutton14_Callback(hObject, eventdata, handles) 成绩:指导教师(签名):global locaval;locaval=str2num(locaval);locaval=0-locaval;locaval=num2str(locaval);set(handles.text1,'String',locaval);global gloval2gloval2=locaval;guidata(hObject, handles);% 等号按钮运算实现%根据flagnum运算标志用switch决策语句实现相应计算%需注意相应数据类型的转化function pushbutton17_Callback(hObject, eventdata, handles)global flagnumglobal gloval1global gloval2global locavallocaval=' ';gloval1=str2num(gloval1);gloval2=str2num(gloval2);case1=gloval1/gloval2;case2=gloval1*gloval2;case3=gloval1-gloval2;case4=gloval1+gloval2;case1=num2str(case1);case2=num2str(case2);case3=num2str(case3);case4=num2str(case4);switch flagnum;case 1set(handles.text1,'String',case1);case 2set(handles.text1,'String',case2);case 3set(handles.text1,'String',case3);case 4set(handles.text1,'String',case4);endguidata(hObject,handles)% BackSpace按钮函数%算法实现:MA TLAB是用矩阵存储数据的,相应的可以取文本框的前N-1实现其功能function pushbutton19_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)set(handles.text1,'String','0.') ;elsess=char(textString);l=length(textString);textString=ss(1:l-1);set(handles.text1,'String',textString)endguidata(hObject,handles)%C清除按钮函数%把全局变量locaval清零function pushbutton20_Callback(hObject, eventdata, handles)global locavallocaval=' ';set(handles.text1,'String','0.');guidata(hObject,handles)%开平方函数function pushbutton22_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString=str2num(textString);textString=sqrt(textString);textString=num2str(textString);set(handles.text1,'String',textString);locaval=' ';guidata(hObject,handles)%取1/x函数function pushbutton24_Callback(hObject, eventdata, handles)global locavallocaval=str2num(locaval);locaval=1/locaval;set(handles.text1,'String',locaval);locaval=' ';guidata(hObject,handles)实验心得:!、通过MATLAB简单计算器的设计,初步了解了关于MATLAB图形用户界面的部分控件的使用方法。
文献综述信息与计算科学二重积分计算的MATLAB GUI 设计一、前言部分1.1 写作目的在科学研究和工程应用中,人们通常希望将数据、设计或计算结果用交互式图形表示,以使数据的特征或性能能够清晰、直观地以GUI方式展现。
通常,快捷方便地绘制图形,尤其是不规则图形,需要对绘图工具、语言有较为深入的了解,需要熟练使用这些工具或编写程序,而这通常是一项入门缓慢、熟练精通时间较长的工作。
MATLAB在提供强大计算功能的同时,近年来还大力发展了面向对象的图形技术和GUI技术,使用户可以轻松实现数据的交互式显示。
MATLAB的图形绘制、图形高级操作以及GUI这些方面的应用日益普遍。
使用MATLAB提供的图形设计技术,用户无须了解图形实现的细节内容,有时甚至只需几个简单的函数就可以绘制非常复杂的图。
另外,用户还可以根据需要来规划、设计MATLAB 的图形外观,不断调整完善,直至绘图结果完全符合用户要求。
总之,利用MATLAB提供的GUI设计工具或编写程序,可以简单、便捷地设计出美观、方便的菜单化和控制式的人机交互界面。
[1] MATLAB是一种数值计算环境和编程语言,主要包括MATLAB和Simulink两大部分。
MATLAB基于矩阵运算,具有强大的数值分析、矩阵计算、信号处理和图形显示功能,其强大的数据处理能力和丰富的工具箱使得它的编程极为简单。
MATLAB既能进行科学计算,又能开发出所需要的图形界面。
图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。
用户通过一定的方法选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
[2]在高等数学的学习中,经常面临一些有关图形和计算问题。
但是很多函数的表达和计算过于抽象,而使用MATLAB可以通过GUI设计很好地解决这些问题,并且可以对相关的函数利用MATLAB 的强大数值计算功能进行进一步分析,同时可以执行一些动作或变化来满足用户的需求。
数学应用软件工具箱开发——矩阵计算器姓名:***学号:********指导老师:***专业:********2014年9月11日一.操作过程1.准备工作①在Matlab的主窗口中,选择File菜单中的New菜单项,再选择其中的GUI 命令,就会显示GUI的设计模板;②选择GUI模板中的默认的空白模版Blank GUI(Default)就会显示GUI设计窗口,可以开始设计矩阵计算器了。
2.设计过程①在GUI界面中加入以下控件:1>2个文本编辑器(edit text)作为输入矩阵的窗口;2>16个用以执行运算的按钮(push button);3>4个静态文本框(static text),其中一个作为显示计算所得结果的窗口,另外3个分别作为表示所输入的矩阵(A、B)以及用来输入标题(矩阵计算器);4>加入3个按钮组(button group)分别圈住:a.1>中的2个控件及3>中的A、B;b.2>中的16个计算按钮;c.3>中的显示计算结果的窗口。
②分别双击以上25个控件修改其string属性如下:1>中的改为空白(将原有的“edit text”删掉);2>中的改为对应的矩阵运算或文字,如“+”、“/R”、“秩”、“逆”等(见图1);3>中的按顺序改为空白、“A”、“B”以及“矩阵计算器”;4>中的按钮组分别改为“输入区”、“功能区”、“输出区”。
③对每个控件分别单击右键,选择“view callback”→“callback”→“保存”,在每个控件的函数后加入代码(见附件)。
④此外,还需要做的小变动有:1>②中修改string属性时通过修改fontWeight及fontSize把string的字符粗细、字号也一并修改了。
2>分别双击2个文本编辑器(edit text)将其max属性取值为100或更大的值,以使编辑器有滚动条,方便显示输入的维数比较大的矩阵。
3>双击计算结果窗口将其style改为listbox,也用于显示维数比较大的计算结果。
4>还可修改各控件的backgroundcolor(背景色)、HorizontalAligment(对齐方式)等其他属性以美化界面。
⑤保存运行的结果如下:图1二.功能简介1.功能概述此矩阵计算器能够实现一些基本的矩阵运算,包括对单个矩阵的运算以及对两个矩阵的运算。
其中,对于两个矩阵的运算有:加、减、乘、除(左除、右除)、按元素乘、按元素除以及求解线性方程组;对于単个矩阵的运算有:转置、求秩、求逆、计算行列式、求2范数、LU分解、最简阶梯阵化简、求特征值等。
计算过程中,矩阵的输入方式有两种:1>与MATLAB中矩阵输入方式类似,即:矩阵行中的元素以空格或逗号间隔;矩阵行之间以分号间隔;整个元素列表用方括号括起来。
2>为方便计算,可直接输入每行的元素,行之间用回车间隔,每行的元素之间用空格间隔即可。
(注:本报告为能把输入的矩阵完全显示出来,选择第一种输入方式)2.功能详细描述1>矩阵相加(减)输入A=[123;456;789],B=[147;258;369],按下“+”按钮,输出区显示计算结果如图2所示:图2输入的A、B矩阵必须是维数相同,否则不能实现相加运算。
如输入不同维数的矩阵且进行相加运算,则会提示出错,如图3所示:图3两矩阵相减的运算过程与相加运算类似,在此不再赘述。
2>点乘(除)输入A=[123;456;789],B=[147;258;369],按下“.*”按钮,输出区显示计算结果如图4所示:图4输入的A、B矩阵必须是维数相同,否则不能实现按元素乘(除)的运算。
如输入不同维数的矩阵且进行按元素乘的运算,则会提示出错,提示信息同图3。
3>矩阵相乘:输入A=[123;456;789],B=[147;258;369],按下“*”按钮,输出区显示计算结果如图5所示:图5输入的A、B矩阵必须满足前者的列数等于后者的行数,否则不能实现矩阵的乘法运算,出现错误提示如图6所示:图64>左除(右除):输入A=[123;456;789],B=[147;258;369],按下“/L”按钮,输出区显示计算结果如图7所示:图7输入的A、B矩阵必须满足行相等,否则出现错误提示如图8所示:图85>矩阵转置:输入矩阵A=[123;456;789],点击“A’”按钮,显示结果如图9所示:图96>矩阵求秩:输入矩阵A=[123;456;789],点击“秩”按钮,输出区显示计算结果如图10所示:图107>矩阵求逆:输入矩阵A=[124;456;789],按下“逆”按钮,输出区显示计算结果如图11所示:图11本矩阵计算器求逆功能只针对非奇异方阵,如果输入矩阵A为奇异阵或非方阵,均会提示错误A为非方阵时提示错误如图12:图12A为奇异阵时提示错误如图13:图138>行列式:输入A=[124;456;789],按下“行列式”按钮,输出区显示计算结果如图14所示:图14输入矩阵A必须为方阵,否则无法计算行列式,提示错误如图15所示:图159>范数:输入矩阵A=[123;456;789],按下“范数”按钮,输出区显示计算结果如16所示:图16由于设计者能力有限,本计算器默认计算矩阵的2范数,其他范数暂不能计算。
10>LU分解:输入矩阵A=[123;456;426],按下“LU”按钮,输出区显示计算结果如图17所示:图17其中,输出前三行为L矩阵,中间三行为U矩阵,后三行为P矩阵11>线性方程组求解:AX=B输入A=[123;456;789](系数矩阵),B=[4;5;6](常数项),按下“Ax=B”按钮,输出区显示计算结果图18所示:图18本部分输入限制较大,须详细说明。
第一,系数矩阵必须是非奇异的方阵,否则方程组解不存在或不唯一,本计算器无法求解。
第二,常数项必须与系数矩阵行数相同,否则也会出现错误提示12>最简行阶梯形矩阵:输入矩阵A=[123;456;789],分别按下“阶梯形”按钮,输出区显示计算结果如图19所示:图1913>特征值:输入矩阵A=[123;456;789],按下“特征值”按钮,输出区显示计算结果如图20所示:图20附录:主要代码%%矩阵相加a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia~=ib|ja~=jb|(ia~=ib&ja~=jb)%判断A、B是否满足相加条件c='error.Matrix dimensions must agree.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=a+b;c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);end%%矩阵相减a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia~=ib|ja~=jb|(ia~=ib&ja~=jb)%判断A、B是否满足相减条件c='error.Matrix dimensions must agree.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=a-b;c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);end%%矩阵点乘a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia~=ib|ja~=jb|(ia~=ib&ja~=jb)%判断A、B是否满足点乘条件c='error.Matrix dimensions must agree.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=a.*b;c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);end%%矩阵相乘a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ja~=ib%判断A、B是否满足相乘条件c='error.Inner matrix dimensions must agree.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=a*b;c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);end%%矩阵点除a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia~=ib|ja~=jb|(ia~=ib&ja~=jb)%判断A、B是否满足点除条件c='error.Matrix dimensions must agree.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=a./b;c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);end%%矩阵左除a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia~=ib%判断A、B是否满足左除条件c='error.Matrix dimensions must agree.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=a\b;c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);end%%矩阵右除a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia~=ib%判断A、B是否满足右除条件c='error.Matrix dimensions must agree.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=a/b;c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);end%%矩阵求秩a=str2num(get(handles.edit1,'string'));c=a';set(handles.text1,'string',num2str(c))a=str2num(get(handles.edit1,'string')); result=rank(a);c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);%%求逆a=str2num(get(handles.edit1,'string'));[ia ja]=size(a);if ia~=ja%判断A是否为方阵c='error.Matrix dimensions must agree.';set(handles.text1,'String',c)guidata(hObject,handles);elseif abs(det(a))<1e-6%判断A是否为奇异阵c='error.Matrix is singular to working precision.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=inv(a);c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);endend%%求行列式a=str2num(get(handles.edit1,'string'));[ia ja]=size(a);if ia~=ja%判断A是否为方阵c='error.Matrix dimensions must agree.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=det(a);c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);end%%求2-范数a=str2num(get(handles.edit1,'string'));result=norm(a);c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles)%%求LU分解a=str2num(get(handles.edit1,'string'));[L,U,P]=lu(a);result=[L;U;P];c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles)%%求AX=Ba=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia~=ibc='error.';set(handles.text1,'String',c)guidata(hObject,handles);elseif ia~=ja%判断A是否为方阵c='error.Matrix must be square.';set(handles.text1,'String',c)guidata(hObject,handles);elseif det(a)==0%判断A是否为奇异阵c='error.Matrix is singular to working precision.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=a\b;c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);endendenda=str2num(get(handles.edit1,'string'));result=rref(a);c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles);%%求特征值a=str2num(get(handles.edit1,'string'));[ia ja]=size(a);if ia~=ja%判断A是否为方阵c='error.Matrix must be square.';set(handles.text1,'String',c)guidata(hObject,handles);elseresult=eig(a);c=num2str(result);set(handles.text1,'String',c)guidata(hObject,handles); end。