ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:198.14KB ,
资源ID:4728684      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4728684.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MATLAB设计矩阵计算器要点.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MATLAB设计矩阵计算器要点.docx

1、MATLAB设计矩阵计算器要点MATLAB程序设计语言大作业矩阵计算器题 目:矩阵计算器学 号:02123010姓 名:石星宇指导教师:汤建龙1、实验目的1、通过GUI(Graphical User Interface,简称GUI,图形用户界面,又称图形用户接口)设计矩阵计算器,熟悉MATLAB中GUI工具的使用和编程。2、加深对MATLAB GUI中句柄控制变量的理解。3、巩固线性代数中矩阵的基本运算。2、实验内容1、利用MATLAB中的GUIDE工具箱快速生成GUI界面。2、在生成的GUI界面中设计能够实现矩阵基本运算的矩阵计算器。3、实验结果通过GUIDE快速生成GUI界面设计的矩阵计算

2、器如下图所示:图1 Matrix Calculator基本界面该矩阵计算器包含四模块,分别为:输入区、输出区、功能区及其他运算区。4、功能描述1、功能概述本矩阵计算器能够实现一些基本的矩阵运算,包括对单个矩阵的运算以及对两个矩阵的运算。其中,对于两个矩阵的运算有:加、减、乘、除(左除、右除)、按元素乘、按元素除以及求解线性方程组;对于単个矩阵的运算有:转置(共轭与非共轭)、求逆、计算行列式、求秩、平方、立方、开方、求特征值、求2范数、LU分解、最简阶梯阵化简等。计算过程中,矩阵的输入方式与MATLAB中矩阵输入方式类似。即矩阵行中的元素以空格或逗号间隔;矩阵行之间以分号间隔;整个元素列表用方括

3、号括起来。2、功能详细描述2.1矩阵相加(减)输入A=1 2 3;4 5 6;7 8 9,B=1 4 7;2 5 8;3 6 9,按下“+”按钮,输出区显示计算结果如图2所示:图2 矩阵相加输入的A、B矩阵必须是维数相同,否则不能实现相加运算。如输入不同维数的矩阵且进行相加运算,则会提示出错如图3所示:图3 矩阵相加错误提示两矩阵相减的运算过程与相加运算类似,在此不再赘述。2.2矩阵相乘输入A=1 2 3;4 5 6;7 8 9,B=1 4 7;8 5 2;3 9 6,按下“*”按钮,输出区显示计算结果如图4所示:图4 矩阵相乘输入的A、B矩阵必须满足前者的列数等于后者的行数,否则不能实现矩阵

4、的乘法运算,出现错误提示如图5所示:图5 矩阵相乘错误提示2.3按元素乘(除)输入同2.2。按下“.*”按钮,输出区显示计算结果如图6所示:图6 矩阵按元素相乘输入的A、B矩阵必须是维数相同,否则不能实现按元素乘的运算。如输入不同维数的矩阵且进行按元素乘的运算,则会提示出错,提示信息同图3。2.4矩阵左(右)除输入A=1 2;3 5,B=1 2;5 7,按下“/L”按钮,输出区显示计算结果如图7所示:图7 矩阵左除输入的A、B矩阵必须满足行相等,否则出现错误提示如图8所示:图8 矩阵左除错误提示2.5矩阵转置(共轭与非共轭)输入A=2+,5;3,7-8,按下“A”(共轭转置)与“A.”按钮(非

5、共轭转置),输出区分别显示计算结果如图9所示:图9 共轭转置(上)与非共轭转置(下)2.6行列式计算输入A=1 2 4;4 5 6;7 8 9,按下“det”按钮,输出区显示计算结果如图10所示:图10 方阵求行列式输入矩阵A必须为方阵,否则无法计算行列式,提示错误如图11所示:图11 求行列式 错误提示2.7矩阵求逆输入A=1 2 4;4 5 6;2 5 8,按下“inv”按钮,输出区显示计算结果如图12所示:图12 矩阵求逆本矩阵计算器求逆功能只针对非奇异方阵,如果输入矩阵A为奇异阵或非方阵,均会提示错误,具体见图13、图14:图13 输入为非方阵时的错误提示图14 输入为奇异阵时的错误提

