MATLAB设计矩阵计算器

合集下载

(word完整版)用MATLAB GUI设计简单计算器

(word完整版)用MATLAB GUI设计简单计算器

摘要基于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工程数学 第1章 使用方法入门

Matlab工程数学  第1章  使用方法入门

Matlab工程数学Matlab是“Matrix Laboratory”的缩写,意为“矩阵实验室”,是当今很流行的科学计算软件。

它的主要功能是给人们提供一个方便的数值计算平台。

Matlab的基本运算单元是不需指定维数的矩阵,系统提供了大量的矩阵及其它运算函数,可以方便的进行一些很复杂的计算,而且运算效率极高。

Matlab的命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程,完成特定的工作。

除基本部分外,Matlab还根据各专门领域中的特殊需要提供了许多可选的工具箱,在很多时候能够给予我们极大的帮助。

以下简单介绍一下Matlab软件的基本使用方法,并结合本讲义内容介绍如何使用Matlab软件解决一些常见的数值问题。

第1章使用方法入门1.1 操作方法1.1.1 启动和退出从Windows中双击Matlab图标,会出现Matlab命令窗口(Command Window),在一段提示信息后,出现系统提示符“>>”,这时你就可以输入命令了。

Matlab是一个交互式的系统,输入命令后,系统会马上解释和执行你输入的命令并输出结果。

如果命令有语法错误,系统会给出提示信息。

在当前提示符下,你可以通过上下箭头调出以前输入的命令。

用滚动条可以查看以前的命令及其输入信息。

退出Matlab和退出其它Windows程序一样,可以选择File菜单中的Exit Matlab菜单项,也可以使用Alt-F4热键。

还可以执行Matlab的Exit命令退出。

1.1.2. 变量和表达式Matlab命令的通常形式为:变量= 表达式表达式由操作符或其它特殊字符,函数和变量名组成。

Matlab执行表达式并将执行结果显示于命令后,同时存在变量中以留用。

如果变量名和“=”省略,即不指定返回变量,则名为ans的变量将自动建立。

例如:键入命令:A = [ 1.2 3.4 5.6 sin(2) ]系统将产生4维向量A,输出结果为:A =1.2000 3.4000 5.6000 0.9093键入1900/81结果为:ans =23.4568Matlab保留本次运行中建立的所有变量的信息。

4×4_矩阵键盘计算器设计

4×4_矩阵键盘计算器设计

西华大学课程设计说明书题目4×4 矩阵键盘计算器设计系(部) 电气信息学院专业(班级) 自动化3班姓名学号指导教师胡红平起止日期2012.6.10-2012.6.30计算机接口及应用课程设计任务书系(部):电气信息学院专业:09自动化指导教师:日期:2012-6-20西华大学课程设计鉴定表摘要近几年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结合,加以完善。

本任务是个简易得三位数的减法运算,用4×4 矩阵键盘及计算器设计,利用数码管实现255内的减法运算。

程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。

本任务重在设计构思与团队合作,使得我们用专业知识,专业技能分析和解决问题全面系统的锻炼。

关键词:单片机,AT89C51,矩阵键盘,数码管ABSTRACTIn recent years, along with the rapid development of science and technology, the application of SCM is unceasingly thorough, it causes the traditional control test technology increasingly updates. In real-time detection and automatic control of single-chip microcomputer application system, often as a core component to use, only microcontroller aspects of knowledge is not enough, should according to specific hardware combined, and perfects.This task is a simple three digits, subtract with 4 * 4 matrix keyboard and a calculator design, use digital tube realization within the 255 subtract. Program is according to the teaching material and within the network reference and compiled program, on the function is not perfect, restrictions also more. This task focuses on design conception and team cooperation, make us with professional knowledge, professional skills to analyze and solve problems of full system exercise.Keywords:Single-chip,AT89C51,Matrix keyboard,digital tube目录摘要 (I)ABSTRACT (II)第1章课题概述 (1)1.1 课题概述 (1)1.2 课题要求 (2)第2章系统设计 (3)2.1 设计思路 (3)2.2 框图设计 (3)2.3 知识点 (3)2.4 硬件设计 (4)2.4.1 电路原理图 (4)2.4.2 元件选择 (5)2.4.3 PCB制版及效果 (9)2.5 软件设计 (10)2.5.1 程序流程图 (10)2.6 系统仿真及调试 (11)2.6.1 硬件调试 (11)2.6.2 软件调试 (11)2.6.3 软硬件调试 (11)结论 (11)参考文献 (14)附录 (15)第1章课题概述1.1 课题概述随着当今时代的电子领域的发展,尤其是自动化的控制领域,传统的分立元件或数字逻辑电路构成的控制系统正被智能化的单片机所取代。

MATLAB基础及程序设计

MATLAB基础及程序设计

一、变量和数值
➢Matlab的变量有一定的命名规则: (1)变量名区分大小写。’A’与’a’是不同的变量。 (2)变量名不能超过63个字符。 (3)变量名必须以字母开头。 (4)关键字(如if,while等)不能作为变量名。 (5)有一些系统自动定义的特殊变量,如pi,inf,i等。
➢特殊变量 ans: 用于结果的缺省变量名 pi: 圆周率 eps:计算机的最小数 inf:无穷大
>>syms a b c x f2=a*x^2+b*x+c 上面的语句即创建了符号变量a,b,c,x,又创建了符号表达 式,f1,f2符号表达式相同。
二、符号表达式的代数运算: 特点: 1、传统的数值运算由于计算机的有效位数的 限制,会产生误差。符号运算则可以避免。
2、符号运算可以得出完全的封闭解或任意精 度的数值解。
六、代数方程组的求解
[例] x1+x2=5 2x1+x2=7 x1+2x3=4
求解x1,x2。 a=[1 1 0;2 1 0;1 0 2];b=[1;5;5]; x=a\b x=
2 3
七、多项式拟合 多项式拟合是用一个多项式来逼近一组给定的 数据,在数据分析上是常用的方法,使用polyfit 函数来实现.拟合的准则是最小二乘法。 [例] x0=0:0.1:1;
2、用MATLAB函数创建 + rand —— 随机矩阵 >>rand(m,n)
+eye —— 单位矩阵 >>eye(m,n)
+zeros ——全部元素都为0 的矩阵
+>>zeros(m,n) +ones ——全部元素都为1的 矩阵
+ >>ones(m,n)

