MATLAB设计矩阵计算器

MATLAB设计矩阵计算器
MATLAB设计矩阵计算器

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

四、功能描述

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所示:

图2 矩阵相加

输入的A、B矩阵必须是维数相同,否则不能实现相加运算。如输入不同维数的矩阵且进行相加运算,则会提示出错如图3所示:

图3 矩阵相加错误提示

两矩阵相减的运算过程与相加运算类似,在此不再赘述。

2

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 矩阵按元素相乘

3

输入的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所示:

4

图9 共轭转置(上)与非共轭转置(下)

2.6行列式计算

输入A=[1 2 4;4 5 6;7 8 9],按下“det”按钮,输出区显示计算结果如图10所示:

图10 方阵求行列式

5

输入矩阵A必须为方阵,否则无法计算行列式,提示错误如图11所示:

2.7矩阵求逆

输入A=[1 2 4;4 5 6;2 5 8],按下“inv”按钮,输出区显示计算结果如图12所示:

本矩阵计算器求逆功能只针对非奇异方阵,如果输入矩阵A为奇异阵或非方

阵,均会提示错误,具体见图13、图

14:

图11 求行列式错误提示

图12 矩阵求逆

图13 输入为非方阵时的错误提示

6

图14 输入为奇异阵时的错误提示

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所示:

7

最简行阶梯阵矩阵的秩

图16 矩阵求秩与最简行阶梯阵化简

2.10平方、立方、与开方运算

输入矩阵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所示:

8

图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

9

1.0000 1.0000 0

U =

4.0000

5.0000

6.0000

0 -3.0000 0

0 0 1.5000

A=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:

10

11

利用“其他运算”模块对一个矩阵进行操作时,另一个矩阵不能没有输入,因此,假设在操作A 矩阵(5

A ),此时

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});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:});

end

function 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');

End

function 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');

end

function 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);

else

result = A + B ;

R = num2str(result);

set(handles.Answer,'String',R)

guidata(hObject, handles);

end

12

function 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);

else

result = A - B ;

R = num2str(result);

set(handles.Answer,'String',R)

guidata(hObject, handles);

end

function 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);

else

result = A * B ;

R = num2str(result);

set(handles.Answer,'String',R)

guidata(hObject, handles);

end

function 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);

else

result = A \ B ;

13

R = num2str(result);

set(handles.Answer,'String',R)

guidata(hObject, handles);

end

function 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);

else

result = A / B ;

R = num2str(result);

set(handles.Answer,'String',R)

guidata(hObject, handles);

end

function 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);

else

result = det(A) ;

R = num2str(result);

set(handles.Answer,'String',R)

guidata(hObject, handles);

end

function invertor_Callback(hObject, eventdata, handles)

A = eval((get(handles.Matrix_A,'String')));

14

[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 precision.'; set(handles.Answer,'String',R)

guidata(hObject, handles);

else

result = inv(A) ;

R = num2str(result);

set(handles.Answer,'String',R)

guidata(hObject, handles);

end

end

function 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);

else

result = A^2 ;

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.'; 15

set(handles.Answer,'String',R)

guidata(hObject, handles);

else

result = A^3 ;

R = num2str(result);

set(handles.Answer,'String',R)

guidata(hObject, handles);

end

function 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);

else

result = eig(A) ;

R = num2str(result);

set(handles.Answer,'String',R)

guidata(hObject, handles);

16

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 ~= 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',R)

guidata(hObject, handles);

else

if det(A) == 0 %判断A是否为奇异阵

R='error.Matrix is singular to working precision.'; set(handles.Answer,'String',R)

guidata(hObject, handles);

else

result = A\B ;

R = num2str(result);

set(handles.Answer,'String',R)

guidata(hObject, handles);

end

end

end

function 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);

17

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);

18

MATLAB中的矩阵与向量运算