6、示2.8线性方程组求解输入A=1 2 3 ; 2 -5 3;3 -2 5 (系数矩阵),B=0 ; 5 ;9(常数项),按下“Ax=B”按钮,输出区显示计算结果如图15所示:图15 线性方程组求解本部分输入限制较大,须详细说明。第一,系数矩阵必须是非奇异的方阵,否则方程组解不存在或不唯一,本计算器无法求解。第二,常数项必须与系数矩阵行数相同,否则也会出现错误提示。2.9矩阵求秩与最简行阶梯阵化简输入矩阵A=1 2 3;4 5 6;4 5 6,分别按下“R”、“rref”按钮,输出区显示计算结果如图16所示:最简行阶梯阵矩阵的秩图16 矩阵求秩与最简行阶梯阵化简 2.10平方、立方、与开方运算输

7、入矩阵A=1 2 3;4 5 6;7 8 9,分别按下“2”、“3”、“Sqrt”按钮,输出区显示计算结果如图17所示:图17 矩阵平方、立方、与开方运算2.11矩阵特征值输入矩阵A=1 2 3;4 5 6;7 8 9,按下“eig”按钮,输出区显示计算结果如图18所示:图18 矩阵特征值求解2.12 LU分解输入矩阵A=1 2 3;4 5 6;4 2 6,按下“LU”按钮,输出区显示计算结果如图19所示:图19 矩阵LU分解其中输出区前三行为矩阵L,后三行为矩阵U,即:L = 0.2500 -0.2500 1.0000 1.0000 0 0 1.0000 1.0000 0U = 4.0000

8、 5.0000 6.0000 0 -3.0000 0 0 0 1.5000A=L*U.2.13求矩阵范数输入矩阵A=1 2 3;4 5 6;4 2 6,按下“Norm”按钮,输出区显示计算结果如图20所示:图20 求矩阵范数由于设计者能力有限,本计算器默认计算矩阵的2范数,其他范数暂不能计算。2.14其他运算设计本部分的目的在于实现功能区中无法一步实现的计算。比如两矩阵的线性组合(,其中均为常数)、矩阵的高次幂()等。具体用法见图21:图21 其他矩阵运算实现运算实现运算图21 其他矩阵运算(2)利用“其他运算”模块对一个矩阵进行操作时,另一个矩阵不能没有输入,因此,假设在操作A矩阵(),此时

9、B矩阵仍要赋值为空(),如图所示: 否则无法进行计算。附录(主要代码):%作者:石星宇%设计时间:2014年4月26日%设计目的:通过GUI设计矩阵计算器,熟悉MATLAB中GUI工具的使用和编程。% 加深对MATLAB GUI中句柄控制变量的理解。% 巩固线性代数中矩阵的基本运算。%功能简介:实现一些基本的矩阵运算,包括对单个矩阵的运算以及对两个矩阵的运算。其中,对于两个矩阵的运算有:加、减、乘、除(左除、右除)、按元素乘、按元素除以及求解线性方程组;对于単个矩阵的运算有:转置(共轭与非共轭)、求逆、计算行列式、求秩、平方、立方、开方、求特征值、求2范数、LU分解、最简阶梯阵化简等。func