矩阵计算器乘法

矩阵计算器乘法

矩阵计算器乘法矩阵计算器是很多科学、技术和商业领域必不可少的工具。

其中矩阵乘法是矩阵计算器最常用的功能之一,因为它可以用于求解线性方程组、拟合数据、分析财务数据等等。

本文将分步骤介绍矩阵乘法的计算方法及其在矩阵计算器中的应用。

1. 矩阵乘法的定义设A是m×n的矩阵,B是n×p的矩阵。

则它们的乘积AB是m×p的矩阵,其中第i行第j列的元素为:AB(i,j) = A(i,1)B(1,j) + A(i,2)B(2,j) + … + A(i,n)B(n,j)2. 矩阵乘法的计算方法采用矩阵乘法的计算方法,需对两个矩阵中的每个元素逐一相乘求和。

具体步骤如下:1)确定矩阵的维数。

A矩阵的行数为m,列数为n;B矩阵的行数为n,列数为p。

2)计算矩阵乘积的每个元素。

设A的第i行为A(i, 1), A(i,2),…,A(i,n);B的第j列为B(1,j),B(2,j),…,B(n,j)。

则矩阵乘积AB的第i行第j列元素的计算如下所示:AB(i,j) = A(i,1)B(1,j) + A(i,2)B(2,j) + … + A(i,n)B(n,j)3. 矩阵乘法在矩阵计算器中的应用矩阵计算器是一种能够进行各种矩阵计算的工具。

在计算矩阵乘法时,需要将两个矩阵以某种方式输入到计算器中,并指定它们的维数。

一般而言,矩阵计算器提供了多种输入方式,包括手动输入、从文件中读取、从数据库中读取、从公式中生成等等。

以实例计算为例,以下是在矩阵计算器中进行矩阵乘法的具体步骤:1)在矩阵计算器的界面中,选择“矩阵”功能。

2)手动输入两个矩阵A、B,或从文件中读取。

3)指定两个矩阵的维数:A矩阵的行数为m,列数为n;B矩阵的行数为n,列数为p。

4)执行矩阵乘法运算。

5)输出矩阵乘积结果,即矩阵C。

4. 总结矩阵乘法作为矩阵计算器最常用的功能之一,其在科学、技术和商业领域中的应用非常广泛。

掌握矩阵乘法的计算方法以及在矩阵计算器中的操作方法,有助于我们更好地运用矩阵计算器中的功能,解决实际问题,提高工作效率。

matlab简易计算器设计步骤与回调函数设计说明

matlab简易计算器设计步骤与回调函数设计说明

简易算术计算器的设计一、算术计算器的功能:能进行简单的加、减、乘、除法运算,输入文本框显示为常量多项式,输出文本框显示为精确到小数点后十位的数值。

计算器包含十个数字键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按键,调整控件布局。

矩阵计算器求标准型

矩阵计算器求标准型

矩阵计算器求标准型在矩阵计算器中,我们可以通过输入矩阵的元素来创建一个矩阵对象。

矩阵对象可以进行加法、减法、乘法等操作,并且提供了一些常用的功能,例如计算矩阵的秩、行列式、特征值等。

当我们想要求矩阵的标准型时,可以使用矩阵计算器中提供的相应功能。

矩阵的标准型是指将矩阵通过一系列的行变换和列变换,转换成一种特殊的形式,使得矩阵具有较简单的表达形式。

求矩阵的标准型的过程可以分为以下几步:1.首先,我们需要将原矩阵进行初等行变换,将矩阵变换为行阶梯形式。

行阶梯形矩阵是指矩阵中每一行的第一个非零元素(称为主元)在每一行中的位置都比前一行靠右。

我们可以使用矩阵计算器中提供的行变换功能,通过交换矩阵的两行、将其中一行乘以一个非零常数、将其中一行加上另一行的k倍等操作,将矩阵转换为行阶梯形式。

2.接下来,我们需要继续对行阶梯形矩阵进行初等行变换,将矩阵变换为行最简形式。

行最简形矩阵是指从形式上看,主元所在的列除了主元之外,其他位置上的元素都为零。

我们可以通过进一步的行变换操作,将矩阵转换为行最简形式。

3.然后,我们需要将行最简形矩阵进行初等列变换,将矩阵变换为列最简形式。

列最简形矩阵是指从形式上看,主元所在的行除了主元之外,其他位置上的元素都为零。

我们可以通过交换矩阵的两列、将其中一列乘以一个非零常数、将其中一列加上另一列的k倍等操作,将矩阵转换为列最简形式。

4.最后,我们需要对列最简形矩阵进行初等列变换,将矩阵变换为标准型。

标准型矩阵是指从形式上看,除了主元所在行、列的位置上的元素为单位元素之外,其他位置上的元素都为零。

我们可以通过进一步的列变换操作,将矩阵转换为标准型。

以上就是求解矩阵的标准型的一般步骤。

在矩阵计算器中,我们只需要输入待求矩阵的元素,并调用求标准型的功能函数,即可得到矩阵的标准型。