4.1 数组运算和矩阵运算 从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别.但是,矩阵作为一种变换或映射算符的体现,矩阵运算有着明确而严格的数学规则.而数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方面,操作简单,指令形式自然和执行计算有效.所以,在使用MATLAB时,特别要明确搞清数组运算和矩阵运算的区别.表 4.1.1 数组运算和矩阵运算指令形式和实质内涵 数组运算矩阵运算 指令含义指令含义 A.'非共轭转置A'共轭转置 A=s把标量s赋给数组A的每个元素 s+B把标量s分别与数组B的每个元素相加s-B, B-s标量s分别与数组B的元素之差 s.*A标量s分别与数组A的元素之积s*A标量s分别与矩阵A的元素之积 s./B, B.\s标量s分别被数组B的元素除s*inv(B)矩阵B的逆乘标量s A.^n数组A的每个元素的n次方A^n A为方阵时,矩阵A的n次方 A+B数组对应元素的相加A+B矩阵相加 A-B数组对应元素的相减A-B矩阵相减 A.*B数组对应元素的相乘A*B内维相同矩阵的乘积 A./B A的元素被B的对应元素除A/B A右除B B.\A一定与上相同B\A A左除B(一般与右除不同) exp(A)以e为底,分别以A的元素为指数,求幂expm(A) A的矩阵指数函数 log(A) 对A的各元素求对数logm(A) A的矩阵对数函数 sqrt(A) 对A的积各元素求平方根sqrtm(A) A的矩阵平方函数 从上面可以看到,数组运算的运算如:乘,除,乘方,转置,要加"点".所以,我们要特别注意在求"乘,除,乘方,三角和指数函数"时,两种运算有着根本的区别.另外,在执行数组与数组运算时,参与运算的数组必须同维,运算所得的结果数组也是总与原数组同维. 4.2 数组的基本运算 在MATLAB中,数组运算是针对多个数执行同样的计算而运用的.MATLAB以一种非常直观的方式来处理数组. 4.2.1 点转置和共轭转置 . ' ——点转置.非共轭转置,相当于conj(A'). >> a=1:5; >> b=a. ' b = 1 2 3 4 5 >> c=b. ' c = 1 2 3 4 5 这表明对行向量的两次转置运算便得到原来的行向量. ' ——共轭转置.对向量进行转置运算并对每个元素取其共轭.如: >> d=a+i*a

matlab课程教学设计(简单计算器的设计)

matlab课程设计报告 题目简易计算器的设计 学院电子信息工程学院 专业电子信息 学生姓名和学号 指导教师

一、选题目的及意义 GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作,而在matlab有很简单的gui设计工具,我们可以通过这个工具轻松地构建我们想要的程序,从而实现与用户的信息交互。本次课程设计是使用了matlab中的guide生成了简单的计算器程序。 二、源代码 function varargout = Calculator(varargin) %Simple Calculator %@Anhui University % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Calculator_OpeningFcn, ... 'gui_OutputFcn', @Calculator_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

MATLAB实验二 矩阵基本运算(一)答案

实验一 矩阵基本运算(一) (1)设A 和B 是两个同维同大小的矩阵,问: 1)A*B 和A.*B 的值是否相等? ????? ?? =763514432A ???? ? ??=94 525 313 4B A=[2 3 4;4 1 5;3 6 7]; B=[4 3 1;3 5 2;5 4 9]; A*B, A.*B ans = 37 37 44 44 37 51 65 67 78 ans = 8 9 4 12 5 10 15 24 63 2)A./B 和B.\A 的值是否相等? A=[2 3 4;4 1 5;3 6 7]; B=[4 3 1;3 5 2;5 4 9]; A./B, B./A

ans = 0.5000 1.0000 4.0000 1.3333 0.2000 2.5000 0.6000 1.5000 0.7778 ans = 2.0000 1.0000 0.2500 0.7500 5.0000 0.4000 1.6667 0.6667 1.2857 3)A/B和B\A的值是否相等? A=[2 3 4;4 1 5;3 6 7]; B=[4 3 1;3 5 2;5 4 9]; A/B, B/A ans = -0.3452 0.5119 0.3690 0.7857 -0.7857 0.6429 -0.9762 1.3095 0.5952 ans = 110.0000 -15.0000 -52.0000

