MATLAB编写矩阵计算器
(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中使用矩阵进行计算

如何在Matlab中使用矩阵进行计算导言:在计算机科学和数学领域中,矩阵是一种非常重要的数据结构,广泛应用于各种科学计算和工程领域。
Matlab作为一种专业的数学软件,提供了丰富的矩阵计算功能,方便用户进行各种复杂的数值运算和数据分析。
本文将介绍如何在Matlab中使用矩阵进行计算,并结合实例,帮助读者更好地理解和应用。
一、矩阵的定义和创建在Matlab中,矩阵可以通过直接定义、从数据文件中读取和通过某些函数生成等方式进行创建。
以下是一些常用的创建矩阵的方法:1. 直接定义矩阵:可以通过在Matlab中直接输入元素来定义矩阵。
比如,我们可以通过下面的方式定义一个3×3的矩阵A:```A = [1 2 3; 4 5 6; 7 8 9];```2. 读取数据文件:Matlab可以读取各种格式的数据文件,并将数据存储为矩阵。
比如,可以使用`load`函数从.mat文件中加载矩阵数据,或使用`csvread`函数从.csv文件中加载矩阵数据。
3. 函数生成矩阵:Matlab提供了一些内置函数用于生成各种特殊的矩阵。
比如,可以使用`zeros`函数生成全零矩阵,`eye`函数生成单位矩阵,`rand`函数生成随机矩阵等。
二、矩阵的基本运算在Matlab中,可以使用各种运算符和内置函数对矩阵进行基本运算。
以下是一些常用的矩阵运算示例:1. 加法和减法:两个矩阵的加法和减法可以通过运算符`+`和`-`来实现,矩阵相应位置的元素进行相加或相减。
例如,假设有两个3×3的矩阵A和B,则可以通过以下方式实现矩阵的加法和减法:```C = A + B;D = A - B;```2. 数量乘法和除法:矩阵的数量乘法和除法可以通过运算符`*`和`/`来实现,矩阵中每个元素都与给定的标量进行相乘或相除。
例如,如果有一个3×3的矩阵A 和一个标量b,则可以通过以下方式实现矩阵的数量乘法和除法:```C = A * b;D = A / b;```3. 矩阵乘法和除法:对于矩阵的乘法和除法,需要使用Matlab内置的矩阵运算函数,如`mtimes`和`mldivide`。
如何使用Matlab进行矩阵运算

如何使用Matlab进行矩阵运算随着科学技术的不断发展,矩阵运算在各个领域的应用日益广泛。
Matlab作为一款功能强大的数学软件,其矩阵运算能力非常强大。
本文将介绍如何使用Matlab进行矩阵运算,希望能对读者在科学研究和工程实践中的矩阵计算有所帮助。
一、Matlab的基本矩阵运算1. 创建矩阵在Matlab中,可以使用一对方括号`[]`来创建矩阵。
例如,要创建一个3行3列的矩阵A,可以使用如下命令:A = [1 2 3; 4 5 6; 7 8 9]。
这样就创建了一个元素分别为1到9的3行3列矩阵。
2. 矩阵加法和减法Matlab中可以使用加号和减号来进行矩阵的加法和减法运算。
例如,要计算矩阵A和B的和,可以使用命令C = A + B;要计算矩阵A和B的差,可以使用命令D = A - B。
3. 矩阵乘法Matlab中使用乘号`*`来进行矩阵的乘法运算。
例如,要计算矩阵A和B的乘积,可以使用命令C = A * B。
需要注意的是,矩阵乘法是满足结合律的,即A *(B * C) = (A * B) * C。
4. 矩阵转置在Matlab中,可以使用单引号`'`来对矩阵进行转置操作。
例如,对矩阵A进行转置,可以使用命令B = A'。
需要注意的是,转置操作只能应用于二维矩阵。
5. 求逆矩阵在Matlab中,可以使用inv函数来求解矩阵的逆矩阵。
例如,要求矩阵A的逆矩阵,可以使用命令B = inv(A)。
需要注意的是,只有方阵才有逆矩阵。
6. 矩阵的特征值和特征向量Matlab中可以使用eig函数来求解矩阵的特征值和特征向量。
例如,要求矩阵A的特征值和特征向量,可以使用命令[V,D] = eig(A),其中V为特征向量矩阵,D 为特征值对角矩阵。
二、Matlab的高级矩阵运算1. 矩阵的点乘和叉乘Matlab中使用.*和.^来进行矩阵的点乘和叉乘运算。
例如,要计算矩阵A和B 的点乘,可以使用命令C = A .* B;要计算矩阵A和B的叉乘,可以使用命令D =A .^ B。
matlab 符号矩阵运算

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符号计算工具箱还提供了许多其他函数和运算符来进行符号矩阵运算。
matlab计算矩阵方程组

matlab计算矩阵方程组在数学和工程学中,矩阵方程组是一种常见的问题类型,其中包含一组线性方程,其未知数是矩阵。
MATLAB是一种功能强大的数值计算软件,可以用于求解矩阵方程组。
本文将介绍如何使用MATLAB计算矩阵方程组。
在MATLAB中,可以使用“\”操作符来求解矩阵方程组。
假设有一个矩阵方程组Ax = b,其中A是一个已知的矩阵,b是一个已知的向量,x是未知的向量。
要求解x,可以使用MATLAB的求解器。
要使用“\”操作符求解矩阵方程组,需要将方程组的系数矩阵A和右侧向量b输入到MATLAB中。
假设A是一个3x3的矩阵,b是一个3x1的向量,可以使用以下代码进行求解:```matlabA = [1, 2, 3; 4, 5, 6; 7, 8, 9];b = [1; 2; 3];x = A \ b;```在上述代码中,矩阵A被定义为一个3x3的矩阵,并且向量b被定义为一个3x1的向量。
通过将A和b输入到MATLAB中,并使用“\”操作符,可以得到解x。
解x将存储在名为“x”的变量中。
如果方程组有解,MATLAB将计算并返回x的值。
否则,MATLAB将返回一个近似解。
如果方程组无解或有无穷多解,MATLAB将给出相应的警告。
如果需要计算多个未知数的矩阵方程组,可以将矩阵A定义为一个NxN矩阵,其中N是未知数的数量。
类似地,向量b将成为一个Nx1的向量。
例如,假设有以下4x4的矩阵方程组:```matlabA = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12; 13, 14, 15, 16];b = [1; 2; 3; 4];x = A \ b;```在此示例中,矩阵A是一个4x4的矩阵,向量b是一个4x1的向量。
通过使用“\”操作符进行计算,可以得到解x。
除了使用“\”操作符外,MATLAB还提供了其他求解器,如“inv”和“linsolve”。
这些求解器提供了更多的灵活性和功能,可以用于更复杂的矩阵方程组的求解。
如何在Matlab中进行矩阵运算

如何在Matlab中进行矩阵运算矩阵运算是Matlab中非常重要的一部分,它可以让我们更方便地进行数学建模和算法实现。
在本文中,我们将介绍在Matlab中进行矩阵运算的基本知识和常用函数。
1. 矩阵的定义与表示在Matlab中,可以使用数组来表示矩阵。
我们可以使用一对方括号[],每行之间使用分号; 或者逗号, 来表示不同的矩阵元素。
例如,下面是一个3行3列的矩阵的定义:A = [1, 2, 3; 4, 5, 6; 7, 8, 9];2. 矩阵的基本运算Matlab中的矩阵运算包括加法、减法、乘法和除法等。
下面我们将逐个介绍这些运算。
2.1 矩阵的加法和减法矩阵的加法和减法是逐元素进行的,也就是对应位置的元素相加或相减。
例如,我们有两个矩阵A和B:A = [1, 2; 3, 4];B = [5, 6; 7, 8];我们可以使用矩阵加法和减法运算符+和-,计算出它们的和和差:C = A + B;D = A - B;运行结果为:D = [-4, -4; -4, -4]2.2 矩阵的乘法矩阵的乘法是按照矩阵乘法的规则进行的。
在Matlab中,我们可以使用*或者dot函数进行矩阵的乘法运算。
例如,我们有两个矩阵A和B:A = [1, 2; 3, 4];B = [5, 6; 7, 8];我们可以使用矩阵乘法运算符*,计算出它们的乘积:C = A * B;运行结果为:C = [19, 22; 43, 50]除了使用*号,我们还可以使用dot函数进行矩阵的乘法运算。
例如:D = dot(A, B);运行结果为:D = [19, 22; 43, 50]2.3 矩阵的除法矩阵的除法是矩阵乘法的逆运算。
在Matlab中,我们可以使用/或者inv函数进行矩阵的除法运算。
例如,我们有两个矩阵A和B:A = [1, 2; 3, 4];我们可以使用矩阵除法运算符/,计算出它们的除法结果:C = A / B;运行结果为:C = [-0.3333, -0.6667; -0.1667, -0.3333]除了使用/号,我们还可以使用inv函数进行矩阵的除法运算。
基于MATLAB的简易矩阵计算器

《MATLAB程序设计》程序设计报告设计题目:简易矩阵计算器班级:021231******学号:********目录1.设计目标……………………2.设计内容……………………3.设计思想……………………4.设计说明……………………5.设计步骤及程序代码……………………6.运行计算器……………………7.总结…………………………1.设计目标1.熟悉MATLAB的主要控件使用方法。
2.熟悉MATLAB的GUI设计流程。
2.设计内容设计一个简易的矩阵计算器,通过对简单应用矩阵计算器的设计,编制、调试实现矩阵相加减,矩阵的转置等简单运算,以学习应用MATLAB编写程序原理,加深对MATLAB的学习及应用。
3.设计思想基于MATLAB中GUI界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用信息函数完成数据的输入输出,实现计算功能。
生成简单的应用软件。
4.设计说明1)包含的功能有:加、减、乘、转置等。
2)输入的原始数据分别为A或B矩阵,分别显示在不同标签中,运算的结果则显示在输出部分。
3)计算功能基本上是用系统内部函数。
4)程序能够自动判断输入数据的正确性,如不能输入(1)。
5.设计步骤及只要代码1)打开MATLAB,点击,出现GUI的2)设计计算器版面直至3)对功能键进行设计执行A矩阵加B矩阵,其执行代码如下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) 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);end执行A矩阵减B矩阵,其执行代码如下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) 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);end执行A矩阵与B矩阵相乘,其执行代码如下A = eval((get(handles.Matrix_A,'String')));B = eval((get(handles.Matrix_B,'String')));[iA jA]=size(A);[iB jB]=size(B);if jA~=iBR='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);end执行A右除B矩阵,其执行代码如下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.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);end执行A.*B,其执行代码如下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);执行A./B,其执行代码如下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);执行A的转置,其执行代码如下A = eval((get(handles.Matrix_A,'String')));result = A' ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);执行A右除B,其执行代码如下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.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);end执行求A的行列式,其执行代码如下A = eval((get(handles.Matrix_A,'String')));[iA jA]=size(A);if iA ~=jA 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);end执行求A的逆,其执行代码如下A = eval((get(handles.Matrix_A,'String')));[iA jA]=size(A);if iA ~=jAR='error.Matrix must be square.';set(handles.Answer,'String',R)guidata(hObject, handles);elseif det(A) == 0R='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);endend执行求A的非共轭转置,其执行代码如下A = eval((get(handles.Matrix_A,'String')));result = A.' ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, 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 ~=jAR='error.Matrix must be square.';set(handles.Answer,'String',R)guidata(hObject, handles);elseif det(A) == 0R='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);endendend执行求A的秩,其执行代码如下A = eval((get(handles.Matrix_A,'String')));result = rank(A) ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);执行求A的平方,其执行代码如下A = eval((get(handles.Matrix_A,'String')));[iA jA]=size(A);if iA ~=jAR='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);end执行求A的立方,其执行代码如下A = eval((get(handles.Matrix_A,'String')));[iA jA]=size(A);if iA ~=jAR='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);end执行求A的特征值,其执行代码如下A = eval((get(handles.Matrix_A,'String')));[iA jA]=size(A);if iA ~=jAR='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);end执行求A开平方根,其执行代码如下A = eval(get(handles.Matrix_A,'String'));result = sqrt(A);R = num2str(result);set(handles.Answer,'String',R)执行计算矩阵范围(默认为2范数),其执行代码如下A = eval(get(handles.Matrix_A,'String'));result = norm(A);R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);执行对A的分解,其执行代码如下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);执行将矩阵A化为最简阶梯矩阵,其执行代码如下A = eval(get(handles.Matrix_A,'String'));result = rref(A);R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);4)对输出进行设计输出框内有新添加的,使经过计算后的式子通过输出框显示。
矩阵计算器