需要注意的是,求解矩阵的标准型可能会涉及到一些复杂的运算,例如求矩阵的逆、特征多项式、特征向量等。

因此,在使用矩阵计算器进行矩阵标准型的计算时,需要确保输入的矩阵具有良好的性质,例如方阵满秩等。

矩阵计算器

矩阵计算器

用Matlab GUI编写一个简单的矩阵计算器摘要:矩阵是线性代数的一个主要内容,又是解决众多问题的主要工具。

而矩阵运算是矩阵理论的基本内容之一。

目前,普通的计算器只能够进行数的运算,而不能够实现矩阵的运算。

随着科技的不断发展,人们对矩阵的运用也会不断的增多。

因此,制作一个矩阵计算器对当今科技的发展有一定的推动作用。

关键字:矩阵运算、Matlab GUI、计算器正文:一、矩阵的相关知识在数学上,矩阵是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵。

这一概念由19世纪英国数学家凯利首先提出。

矩阵,是由个数组成的一个行列的矩形表格,通常用大写字母表示,组成矩阵的每一个数,均称为矩阵的元素,通常用小写字母其元素表示,其中下标都是正整数,他们表示该元素在矩阵中的位置。

比如,或表示一个矩阵,下标表示元素位于该矩阵的第行、第列。

元素全为零的矩阵称为零矩阵。

当一个矩阵的行数与烈数相等时,该矩阵称为一个阶方阵。

对于方阵,从左上角到右下角的连线,称为主对角线;而从左下角到右上角的连线称为付对角线。

若一个阶方阵的主对角线上的元素都是,而其余元素都是零,则称为单位矩阵,记为,即:。

如一个阶方阵的主对角线上(下)方的元素都是零,则称为下(上)三角矩阵,例如,是一个阶下三角矩阵,而则是一个阶上三角矩阵。

今后我们用表示数域上的矩阵构成的集合,而用或者表示数域上的阶方阵构成的集合。

矩阵是高等代数学中的常见工具,其中的一个重要用途是解线性方程组。

线性方程组中未知量的系数可以排成一个矩阵,加上常数项,则称为增广矩阵。

另一个重要用途是表示线性变换,即是诸如f(x) 4x之类的线性函数的推广。

同时也常见于统计分析等应用数学学科中。

在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。

矩阵的运算是数值分析领域的重要问题。

将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。

用MATLAB做的 一个计算器

用MATLAB做的 一个计算器

一、布局GUI。

1.打开Matlab,输入Guide 回车或者在工具栏上点击图标出现Guide 窗口:2.然后双击“Blank GUI(Default)”出现GUI窗口3.添加按钮4.根据按钮的作用及视觉效果做一定的修改把按钮的字符串大小、颜色进行设置,对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。

最终设置的静态文本框为白色,其他按钮均为分红色。

5.保存、添加功能函数把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。

以下是相应按钮的功能函数。

(1)数字按键编写。

在function pushbutton1_Callback(hObject, eventdata, handles)下输入:textString = get(handles.text1,'String');textString =strcat(textString,'0');set(handles.text1,'String',textString)这是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1的内容,并存储数个“0”,然后由set(handles.text1,'String','textString'在text1中输出。

同理,分别在function pushbutton2~10_Callback(hObject, eventdata, handles)下给1~9数字按键下编写此类程序。

(2).符号键:function pushbutton12_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'+');set(handles.text1,'String',textString)strcat的作用是将两个字符串连接起来,就是在已输入的存储数据textString 后添加“+”进行运算。

MATLAB中的矩阵运算

MATLAB中的矩阵运算
上页 下页 退出
哈 工 程 大 学 数 值 计 算 软 件
●randn生成正态分布的随机阵 生成正态分布的随机阵 randn(n)生成 ×n的正态随机阵; 生成n× 的正态随机阵 的正态随机阵; 生成 randn(m,n),randn([m,n])生成 ×n的正态随机阵; 生成m× 的正态随机阵 的正态随机阵; 生成 randn(size(A))生成与矩阵 大小相同的正态随机阵。 生成与矩阵A大小相同的正态随机阵 生成与矩阵 大小相同的正态随机阵。 (5)其它基本运算 左右翻转; 上下翻转; ●fliplr(A) 将A左右翻转;●flipud(A) 将A上下翻转; 左右翻转 上下翻转 旋转90度 返回A ● rot90(A) 将 A旋转 度 。 ● tril(A)返回 A 的下三角部分 ; 旋转 返回 的下三角部分; tril(A,k)返回A第K 条对角线以下部分,K=0为主对角线, 返回A 条对角线以下部分,K=0为主对角线, 返回 K>0为主对角线以上,K<0为主对角线以下。 K>0为主对角线以上,K<0为主对角线以下。 返回A ●triu(A), triu(A,K)返回A的上三角部分,其它同上。 返回 的上三角部分,其它同上。 返回以向量v为主对角线的矩阵 ●diag(v)返回以向量 为主对角线的矩阵; 返回以向量 为主对角线的矩阵; diag(v,k) 若 v 是 n 个 元 素 的 向 量 , 则 它 返 回 一 个 大 小 为 n+abs(k)方阵,向量 位于第 条对角线上。K=0代表主对角线 方阵, 位于第k条对角线上 方阵 向量v位于第 条对角线上。 代表主对角线 为主对角线以上, 为主对角线以下。 , k>0为主对角线以上,k<0为主对角线以下。 diag(A)以向量 为主对角线以上 为主对角线以下 以向量 形式, 返回A 的主对角线元素; 对于矩阵A 形式 , 返回 A 的主对角线元素 ; diag(A,k)对于矩阵 A , 返回 对于矩阵 由第k条对角线构成的列向量 条对角线构成的列向量。 由第 条对角线构成的列向量。