92.0000 -13.0000 -43.0000 -22.0000 4.0000 11.0000 4)A/B和B\A所代表的数学含义是什么? 解: A/B是B*A的逆矩阵 B\A是B*A的逆矩阵 (2)写出完成下列操作的命令。 1)将矩阵A第2—5行中第1,3,5列元素赋给矩阵B。 A=[0.9501 0.4565 0.9218 0.4103 0.1389 0.0153 0.2311 0.0185 0.7382 0.8936 0.2028 0.7468 0.6068 0.8214 0.1763 0.0579 0.1987 0.4451 0.4860 0.4447 0.4057 0.3529 0.6038 0.9318 0.8913 0.6154 0.9355 0.8132 0.2722 0.4660 0.7621 0.7919 0.9169 0.0099 0.1988 0.4186] B=A(2:5,[1,3,5]) A = 0.9501 0.4565 0.9218 0.4103 0.1389 0.0153 0.2311 0.0185 0.7382 0.8936 0.2028 0.7468 0.6068 0.8214 0.1763 0.0579 0.1987 0.4451 0.4860 0.4447 0.4057 0.3529 0.6038 0.9318 0.8913 0.6154 0.9355 0.8132 0.2722 0.4660 0.7621 0.7919 0.9169 0.0099 0.1988 0.4186 B = 0.2311 0.7382 0.2028 0.6068 0.1763 0.1987 0.4860 0.4057 0.6038 0.8913 0.9355 0.2722 2)删除矩阵A的第7号元素。 A=rand(6,6); >> A(7)=[inf] A = 0.8385 Inf 0.1730 0.1365 0.2844 0.5155

用MATLAB做一个计算器_包括加减乘除_平方_清空等功能

广西科技大学MATLAB课程设计说明书 课题:设计简易计算器 开发环境:MATLAB GUIDE 作者: 系别: 专业: 时间:

实验目的:1、熟悉MATLAB的主要控件使用方法。 2、熟悉MATLAB的GUI设计流程。 实验环境: 编程软件:MATLAB7.0 实验内容与结果: 使用MATLAB的GUI接口设计一个简单的计算器。 效果图: 一、布局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中输出。

用MATLAB GUI设计简单计算器

HUBEI NORMAL UNIVERSITY 《MATLAB与仿真》课程设计论文 Course’s Thesis