用Matlab GUI编写一个简单的矩阵计算器摘要:矩阵是线性代数的一个主要内容,又是解决众多问题的主要工具。
而矩阵运算是矩阵理论的基本内容之一。
目前,普通的计算器只能够进行数的运算,而不能够实现矩阵的运算。
随着科技的不断发展,人们对矩阵的运用也会不断的增多。
因此,制作一个矩阵计算器对当今科技的发展有一定的推动作用。
关键字:矩阵运算、Matlab GUI、计算器正文:一、矩阵的相关知识在数学上,矩阵是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵。
这一概念由19世纪英国数学家凯利首先提出。
矩阵,是由个数组成的一个行列的矩形表格,通常用大写字母表示,组成矩阵的每一个数,均称为矩阵的元素,通常用小写字母其元素表示,其中下标都是正整数,他们表示该元素在矩阵中的位置。
比如,或表示一个矩阵,下标表示元素位于该矩阵的第行、第列。
元素全为零的矩阵称为零矩阵。
当一个矩阵的行数与烈数相等时,该矩阵称为一个阶方阵。
对于方阵,从左上角到右下角的连线,称为主对角线;而从左下角到右上角的连线称为付对角线。
若一个阶方阵的主对角线上的元素都是,而其余元素都是零,则称为单位矩阵,记为,即:。
如一个阶方阵的主对角线上(下)方的元素都是零,则称为下(上)三角矩阵,例如,是一个阶下三角矩阵,而则是一个阶上三角矩阵。
今后我们用表示数域上的矩阵构成的集合,而用或者表示数域上的阶方阵构成的集合。
矩阵是高等代数学中的常见工具,其中的一个重要用途是解线性方程组。
线性方程组中未知量的系数可以排成一个矩阵,加上常数项,则称为增广矩阵。
另一个重要用途是表示线性变换,即是诸如f(x) 4x之类的线性函数的推广。
同时也常见于统计分析等应用数学学科中。
在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。
矩阵的运算是数值分析领域的重要问题。
将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。
- 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文本编辑框功能:输入参与计算矩阵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);。