MATLAB的矩阵运算

MATLAB的矩阵运算

MATLAB的矩阵运算阅读⽬录 MATLAB是基于矩阵和数组计算的,可以直接对矩阵和数组进⾏整体的操作,MATLAB有三种矩阵运算类型:矩阵的代数运算、矩阵的关系运算和矩阵的逻辑运算。

其中,矩阵的代数运算应⽤最⼴泛。

本⽂主要讲述矩阵的基本操作,涉及矩阵的创建、矩阵的代数运算、关系运算和逻辑运算等基本知识。

矩阵的创建直接输⼊法创建矩阵% 1. 直接输⼊法创建矩阵>> A = [1,2,3; 4,5,6; 7,8,9]A =1 2 34 5 67 8 9函数法创建矩阵简单矩阵% 2. 函数法创建矩阵>> zeros(3)% ⽣成3x3的全零矩阵ans =0 0 00 0 00 0 0>> zeros(3,2)% ⽣成3x2的全零矩阵ans =0 00 00 0>> eye(3)% ⽣成单位矩阵ans =1 0 00 1 00 0 1>> ones(3)% ⽣成全1矩阵ans =1 1 11 1 11 1 1>> magic(3)% ⽣成3x3的魔⽅阵ans =8 1 63 5 74 9 2>> diag(1:3)% 对⾓矩阵ans =1 0 00 2 00 0 3>> diag(1:5,1)% 对⾓线向上移1位矩阵ans =0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 4 0 0 0 0 0 0 5 0 0 0 0 0 0 >> diag(1:5,-1)% 对⾓线向下移1位矩阵ans =0 0 0 0 0 01 0 0 0 0 0 02 0 0 0 0 0 03 0 0 0 0 0 04 0 0 0 0 0 05 0 >> triu(ones(3,3))% 上三⾓矩阵ans =1 1 10 1 10 0 1>> tril(ones(3,3))% 下三⾓矩阵ans =1 0 01 1 01 1 1随机矩阵>> rand(3)% ⽣成随机矩阵ans =0.2898 0.8637 0.05620.4357 0.8921 0.14580.3234 0.0167 0.7216>> rand('state',0); % 设定种⼦数,产⽣特定种⼦数下相同的随机数>> rand(3)ans =0.9501 0.4860 0.45650.2311 0.8913 0.01850.6068 0.7621 0.8214>> a = 1; b = 100;>> x = a + (b-a)* rand(3)% 产⽣区间(1,100)内的随机数x =38.2127 20.7575 91.113389.9610 31.0064 53.004043.4711 54.2917 31.3762>> a = 1; b = 100;>> a + fix(b * rand(1,50))% 产⽣50个[1,100]内的随机正整数ans =列 1 ⾄ 154 72 77 6 63 27 32 53 41 90 58 57 40 70 57列 16 ⾄ 3035 60 28 5 84 11 73 45 100 57 47 42 22 24 32列 31 ⾄ 4587 26 97 31 38 35 71 62 76 80 22 90 90 94 28列 46 ⾄ 5048 26 37 53 39相似函数扩展>> randn(3)% ⽣成均值为0,⽅差为1的正太分布随机数矩阵ans =-0.4326 0.2877 1.1892-1.6656 -1.1465 -0.03760.1253 1.1909 0.3273>> randperm(10)% ⽣成1-10之间随机分布10个正整数ans =4 9 10 25 8 1 3 7 6% 多项式x^3 - 7x + 6 的伴随矩阵>> u = [1,0,-7,6];>> A = compan(u)% ⽣成伴随矩阵A =0 7 -61 0 00 1 0>> eig(A) % 此处eig()函数⽤于求特征值% 利⽤伴随矩阵求得⽅程的根ans =-3.00002.00001.0000矩阵的运算矩阵的代数运算矩阵的算术运算>> A = [1,1;2,2];>> B = [1,1;2,2];>> AA =1 12 2>> BB =1 12 2>> A + Bans =2 24 4>> B-Aans =0 00 0>> A * Bans =3 36 6>> A^2ans =3 36 6>> A^3ans =9 918 18矩阵的运算函数>> C = magic(3)C =8 1 63 5 74 9 2>> size(C)ans =3 3>> length(C)ans =3>> sum(C)ans =15 15 15>> max(C)ans =8 9 7>> C'ans =8 3 41 5 96 7 2>> inv(C)ans =0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028矩阵的元素群运算元素群运算,是指矩阵中的所有元素按单个元素进⾏运算,也即是对应位置进⾏运算。

基于MATLAB的多功能计算器设计与实现

基于MATLAB的多功能计算器设计与实现

基于MATLAB的多功能计算器设计与实现摘要随看信息技术的发展,数据变得越来越重要,针对数据的处理也越来越复杂,计算器在我们日常生活学习中扮演越来越重要角色。

本文基于MATLAB设计的GUI 多功能计算器,包括三部分:简易计算器、科学计算器和程序员计算器。

其中,简易计算器包括了常用的加减乘除;科学计算器在加减乘除上,添加了正余弦、阶乘和对数等常用的数学计算;程序员计算器包括了二进制、八进制、十六进制的相互转换和二进制的与、或和异或等逻辑运算。

此多功能计算器改进了以前功能单一的计算器,具有较强的实用性。