摘要 基于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的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。 MATLAB的图形界面设计是通过对各种图形对象的操作来实现的,因此用户在使用的过程需要深入了解各种图形对象的特征、属性和操作。由此可见,图形用户界面的设计、制作是一件比较繁琐的工作。图形用户界面的创建一般有两种常用的方式:第一是通过使用m文件直接动态添加控件;第二是使用GUIDE快速生成GUI界面。这两种实现的方法都需要使用M语言编程,但是技术的侧重点不同。所谓的GUIDE就是图形用户界面开发环境 (Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。GUIDE可以完成的任务有如下两点:第一是输出GUI,第二是GUI编程。GUIDE

matlab中的矩阵的基本运算命令范文

1.1 矩阵的表示 1.2 矩阵运算 1.2.14 特殊运算 1.矩阵对角线元素的抽取 函数diag 格式X = diag(v,k) %以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。 X = diag(v) %以v为主对角线元素,其余元素为0构成X。 v = diag(X,k) %抽取X的第k条对角线元素构成向量v。k=0:抽取主对角线元素;k>0:抽取上方第k条对角线元素;k<0抽取下方第k条对角线元素。 v = diag(X) %抽取主对角线元素构成向量v。 2.上三角阵和下三角阵的抽取 函数tril %取下三角部分 格式L = tril(X) %抽取X的主对角线的下三角部分构成矩阵L L = tril(X,k) %抽取X的第k条对角线的下三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。函数triu %取上三角部分 格式U = triu(X) %抽取X的主对角线的上三角部分构成矩阵U U = triu(X,k) %抽取X的第k条对角线的上三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。3.矩阵的变维 矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2个已知维数矩阵之间的变维操作;而后者是对于一个矩阵的操作。 (1)“:”变维 (2)Reshape函数变维 格式 B = reshape(A,m,n) %返回以矩阵A的元素构成的m×n矩阵B B = reshape(A,m,n,p,…) %将矩阵A变维为m×n×p×… B = reshape(A,[m n p…]) %同上 B = reshape(A,siz) %由siz决定变维的大小,元素个数与A中元素个数 相同。 (5)复制和平铺矩阵 函数repmat 格式 B = repmat(A,m,n) %将矩阵A复制m×n块,即B由m×n块A平铺而成。 B = repmat(A,[m n]) %与上面一致 B = repmat(A,[m n p…]) %B由m×n×p×…个A块平铺而成 repmat(A,m,n) %当A是一个数a时,该命令产生一个全由a组成的m×n矩阵。 1.3 矩阵分解 1.3.1 Cholesky分解 函数chol 格式R = chol(X) %如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R = X;若X非正定,则产生错误信息。 [R,p] = chol(X) %不产生任何错误信息,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵。 1.3.2 LU分解

基于MATLAB计算器设计与开发

六.主要参考文献 . (19) 一、课程设计应达到的目的 本课程是为自动化专业本科生开设的专业课程设计课。通过本课程的课程设计实践帮助学生巩固关于数据结构、算法、程序设计的基础知识。通过本课程设计,学生可以初步掌握开发一个小型实用系统的基本方法,提高运用编程软件实现GUI 程序设计的能力。 二、 课程设计的基本要求: 要求利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现: A. 具有友好的用户图形界面。实现十进制数的加、减、乘、除、乘方、取模等简单计算。(必做) B. 科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行。(必做) C. 能够保存上次历史计算的答案,先是答案存储器中得内容。(必做) D. 有清除键,能清除操作,并对不正确的表达式能指出其错误原因。(必做) E. 独立存储器功能,使之可以直接输入存储器,可与存储器中的数值相加减。能够清除独立存储器中的内容。(选做) 利用MATLAB GUI 功能,在绘制一个静态文本框和一个文本编辑框,以及命令按钮,调整好各控件大小、颜色,整体布局如图所示: 然后通过双击个按钮来改写其属性,在m 文件中编写其回调函数,最后在运行调试。 成绩

三、课题设计内容与步骤 3.1 各功能界面设计 GUI设计界面: 3.2 各功能模块实现 算法设计: A. 数字键设计:0—9以及小数点函数都一样,只是参数不同: global jj textString = get(handles.text1,'String'); if(strcmp(textString,'0.')==1)&(jj==0) set(handles. edit1,'String','1') ; else textString =strcat(textString,'1'); set(handles. edit1,'String',textString) end jj=0;

基于matlab的计算器制作

基于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、框架准备

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文本编辑框功能:输入参与计算矩阵A MatB文本编辑框功能:输入参与计算矩阵B MatC静态文本框功能:输出计算结果矩阵C

三、部分计算操作结果 (1) 加法+ MatA text1 pushbutton22 pushbutton23 pushbutton24 pushbutton20

(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','') 注释:其余模块功能算法与以上代码较为相似,不在一一举例。

MATLAB基本矩阵运算

Basic Matrix Operations 一、实验目的 1、掌握向量和矩阵的创建方法; 2、掌握向量和矩阵元素的索引方法; 3、掌握向量和矩阵的基本操作; 4、利用MATLAB编写程序进行矩阵运算。 二、基础知识 1、常见数学函数 函数名数学计算功能函数名数学计算功能 Abs(x) 实数的绝对值或复数的幅值floor(x) 对x朝-∞方向取整 Acos(x) 反余弦arcsin x gcd(m,n)求正整数m和n的最大公约数 acosh(x) 反双曲余弦arccosh x imag(x) 求复数x的虚部 angle(x) 在四象限内求复数 x 的相角lcm(m,n) 求正整数m和n的最小公倍数 asin(x) 反正弦arcsin x log(x) 自然对数(以e为底数) asinh(x) 反双曲正弦arcsinh x log10(x) 常用对数(以10为底数) atan(x) 反正切arctan x real(x) 求复数x的实部 atan2(x,y) 在四象限内求反正切Rem(m,n) 求正整数m和n的m/n之余数 atanh(x) 反双曲正切arctanh x round(x) 对x四舍五入到最接近的整数 ceil(x) 对x朝+∞方向取整sign(x) 符号函数:求出x的符号 conj(x) 求复数x的共轭复数sin(x) 正弦sin x cos(x) 余弦cos x sinh(x) 反双曲正弦sinh x cosh(x) 双曲余弦cosh x sqrt(x) 求实数x的平方根:x exp(x) 指数函数xe tan(x) 正切tan x fix(x) 对x朝原点方向取整tanh(x) 双曲正切tanh x 2、常量与变量 系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表: 特殊的变量、常量取值

基于MATLAB科学计算器

目录 计算器得效果图 ........................................................................... 错误!未定义书签。 一、GUI设计界面: (3) 1。打开GUI (3) 2。添加按钮 (3) 3。根据按钮得作用及视觉效果做一定得修改: (4) 4。保存、添加功能函数 (4) (1)数字键编写 (4) (2)符号键得编写 (4) (3)运算符“=”得编写 (5) (4)按键“←back"得编写 (5) (5)按键“清空”得编写 (5) (6)按键“退出”得编写 (5) (7)按键“二进制数转十进制数"得编写 (5) (8)按键“十进制数转二进制数”得编写 (5) 二、计算器得使用 (5) 除法运算(÷) (5) 平方运算(^2) (6) 函数cos (∏/3)得计算 (6) 函数arctan (∏/3)得计算 (7) 以2为底得对数得计算(log 2) (7) 十进制数转二进制数得计算(调用dec2bin函数) (8) 二进制数转十进制数得计算(调用bin2dec函数) (8) 三、附各按键得程序源代码 (9) 四、问题与解决方法 (14) 五、心得体会 (14) 参考文献 (15) 计算器得效果图:

一、GUI设计界面: 1。打开GUI 输入Guide 回车或者在工具栏上点击图标打开Guide 窗口: 2。添加按钮

3、根据按钮得作用及视觉效果做一定得修改: 双击按钮(Puch Button)进入按键属性修改显示字符串大小、字体与颜色,然后对按钮得位置进行排布,尽量使按钮集中在静态文本框下面、 4、保存、添加功能函数 把做好得按钮及静态文本框保存后自动弹出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后添加“÷"进行运算。 然后执行set(handles、text1,’String’,textString)。符号键‘—’、‘*’、‘/’与‘÷'得运算函数类似。“平方运算”,主要就是由“^2”功能实现。

Matlab常用函数数组及矩阵的基本运算

实验一 Matlab 常用函数、数组及矩阵的基本运算 一、 实验目的 1. 了解Matlab7.0软件工作界面结构和基本操作; 2. 掌握矩阵的表示方法及Matlab 常用函数; 3. 掌握数组及矩阵的基本运算. 二、 实验内容 1. 了解命令窗口(command widow)和变量空间(workspace)的作用,掌握清 除命令窗口(clc )和变量空间(clear)的方法.掌握查询函数(help)的方法. 2. 掌握保存和加载变量的方法. 加载变量:load 变量名. 3. 掌握掌握矩阵的表示方法: 给a,b,c 赋如下数据: ]6,46,23,4,2,6,3,8,0,1[,356838241248 7,278744125431-=??????????--=??????????=c b a 4. 求a+b,a*b,a.*b,a/b,a./b,a^2,a.^2的结果. 5. 将str1=electronic; str2 = information; str3 = engineering; 三个字符串连接 在一起成str = electronic information engineering. 6. 求矩阵a 的逆矩阵a -1,行列式计算。 (inv(a),det(a)) 三、 实验要求 1.上机操作,熟练掌握清除命令窗口和变量空间的方法、查询变量的方法、加载变量的方法。 2.第2道题请写出步骤。 3.对实验内容中第3-6项,写出指令,上机运行. 记录运行结果(数据)。 4.写出实验报告。 四、 实验结果 2. 用save 函数,可以将工作空间的变量保存成txt 文件或mat 文件等. 比如: save peng.mat p j 就是将工作空间中的p 和j 变量保存在peng.mat 中. 用load 函数,可以将数据读入到matlab 的工作空间中. 比如:load peng.mat 就是将peng.mat 中的所有变量读入matlab 工作空间中。

matlab计算器

电子信息工程系实验报告 课程名称:MATLAB 语言 实验项目名称:MATLAB 图形用户界面设计 实验时间:2010-5-8 班级: 姓名: 学号: 实验目的: 1、熟悉MATLAB 的主要控件使用方法。 2、熟悉MATLAB 的GUI 设计流程。 实验环境:硬件配置( Pentium(R) 4 CPU 2.40GHz,1GB 内存) 操作系统(Windows XP ) 编程软件:MATLAB7.0 实验内容与结果: 使用MA TLAB 的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 gloval2 gloval2=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 flagnum global gloval1 global locaval locaval=' '; 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 gloval2 gloval2=locaval; guidata(hObject, handles); % 等号按钮运算实现 %根据flagnum运算标志用switch决策语句实现相应计算%需注意相应数据类型的转化 function pushbutton17_Callback(hObject, eventdata, handles) global flagnum global gloval1 global gloval2 global locaval locaval=' ';

matlab-GUI矩阵计算器..

数学应用软件工具箱开发 ——矩阵计算器 姓名: *** 学号:******** 指导老师: *** 专业:******** 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,也用于显示维数比较大的计算结果。

Matlab实验2-矩阵的基本运算

实验二、矩阵的基本运算 一、 问题 已知矩阵A 、B 、b 如下: ???????? ??????????-------------=0319481187638126542 86174116470561091143A ???????? ??????????------=503642237253619129113281510551201187851697236421B … []1187531=b 应用Matlab 软件进行矩阵输入及各种基本运算。 二、 实验目的: 熟悉Matlab 软件中的关于矩阵运算的各种命令 三、 预备知识 1、 、 2、 线性代数中的矩阵运算。 3、 本实验所用的Matlab 命令提示: (1)、矩阵输入格式:A =[a 11, a 12; a 21, a 22];b =初始值:步长:终值; (2)、求A 的转置:A'; (3)、求A 加B :A +B ; (4)、求A 减B :A -B ; (5)、求数k 乘以A :k*A ; (6)、求A 乘以B :A*B ; (7)、求A 的行列式:det (A ); (8)、求A 的秩:rank (A ); … (9)、求A 的逆:inv (A )或(A )-1; (10)、B 右乘A 的逆:B/A ; (11)、B 左乘A 的逆:A \B ; (12)、求A 的特征值:eig (A ); (13)、求A 的特征向量矩阵X 及对角阵D :[X ,D ]=eig (A ); ( (14)、求方阵A 的n 次幂:A ^n ;

(15)、A与B的对应元素相乘:A.*B; (16)、存储工作空间变量:save '文件名' '变量名'; (17)、列出工作空间的所有变量:whos; 四、《 五、实验内容与要求 1、输入矩阵A,B,b; >> A=[3,4,-1,1,-9,10;6,5,0,7,4,-16;1,-4,7,-1,6,-8;2,-4,5,-6,12,-8;-3,6,-7,8,-1,1;8,-4,9,1,3,0] B=[1 2 4 6 -3 2;7 9 16 -5 8 -7;8 11 20 1 5 5;10 15 28 13 -1 9;12 19 36 25 -7 23;2 4 6 -3 0 5] b=[1,3,5,7,8,11] | A = 3 4 -1 1 -9 10 6 5 0 7 4 -16 1 -4 7 -1 6 -8 2 -4 5 -6 12 -8 ^ -3 6 -7 8 -1 1 8 -4 9 1 3 0 B = 1 2 4 6 -3 2 7 9 16 -5 8 -7 ^ 8 11 20 1 5 5 10 15 28 13 -1 9 12 19 36 25 -7 23 2 4 6 - 3 0 5 b = ) 1 3 5 7 8 11 2、作X21=A'、X22=A+B、X23=A-B、X24=AB; >> X21=A' X22=A+B X23=A-B % X24=A*B X21 = 3 6 1 2 -3 8 4 5 -4 -4 6 -4 -1 0 7 5 -7 9 ; 1 7 -1 -6 8 1 -9 4 6 12 -1 3 10 -16 -8 -8 1 0 X22 = 4 6 3 7 -12 12 (

matlab中矩阵基本运算命令.docx

1.1矩阵的表示 1.2矩阵运算 1.2.14特殊运算 1.矩阵对角线元素的抽取 函数diag 格式X = diag(v,k)% 以向量 v 的元素作为矩阵 X 的第 k 条对角线元素,当 k=0 时, v 为 X 的主对角线;当 k>0 时,v 为上方第 k 条对角线;当 k<0 时, v 为下方第 k 条对角线。 X = diag(v)% 以 v 为主对角线元素,其余元素为 0 构成 X。 v = diag(X,k)%抽取 X 的第 k 条对角线元素构成向量 v。k=0:抽取主对角线元素; k>0 :抽取上方第 k 条对角线元素;k<0 抽取下方第 k 条对角线元素。 v = diag(X)% 抽取主对角线元素构成向量 v。 2.上三角阵和下三角阵的抽取 函数tril% 取下三角部分 格式L = tril(X)%抽取 X 的主对角线的下三角部分构成矩阵L L = tril(X,k)% 抽取 X 的第 k 条对角线的下三角部分; k=0 为主对角线; k>0 为主对角线以上; k<0 为主对角线以下。 函数triu% 取上三角部分 格式U = triu(X)%抽取 X 的主对角线的上三角部分构成矩阵U U = triu(X,k)% 抽取 X 的第 k 条对角线的上三角部分; k=0 为主对角线; k>0 为主对角线以上; k<0 为主对角线以下。3.矩阵的变维 矩阵的变维有两种方法,即用“:”和函数“reshape,”前者主要针对 2 个已知维数矩阵之间的变维操作;而后者是对 于一个矩阵的操作。 (1)“:”变维 (2)Reshape 函数变维 格式 B = reshape(A,m,n)%返回以矩阵 A 的元素构成的 m×n 矩阵 B B = reshape(A,m,n,p,)% 将矩阵 A 变维为 m×n×p× B = reshape(A,[m n p])%同上 B = reshape(A,siz)% 由 siz 决定变维的大小,元素个数与 A 中元素个数 相同。 (5)复制和平铺矩阵 函数repmat 格式 B = repmat(A,m,n)% 将矩阵 A 复制 m×n 块,即 B 由 m×n 块 A 平铺而成。 B = repmat(A,[m n])%与上面一致 B = repmat(A,[m n p]) %B 由 m×n×p× 个 A 块平铺而成 repmat(A,m,n)%当 A 是一个数 a 时,该命令产生一个全由 a 组成的 m×n 矩阵。 1.3矩阵分解 1.3.1Cholesky 分解 函数chol 格式R = chol(X)% 如果 X 为 n 阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足 R'*R = X ;若 X 非正定,则产生错误信息。 [R,p] = chol(X)% 不产生任何错误信息,若X 为正定阵,则p=0 ,R 与上相同;若X 非正定,则p 为正整数, R 是有序的上三角阵。 1.3.2 LU 分解

用MATLAB制作一简单计算器

用M A T L A B制作一简 单计算器 标准化工作室编码[XX968T-XX89628-XJ668-XT689N]

这个matlab课程设计是在GUI环境下生成的。开启MATLAB 7.0 软件,在命令窗口输入guide,即可进入GUI环境。 实验目的:(1)熟悉GUI环境,并在该环境中制作一个简单的计算 器,起功能有加,减,乘,除, cos, sin, tan。 (2)熟悉matlab软件的制作。 实验内容及结果: 进入GUI环境中双击Blank GUI (Default)出现一个窗口在该窗口中首先制作一个计算器界面如下所示: 红色的是静态编辑框,其余的是按钮。 下面我们来分析一下功能函数: textString = get(handles.text1,'String'); textString = strcat(textString,'1'); set(handles.text1,'String',textString) 这是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1的内容,并存储数个“1”, 然后由set(handles.text1,'String','textString'在text1中输出。 同理,分别在function pushbuttonone~zero_Callback(hObject, eventdata, handles)下给1~0数字按键下编写此类程序。 function pushbuttonjia_Callback(hObject, eventdata, handles) textString = get(handles.text1,'String'); textString =strcat(textString,'+'); set(handles.text1,'String',textString) strcat的作用是将两个字符串连接起来,就是在已输入的存储数据textString后添加“+”进行运算。

相关文档
最新文档