10、tion varargout = Matrix_Calculator(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, Matrix_Calculator_OpeningFcn, . gui_OutputFcn, Matrix_Calculator_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_S

11、tate.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction Matrix_Calculator_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout =

12、Matrix_Calculator_OutputFcn(hObject, eventdata, handles)varargout1 = handles.output;function Matrix_A_Callback(hObject, eventdata, handles)function Matrix_A_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,Backgr

13、oundColor,white);Endfunction Matrix_B_Callback(hObject, eventdata, handles)function Matrix_B_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction add_Callback(hObject, eventdata, ha

14、ndles)A = eval(get(handles.Matrix_A,String);B = eval(get(handles.Matrix_B,String);iA jA=size(A);iB jB=size(B);if iA = iB | jA = jB |(iA = iB & jA = jB)%判断A、B是否满足相加条件 R=error.Matrix dimensions must agree.; set(handles.Answer,String,R) guidata(hObject, handles);else result = A + B ; R = num2str(result

15、); set(handles.Answer,String,R) guidata(hObject, handles);endfunction subtract_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);B = eval(get(handles.Matrix_B,String);iA jA=size(A);iB jB=size(B);if iA = iB | jA = jB |(iA = iB & jA = jB)%判断A、B是否满足相减条件 R=error.Matrix dimension

16、s must agree.; set(handles.Answer,String,R) guidata(hObject, handles);else result = A - B ; R = num2str(result); set(handles.Answer,String,R) guidata(hObject, handles);endfunction times_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);B = eval(get(handles.Matrix_B,String);i

17、A jA=size(A);iB jB=size(B);if jA=iB %判断A、B是否满足相乘条件 R=error.Inner matrix dimensions must agree.; set(handles.Answer,String,R) guidata(hObject, handles);else result = A * B ; R = num2str(result); set(handles.Answer,String,R) guidata(hObject, handles);end function L_divide_Callback(hObject, eventdata,

18、handles)A = eval(get(handles.Matrix_A,String);B = eval(get(handles.Matrix_B,String);iA jA=size(A);iB jB=size(B);if iA=iB %判断A、B是否满足左除条件 R=error.Matrix dimensions must agree.; set(handles.Answer,String,R) guidata(hObject, handles);else result = A B ; R = num2str(result); set(handles.Answer,String,R)

19、guidata(hObject, handles);endfunction R_divide_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);B = eval(get(handles.Matrix_B,String);iA jA=size(A);iB jB=size(B);if iA=iB %判断A、B是否满足右除条件 R=error.Matrix dimensions must agree.; set(handles.Answer,String,R) guidata(hObject, han

20、dles);else result = A / B ; R = num2str(result); set(handles.Answer,String,R) guidata(hObject, handles);endfunction transposition_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);result = A ;R = num2str(result);set(handles.Answer,String,R)guidata(hObject, handles);function

21、determinant_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);iA jA=size(A);if iA =jA %判断A是否为方阵 R=error.Matrix must be square.; set(handles.Answer,String,R) guidata(hObject, handles);else result = det(A) ; R = num2str(result); set(handles.Answer,String,R) guidata(hObject, ha

22、ndles);end function invertor_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);iA jA=size(A);if iA =jA %判断A是否为方阵 R=error.Matrix must be square.; set(handles.Answer,String,R) guidata(hObject, handles);else if det(A) = 0 %判断A是否为奇异阵 R=error.Matrix is singular to working precisi

23、on.; set(handles.Answer,String,R) guidata(hObject, handles); else result = inv(A) ; R = num2str(result); set(handles.Answer,String,R) guidata(hObject, handles); endendfunction rank_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);result = rank(A) ;R = num2str(result);set(ha

24、ndles.Answer,String,R)guidata(hObject, handles); function square_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);iA jA=size(A);if iA =jA %判断A是否为方阵 R=error.Inputs must be a scalar and a square matrix.; set(handles.Answer,String,R) guidata(hObject, handles);else result = A2

25、; R = num2str(result); set(handles.Answer,String,R) guidata(hObject, handles);end function cube_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);iA jA=size(A);if iA =jA %判断A是否为方阵 R=error.Inputs must be a scalar and a square matrix.; set(handles.Answer,String,R) guidata(hObj

26、ect, handles);else result = A3 ; R = num2str(result); set(handles.Answer,String,R) guidata(hObject, handles);endfunction times2_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);B = eval(get(handles.Matrix_B,String);result = A .* B ;R = num2str(result);set(handles.Answer,Str

27、ing,R)guidata(hObject, handles);function divede2_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);B = eval(get(handles.Matrix_B,String);result = A ./ B ;R = num2str(result);set(handles.Answer,String,R)guidata(hObject, handles); function transposition2_Callback(hObject, even

28、tdata, handles)A = eval(get(handles.Matrix_A,String);result = A. ;R = num2str(result);set(handles.Answer,String,R)guidata(hObject, handles); function eigenvalue_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);iA jA=size(A);if iA =jA %判断A是否为方阵 R=error.Matrix must be square.

29、; set(handles.Answer,String,R) guidata(hObject, handles);else result = eig(A) ; R = num2str(result); set(handles.Answer,String,R) guidata(hObject, handles);endfunction solve_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,String);B = eval(get(handles.Matrix_B,String);iA jA=size(A);iB jB=size(B);if iA = iB R=error.; set(handles.Answer,String,R) guidata(hObject, handles);else if iA =jA %判断A是否为方阵 R=error.Matrix must be square.; set(handles.Answer,String,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1