关键字:MATLAB; GUI ;多功能计算器AbstractWith the development of information technology, the data become more andmore complicated, according to data operations have become increasingly frequent, thecalculator is playing a more and more important role in leamning in our daily life. In this paper,MATLAB design of GUI based multi functional calculator, consists of three parts: a simplecalculator, scientific calculator and programmers calculator. The simple calculator, includingcommon add, subtract, multiply and divide; scientific calculator in add, subtract, multiply anddivide, add the commonly used mathematical cosine, factorial and logarithm calculation;programmers calculator includes the conversion of binary, octal, hexadecimal and binarysixteen and, or and XOR logic operation. The multi-function calculator before improvedsingle function has a strong practical.Keyword: MATLAB; GUI; Multi Function Calculator目录第1章绪论 (1)1.1.基于MATLAB的多功能计算器设计的目的和意义 (1)1.2国内外现状分析 (1)1.2.1 国内外计算器的发展 (1)1.2.2计算器的类型 (2)第2章数字信号处理原理概念 (4)2.1数字信号处理 (4)2.2数字信号处理的概述 (4)2.3用MATLAB实现信号处理 (4)2.3.1信号的取样 (4)2.3.2信号的重构 (5)第3章计算器总体设计 (6)3.1计算器整体设计思路 (6)3.2计算器的功能实现 (7)3.2.1数字0-9设计与实现 (7)3.2.2四则运算设计 (7)3.2.3简单科学计算设计 (7)3.2.4功能按钮设计 (7)第4章 MATLAB GUI界面设计 (8)4.1MATLAB GUI介绍 (8)4.2GUI界面创建的基本知识 (8)4.3计算器界面设计 (9)第5章 MATLAB程序设计 (10)5.1 M文件 (10)5.1.1局部变量与全局变量 (10)5.1.2M文件的编辑与运行 (11)5.1.3脚本文件 (13)5.1.4函数文件 (13)5.1.5函数调用 (14)5.2MATLAB的程序控制结构 (16)5.3 数据的输入与输出 (17)5.3.1 键盘输入语句(input) (17)5.3.2屏幕输出语句(disp) (17)5.3.3 M数据文件的存储/加载(save/load) (17)5.3.4二进制数据文件的存储/读取 (18)5.4.面向对象程序设计的基本方法 (19)5.4.1.创建类目录 (19)5.4.2.建立类的数据结构 (19)5.4.3创建类的基本方法 (19)5.4.4重载运算 (19)5.4.5面向对象的函数 (19)5.5MATLAB程序优化 (19)结语 (20)附录 (21)参考文献 (28)致谢...............................................................................................................第1章绪论1.1.基于MATLAB的多功能计算器设计的目的和意义当今时代是一个信息化的时代,信息化的时代到处充满了数据,生活在这个信息化时代的人们,无论人们在做什么行业,都需要时时刻刻跟数据打交道。

得力计算器矩阵特征值

得力计算器矩阵特征值

得力计算器矩阵特征值
计算器求矩阵特征值可以按以下方式来:
1、按MODE,6,进入矩阵计算模式;
2、根据提示创建一个新矩阵,刚进模式的时候会自动提示你创建,也可以按SHIFT,4,2,自己创建;
3、选择矩阵A,B,C中的一个,再选大小,一共有两页;
4、进入矩阵编辑界面,输入表达式,按[=]可以编辑矩阵内容。

按AC退出。

按SHIFT,4,2可以选择矩阵并编辑;
5、编辑界面。

按SHIFT,4可以选择矩阵了,3-5分别对应A-C。

可以加减乘,平方之类的;
6、最后的结果会保留在MatAns中(SHIFT,4,6,=打开),其结果就是矩阵特征值。

矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。

在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。

矩阵的运算是数值分析领域的重要问题。

将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。

对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。

关于矩阵相关理论的发展和应用,请参考矩阵理论。

在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。

数值分析的主要分支致力于开发矩阵计算的有效算法,这是一个几个世纪以来的课题,是一个不断扩大的研究领域。

矩阵分解方法简化了理论和实际的计算。

针对特定矩阵结构(如稀疏矩阵和近角矩阵)定制的算法在有限元方法和其他计算中加快了计算。

无限矩阵发生在行星理论和原子理论中。

无限矩阵的一个简单例子是代表一个函数的泰勒级数的导数算子的矩阵。

MATLAB的矩阵和数组的运算

MATLAB的矩阵和数组的运算

武夷学院实验报告课程名称:实用统计软件项目名称:MATLAB的矩阵和数组的运算姓名:专业:班级:学号:同组成员:无一、实验准备1:(一)、实验环境软件准:计算机、MATLAB软件、实验教材(二)、实验所需知识点准备:实验原理:数组运算侧重数值之间的运算,在进行加、减时是数组中对应位置上数值进行加减,这与矩阵运算一致。

数组乘与矩阵乘意义完全不同。

矩阵乘遵循左侧矩阵的第一行与右侧矩阵第一列对应相乘然后相加,得到新矩阵里第一项,与此类推得到之后的项。

数组乘指对应位置的数值相乘。

特殊矩阵的产生通常有特定的函数指令,而这些指令通常是英文。

因此在运用时要牢记英文含义。

1.矩阵与数组的输入.对于较小较简单的矩阵,从键盘上直接输入矩阵是最常用的数值矩阵创建方法.用这种方法输入矩阵时注意以下三点:(1)整个输入矩阵以方括号“[ ]”为其首尾;(2)矩阵的元素必须以逗号“,”或空格分隔;(3)矩阵的行与行之间必须用分号“;”或回车键隔离.2.常用矩阵的生成. Matlab为方便编程和运算,提供了一些常用矩阵的生成指令:eye(n) 单位矩阵全1矩阵零矩阵eye(m,标准型矩阵ones(m,全1矩阵zeros(m,零矩阵eye(size(A)) 与A同型的标准型矩阵ones(size(A)) 与A同型的全1矩阵zeros(size(A)) 与A同型的零矩阵3.矩阵元素的标识.矩阵的元素、子矩阵可以通过标量、向量、冒号的标识来援引和赋值.(1)矩阵元素的标识方式A(ni,nj). ni,nj都是标量.若它们不是整数,则在1注:1、实验准备部分包括实验环境准备和实验所需知识点准备。

2、若是单人单组实验,同组成员填无。

式中会自动圆整到最临近整数.ni指定元素的行位置,nj指定元素的列位置.(2)子矩阵的序号向量标识方式A(v,w).4.矩阵运算和数组运算.矩阵运算的指令和意义如下:A' 矩阵A的共轭转置矩阵,当A是实矩阵时,A' 是A的转置矩阵.s-B B-s 标量和矩阵相减(Matlab约定的特殊运算,含意同上).A+B 两个同型矩阵A与B相加.s*A 数与矩阵A相乘A-B 两个同型矩阵A与B相减.A*B 矩阵A与矩阵B相乘,要求A的列数等于B的行数.s+B 标量和矩阵相加(Matlab约定的特殊运算,等于s加B的每一个分量)元行位置,nj指定元素的列位置.(2)子矩阵的序号向量标识方式A(v,w).4.矩阵运算和数组运算.矩阵运算的指令和意义如下:A' 矩阵A的共轭转置矩阵,当A是实矩阵时,A' 是A的转置矩阵.s-B B-s 标量和矩阵相减(Matlab约定的特殊运算,含意同上).A+B 两个同型矩阵A与B相加.s*A 数与矩阵A相乘A-B 两个同型矩阵A与B相减.A*B 矩阵A与矩阵B相乘,要求A的列数等于B的行数.s+B 标量和矩阵相加(Matlab约定的特殊运算,等于s加B的每一个分量)二、实验过程记录2:(一)、实验目的:1、学会矩阵和数组运算的基本规律;2、会进行编程运算来检验结果。

Matlab教程(精简版)

Matlab教程(精简版)

Matlab教程(简单)1.MA TLAB 程序设计与应用 (2)1-0 什幺是MA TLAB (2)1-1、基本运算与函数 (2)1-1-1 MA TLAB基本的算术运算和矩阵 (2)1-1-3 建立较大阵列 (6)1-1-3 阵列运算 (6)1-2、重复命令 (7)1-3、逻辑命令 (8)1-4、集合多个命令于一个M档案 (8)1-5、搜寻路径 (9)1-6、资料的储存与载入 (10)1-7、结束MA TLAB (10)2.基本xy平面绘图命令 (11)3.基本XYZ立体绘图命令 (15)1.2.MATLAB 程序设计与应用1-0 什幺是MATLABMA TLAB (MA Trix LABoratory)具有用法简易、可灵活运用、程序结构强又兼具延展性。

以下为其几个特色:∙功能强的数值运算- 在MA TLAB环境中,有超过500种数学、统计、科学及工程方面的函数可使用,函数的标示自然,使得问题和解答像数学式子一般简单明了,让使用者可全力发挥在解题方面,而非浪费在电脑操作上。

∙先进的资料视觉化功能- MA TLAB的对象导向图形架构让使用者可执行视觉数据分,并制作高品质的图形,完成科学性或工程性图文并茂的文章。

∙高阶但简单的程序环境- 做为一种直译式的程序语言,MA TLAB容许使用者在短时间内写完程序,所花的时间约为用FORTRAN或 C 的几分之一,而且不需要编译(compile)及联结(link) 即能执行,同时包含了更多及更容易使用的内建功能。

∙开放及可延伸的架构- MA TLAB容许使用者接触它大多数的数学原使码,检视运算法,更改现存函数,甚至加入自己的函数使MA TLAB成为使用者所须要的环境。

∙丰富的程序工具箱- MA TLAB的程序工具箱融合了套装前软体的优点,与一个灵活的开放但容易操作之环境,这些工具箱提供了使用者在特别应用领域所需之许多函数。

现有工具箱有:符号运算(利用Maple V的计算核心执行)、影像处理、统计分析、讯号处理、神经网路、模拟分析、控制系统、即时控制、系统确认、强建控制、弧线分析、最佳化、模糊逻辑、mu分析及合成、化学计量分析。

旋转矩阵计算器

旋转矩阵计算器

旋转矩阵计算器摘要:本文介绍了旋转矩阵的概念和计算方法,并提供了一个旋转矩阵计算器的设计和实现。

引言:在计算机图形学和空间几何等领域,旋转矩阵是一种重要的变换工具。

它可以用于描述物体在三维空间中的旋转操作,被广泛应用于计算机游戏、三维建模和动画等领域。

计算旋转矩阵可以帮助我们精确地控制对象的旋转行为,从而实现更加逼真和自然的视觉效果。

本文将介绍旋转矩阵的基本概念和计算方法,并开发了一个简单的旋转矩阵计算器来辅助计算。

一、旋转矩阵的基本概念旋转矩阵是一个三维矩阵,用于描述物体在三维空间中的旋转变换。

它是一个正交矩阵,即列向量之间两两正交,并且每个列向量的模长都是1。

旋转矩阵可以表示为一个3×3的矩阵,其中每个元素代表了坐标轴上的三个分量。

二、旋转矩阵的计算方法1. 绕x轴旋转:绕x轴旋转的旋转矩阵可以表示为:```|1 0 0|Rx = |0 cosθ -sinθ||0 sinθ cosθ|```其中θ代表旋转角度。

2. 绕y轴旋转:绕y轴旋转的旋转矩阵可以表示为:```|cosθ 0 sinθ|Ry = | 0 1 0||-sinθ 0 cosθ|```其中θ代表旋转角度。

3. 绕z轴旋转:绕z轴旋转的旋转矩阵可以表示为:```|cosθ -sinθ 0|Rz = |sinθ cosθ 0|| 0 0 1|```其中θ代表旋转角度。

综合上述三种情况,我们可以得到物体绕任意坐标轴旋转的旋转矩阵。

通过将这些旋转矩阵按照顺序相乘,我们可以实现物体在三维空间中的复杂旋转变换。

三、旋转矩阵计算器的设计和实现基于上述的计算方法和理论基础,我们设计了一个旋转矩阵计算器,以帮助用户快速计算旋转矩阵。

1. 用户界面设计旋转矩阵计算器的用户界面简洁明了,主要包括一个输入框和一个计算按钮。

用户可以输入旋转角度以及选择绕哪个坐标轴旋转。

计算按钮用于开始计算旋转矩阵。

2. 计算旋转矩阵的算法根据用户在界面上的输入,我们首先获取旋转角度和选择的坐标轴。

特征值的计算

特征值的计算

实验七 矩阵特征值问题计算7.1实验目的① 掌握求矩阵的特征值和主特征向量的幂法;② 培养编程与上机调试能力.7.2算法描述7.2.1幂法设n n A R ⨯∈有n 个线性无关的特征向量12,,...,n X X X ,而相应的特征值满足12...n λλλ>≥≥,则对任意非零初始向量000V U =≠ ,按下列公式构造向量序列:0010,0,1,2,.../max()k k k k k V U V AU k U V V -⎧=≠⎪==⎨⎪=⎩ 其中max()k V 表示k V 中模最大的分量 并有11lim max()k k X U X →∞= ,1lim max()k k V λ→∞= 幂法求矩阵的特征值和主特征向量步骤如下:①任给n 维初始向量00U = ;②按1(0,1,2,...)k k U AU k +== 计算1k U +;③若1k +从某个数以后分量之比 1()()k i k iU C U +≈ (常数)(1,2,....,i n =)则1C λ=,而k U 即是与1λ对应的一个近似特征向量.7.3实验题目:题目已知矩阵411132123-⎛⎫ ⎪-- ⎪ ⎪-⎝⎭,计算该矩阵主特征值和相应的特征向量.参考结果主特征值为6;相应的特征向量为(1,1,1)T-7.4实验要求(1) 选择一种计算机语言设计出幂法求主特征值和相应特征向量的程序,并且选择不同的初值,观察所需的迭代次数和迭代结果.(2) 利用Matlab 求特征值和特征向量调用格式1: eig(A) %得到特征值列向量调用格式2:[,]()D X eig A ,其中D 为由特征列向量构成的方阵,X 为由特征值构成的对角阵. %得到特征值和所对应的特征向量Matlab6.1环境下操作如下:>> A=[4 -1 1;-1 3 -2 ;1 -2 3]; %输入矩阵A>> [D,X]=eig(A) %求矩阵特征值和对应的特征向量7.5思考幂法收敛速度取决于什么?怎样加速收敛?。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB程序设计语言大作业——矩阵计算器题目:矩阵计算器学号:02123010姓名:石星宇指导教师:汤建龙一、实验目的1、通过GUI(Graphical User Interface,简称GUI,图形用户界面,又称图形用户接口)设计矩阵计算器,熟悉MATLAB中GUI工具的使用和编程。

2、加深对MATLAB GUI中句柄控制变量的理解。

3、巩固线性代数中矩阵的基本运算。

二、实验内容1、利用MATLAB中的GUIDE工具箱快速生成GUI界面。

2、在生成的GUI界面中设计能够实现矩阵基本运算的矩阵计算器。

三、实验结果通过GUIDE快速生成GUI界面设计的矩阵计算器如下图所示:图1 Matrix Calculator基本界面该矩阵计算器包含四模块,分别为:输入区、输出区、功能区及其他运算区。

四、功能描述1、功能概述本矩阵计算器能够实现一些基本的矩阵运算,包括对单个矩阵的运算以及对两个矩阵的运算。

其中,对于两个矩阵的运算有:加、减、乘、除(左除、右除)、按元素乘、按元素除以及求解线性方程组;对于単个矩阵的运算有:转置(共轭与非共轭)、求逆、计算行列式、求秩、平方、立方、开方、求特征值、求2范数、LU 分解、最简阶梯阵化简等。

计算过程中,矩阵的输入方式与MATLAB 中矩阵输入方式类似。

即①矩阵行中的元素以空格或逗号间隔;②矩阵行之间以分号间隔;③整个元素列表用方括号括起来。

2、功能详细描述 2.1矩阵相加(减)输入A=[1 2 3;4 5 6;7 8 9],B=[1 4 7;2 5 8;3 6 9],按下“+”按钮,输出区显示计算结果如图2所示:输入的A 、B 矩阵必须是维数相同,否则不能实现相加运算。

如输入不同维数的矩阵且进行相加运算,则会提示出错如图3所示:两矩阵相减的运算过程与相加运算类似,在此不再赘述。

图2 矩阵相加图3 矩阵相加错误提示2.2矩阵相乘输入A=[1 2 3;4 5 6;7 8 9],B=[1 4 7;8 5 2;3 9 6],按下“*”按钮,输出区显示计算结果如图4所示:输入的A 、B 矩阵必须满足前者的列数等于后者的行数,否则不能实现矩阵的乘法运算,出现错误提示如图5所示:2.3按元素乘(除)输入同2.2。

按下“.*”按钮,输出区显示计算结果如图6所示:图4 矩阵相乘 图5 矩阵相乘错误提示图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+i,5;3,7-8i],按下“A’”(共轭转置)与“A.’”按钮(非共轭转置),输出区分别显示计算结果如图9所示:2.6行列式计算输入A=[1 2 4;4 5 6;7 8 9],按下“det ”按钮,输出区显示计算结果如图10所示:图9 共轭转置(上)与非共轭转置(下)图10 方阵求行列式输入矩阵A 必须为方阵,否则无法计算行列式,提示错误如图11所示:2.7矩阵求逆输入A=[1 2 4;4 5 6;2 5 8],按下“inv ”按钮,输出区显示计算结果如图12所示:本矩阵计算器求逆功能只针对非奇异方阵,如果输入矩阵A 为奇异阵或非方阵,均会提示错误,具体见图13、图14:图11 求行列式 错误提示图12 矩阵求逆2.8线性方程组求解输入A=[1 2 3 ; 2 -5 3;3 -2 5 ](系数矩阵),B=[0 ; 5 ;9](常数项),按下“Ax=B ”按钮,输出区显示计算结果如图15所示:本部分输入限制较大,须详细说明。

第一,系数矩阵必须是非奇异的方阵,否则方程组解不存在或不唯一,本计算器无法求解。

第二,常数项必须与系数矩阵行数相同,否则也会出现错误提示。

2.9矩阵求秩与最简行阶梯阵化简输入矩阵A=[1 2 3;4 5 6;4 5 6],分别按下“R ”、“rref ”按钮,输出区显示计算结果如图16所示:图14 输入为奇异阵时的错误提示 图15 线性方程组求解2.10平方、立方、与开方运算输入矩阵A=[1 2 3;4 5 6;7 8 9],分别按下“^2”、“^3”、“Sqrt ”按钮,输出区显示计算结果如图17所示:2.11矩阵特征值输入矩阵A=[1 2 3;4 5 6;7 8 9],按下“eig ”按钮,输出区显示计算结果如图18所示:图16 矩阵求秩与最简行阶梯阵化简矩阵的秩最简行阶梯阵图17 矩阵平方、立方、与开方运算平方运算立方运算开方运算图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.00001.0000 0 01.0000 1.0000 0U =4.00005.00006.00000 -3.0000 00 0 1.5000A=L*U.2.13求矩阵范数输入矩阵A=[1 2 3;4 5 6;4 2 6],按下“Norm”按钮,输出区显示计算结果如图20所示:图20 求矩阵范数由于设计者能力有限,本计算器默认计算矩阵的2范数,其他范数暂不能计算。

2.14其他运算设计本部分的目的在于实现功能区中无法一步实现的计算。

比如两矩阵的线性组合(aA bB、均为常数)、矩阵的高次幂(n A)等。

具体用法见 ,其中a b图21:利用“其他运算”模块对一个矩阵进行操作时,另一个矩阵不能没有输入,因此,假设在操作A 矩阵(5A ),此时B 矩阵仍要赋值为空([]),如图所示:否则无法进行计算。

附录(主要代码):%%作者:石星宇%%设计时间:2014年4月26日%%设计目的:通过GUI 设计矩阵计算器,熟悉MATLAB 中GUI 工具的使用和编程。

%% 加深对MATLAB GUI 中句柄控制变量的理解。

%% 巩固线性代数中矩阵的基本运算。

%%功能简介:实现一些基本的矩阵运算,包括对单个矩阵的运算以及对两个矩阵的运算。

其中,对于两个矩阵的运算有:加、减、乘、除(左除、右除)、按元素乘、按元素除以及求解线性方程组;对于単个矩阵的运算有:转置(共轭与非共轭)、求逆、计算行列式、求秩、平方、立方、开方、求特征值、求2范数、LU 分解、最简阶梯阵化简等。

function 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(varargin{1})图21 其他矩阵运算实现52A B -+运算图21 其他矩阵运算(2)实现5A 运算gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});endfunction Matrix_Calculator_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = Matrix_Calculator_OutputFcn(hObject, eventdata, handles)varargout{1} = 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,'BackgroundColor','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, 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 dimensions must agree.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = A + B ;R = num2str(result);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 dimensions must agree.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = 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')));[iA 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);elseresult = A * B ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);endfunction L_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, handles);elseresult = A \ B ;R = num2str(result);set(handles.Answer,'String',R)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, handles);elseresult = 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 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);elseresult = det(A) ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);endfunction 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);elseif det(A) == 0 %判断A是否为奇异阵R='error.Matrix is singular to working precision.'; set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = 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(handles.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);elseresult = A^2 ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);endfunction 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(hObject, handles);elseresult = A^3 ;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,'String',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, eventdata, 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.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = eig(A) ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);function 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 ~= iBR='error.';set(handles.Answer,'String',R)guidata(hObject, handles);elseif iA ~=jA %判断A是否为方阵R='error.Matrix must be square.';set(handles.Answer,'String',R)guidata(hObject, handles);elseif det(A) == 0 %判断A是否为奇异阵R='error.Matrix is singular to working precision.'; set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = A\B ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);endendendfunction Answer2_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,'String'));B = eval(get(handles.Matrix_B,'String'));result = eval((get(handles.edit4,'String')));R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);function evolution_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,'String'));result = sqrt(A);R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);function rref_A_Callback(hObject, eventdata, handles) A = eval(get(handles.Matrix_A,'String'));result = rref(A);R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);function lu_A_Callback(hObject, eventdata, handles)A = eval(get(handles.Matrix_A,'String'));[L U] = lu(A);result = [L;U];R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);function norm_A_Callback(hObject, eventdata, handles) A = eval(get(handles.Matrix_A,'String'));result = norm(A);R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);。

相关文档
最新文档