matlab-GUI矩阵计算器
数学应用软件工具箱开发 ——矩阵计算器
姓 名: *** 学 号:******** 指导老师: *** 专 业:********
2014年9月11日 1
一.操作过程 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,也用于显示维数比较大的计算结果。 2
4>还可修改各控件的backgroundcolor(背景色) 、HorizontalAligment(对齐方式)等其他属性以美化界面。
⑤保存运行的结果如下:
图1 二.功能简介 1.功能概述 此矩阵计算器能够实现一些基本的矩阵运算,包括对单个矩阵的运算以及对两个矩阵的运算。 其中,对于两个矩阵的运算有:加、减、乘、除(左除、右除)、按元素乘、按元素除以及求解线性方程组;对于単个矩阵的运算有:转置、求秩、求逆、计算行列式、求2范数、LU分解、最简阶梯阵化简、求特征值等。 计算过程中,矩阵的输入方式有两种: 1>与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所示: 3
图2 输入的A、B矩阵必须是维数相同,否则不能实现相加运算。如输入不同维数的矩阵且进行相加运算,则会提示出错,如图3所示:
图3 两矩阵相减的运算过程与相加运算类似,在此不再赘述。 2> 点乘(除) 输入A=[1 2 3;4 5 6;7 8 9],B=[1 4 7;2 5 8;3 6 9],按下“.*”按钮,输出区显示计算结果如图4所示:
图4 4
输入的A、B矩阵必须是维数相同,否则不能实现按元素乘(除)的运算。如输入不同维数的矩阵且进行按元素乘的运算,则会提示出错,提示信息同图3。
3> 矩阵相乘: 输入A=[1 2 3;4 5 6;7 8 9],B=[1 4 7;2 5 8;3 6 9],按下“*”按钮,输出区显示计算结果如图5所示:
图5 输入的A、B矩阵必须满足前者的列数等于后者的行数,否则不能实现矩阵的乘法运算,出现错误提示如图6所示:
图6 4> 左除(右除):
输入A=[1 2 3;4 5 6;7 8 9],B=[1 4 7;2 5 8;3 6 9],按下“/L”按钮,输出区显示计算结果如图7所示: 5
图7 输入的A、B矩阵必须满足行相等,否则出现错误提示如图8所示:
图8 5> 矩阵转置: 输入矩阵A=[1 2 3;4 5 6;7 8 9],点击“A’”按钮,显示结果如图9所示:
图9 6
6> 矩阵求秩: 输入矩阵A=[1 2 3;4 5 6;7 8 9],点击“秩”按钮,输出区显示计算结果如图10所示:
图10 7> 矩阵求逆:
输入矩阵A=[1 2 4;4 5 6;7 8 9],按下“逆”按钮,输出区显示计算结果如图11所示:
图11 本矩阵计算器求逆功能只针对非奇异方阵,如果输入矩阵A为奇异阵或非方阵,均会提示错误 A为非方阵时提示错误如图12: 7
图12 A为奇异阵时提示错误如图13:
图13 8> 行列式: 输入A=[1 2 4;4 5 6;7 8 9],按下“行列式”按钮,输出区显示计算结果如图14所示: 8
图14 输入矩阵A必须为方阵,否则无法计算行列式,提示错误如图15所示:
图15 9> 范数: 输入矩阵A=[1 2 3;4 5 6;7 8 9],按下“范数”按钮,输出区显示计算结果如16所示: 9
图16 由于设计者能力有限,本计算器默认计算矩阵的2范数,其他范数暂不能计算。 10> LU分解: 输入矩阵A=[1 2 3;4 5 6;4 2 6],按下“LU”按钮,输出区显示计算结果如图17所示:
图17 其中,输出前三行为L矩阵,中间三行为U矩阵,后三行为P矩阵 11> 线性方程组求解:AX=B 输入A=[1 2 3;4 5 6;7 8 9](系数矩阵),B=[4;5;6](常数项),按下“Ax=B”按钮,输出区显示计算结果图18所示: 10
图18 本部分输入限制较大,须详细说明。第一,系数矩阵必须是非奇异的方阵,否则方程组解不存在或不唯一,本计算器无法求解。第二,常数项必须与系数矩阵行数相同,否则也会出现错误提示 12> 最简行阶梯形矩阵: 输入矩阵A=[1 2 3;4 5 6;7 8 9],分别按下“阶梯形”按钮,输出区显示计算结果如图19所示:
图19 13> 特征值:
输入矩阵A=[1 2 3;4 5 6;7 8 9],按下“特征值”按钮,输出区显示计算结果如图20所示: 11
图20 12
附录:主要代码 %%矩阵相加 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); else result = 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); else result = 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); else
matlab gui表格的用法
MATLAB GUI(Graphical User Interface)中的表格控件可以用于显示和编辑数据。
以下是MATLAB GUI表格的基本用法:创建表格:在GUIDE中,你可以从组件工具栏中选择“表格”并将其拖放到GUI界面中。
属性设置:Data:这是表格的核心属性,表示表格中的数据。
它是一个元胞数组,其中每个单元格又是一个元胞数组,包含该单元格的内容。
ColumnName:设置表格的列名。
RowName:设置表格的行名(如果适用)。
ColumnEditable:决定哪些列是可编辑的。
可以通过属性检查器进一步定制表格的外观和行为,如字体、颜色、大小等。
填充数据:使用set函数来填充数据。
例如,set(handles.uitable1, 'Data', yourCellArray),其中yourCellArray 是一个元胞数组,包含了要显示的数据。
如果你想设置列名,可以使用set(handles.uitable1, 'ColumnName', yourColumnNames),其中yourColumnNames是一个元胞数组,包含了列名。
获取数据:使用get函数来获取表格中的数据。
例如,data = get(handles.uitable1, 'Data')。
回调函数:表格控件有多种回调函数,如CellSelectionCallback(当单元格被选中时调用)和CellEditCallback(当单元格编辑完成时调用)。
你可以根据需要编写这些回调函数来响应用户的操作。
保存和加载数据:你可以使用MATLAB的文件I/O函数(如xlswrite、xlsread等)来保存和加载表格数据。
外部数据导入:如果你想从Excel或其他外部数据源导入数据到表格中,可以使用相应的MATLAB函数(如xlsread)来读取数据,并将其设置为表格的Data属性。
注意事项:确保在引用表格控件时使用正确的句柄名。
基于matlab gui的控制系统界面设计毕业设计论文
基于MATLAB GUI的控制系统界面设计摘要:MATLAB语言是一种十分有效的工具,能容易地解决在系统仿真及控制系统设计领域的教学与研究中遇到的问题,它可以将使用者从频繁的底层编程中解放出来,把有限的宝贵时间更多地华仔解决科学问题上。
MATLABA GUI是MATLAB人际交互界面。
由于GUI本身提供了windows基本控件的支持,并且具有良好的时间驱动机制,同时提供了MATLAB数学库的接口,所以GUI对于控制系统仿真的平台设计显得十分合适。
GUI对于每个用户窗口生成.fig和.m 文件。
前者负责界面的设计信息,后者负责后台代码的设计。
本文界面设计主要基于MATLAB GUI平台,结合控制系统基础理论和MATLAB控制系统工具箱,实现了用于控制系统界面的设计。
主要包括:进行常规控制环节(比如PID)的图形界面设计,能够在已知传输函数的情况下,输出常用响应曲线。
关键词:控制系统;MATLAB GUI;计算机设计Control system based on MATLAB GUI interface designAbstract: MATLAB language is a very effective tool,and can be easily resolved in the system simulation and control system of teaching in the field of computer-aided design and research problems,it could be the bottom of the user from tedious programming liberate the limted spend more valuable time to solve scientific problems. The MATLAB GUI is the interative interface.As the GUI itself provides the basic control windows support,and has a good mechanism for event-driven,while providing the MATLAB Math Library interface,the GUI for control system simulation platform for the design of it is suitable. GUI window generated for each user.Figand .M file. The former is responsible for the design of the interfaceinformation,which is responsible for the design of the background code.Research done in this article is mainly based on MATLAB GUI platform,the basis of combination of control syetem theory and MATLAB Control System Toolbox,the realization of control systems for computer-aided analysis and design software.Mainly includes:routine control links,such as PID,graphical interface design,can in the known transfer function of the case,the output respnonse curve is commonly used.Key words: Control System;MATLAB GUI;Computer design目录1 概述 (1)1.1 本文研究的目的以及意义 (1)1.2 已了解的本课题国内外研究现状 (1)1.3 本课题研究内容 (3)2 控制系统与MATLAB语言 (3)2.1 控制系统理论基础 (3)2.1.1 控制系统的古典理论与现代理论 (3)2.1.2 控制系统理论的基本内容 (4)2.2 MATLAB语言与控制系统工具箱 (4)2.2.1 MATLAB软件介绍 (5)2.2.2 控制系统工具箱介绍 (7)3 MATLAB简介及应用 (9)3.1 MATLAB GUI (9)3.2 图形用户界面设计工具的启动 (10)3.2.1图形用户界面设计工具的启动方式 (10)3.2.2 菜单方式 (10)3.2.3 图形用户界面设计窗口 (13)3.3 图形用户界面开发环境(GUIDE) (14)3.4 控件对象及属性 (16)3.5 菜单设计 (18)3.5.1 建立用户菜单 (18)3.5.2 菜单对象常用属性 (18)3.5.3 快捷菜单 (18)3.5.4 对话框设计 (19)3.5.5 公共对话框 (19)3.6 GUI程序设计 (19)4 GUI控制系统界面 (20)4.1 GUI控制系统界面设计 (20)4.1.1 具体设计步骤 (20)4.2 具体实现过程 (23)4.2.1 运行效果 (23)4.2.2 实现代码 (24)[参考文献] (25)附录 (26)谢辞 (29)1 概述1.1 本文研究的目的以及意义自动控制原理是自动控制专业和自动化专业的主要课程之一[3],是研究自动控制技术的基础理论课,是必修的专业基础课程。
基于Matlab GUI的数据采集与存储实验平台开发
基于Matlab GUI的数据采集与存储实验平台开发作者:张帆来源:《沿海企业与科技》2011年第01期[摘要]文章应用Matlab语言,编程实现了数据采集与存储实验平台,该平台通过PC机串行口,获得下位机的实验数据,并以.mat数据格式进行存储。
下位机以AT89S51为核心,通过MAX232实现与PC机的串行通讯。
该实验平台基于Matlab串口控制API函数,运行稳定、可靠,数据存储精度高,可充分发挥Matlab在实验教学中的优势,改善教学效果。
[关键词]数据采集;串行通讯;Matlab;AT89S51[作者简介]张帆,唐山学院机电工程系,硕士,研究方向:计算机测控技术,河北唐山,063000[中图分类号] TP311 [文献标识码] A [文章编号] 1007-7723(2011)01-0024-0003一、引言Matlab是一种基于矩阵运算的交互式数值计算软件,作为“第四代”计算机语言,具有极高的编程效率,在高等教育领域正发挥着日益重要的作用[1]。
Matlab下的GUIDE[2]是内嵌在Matlab环境中面向对象的图形用户界面开发工具,通过GUIDE用户可以方便地设计程序界面,在GUIDE自动生成的应用程序框架内,用户可以方便地编写事件代码,进行GUI程序的开发。
在测试技术实验教学中,传统的实验数据采集程序往往是一个封闭的环境,几乎不可能增加、修改现有程序的功能。
此外,采集程序得到的实验数据以文本文件的格式存储,无形中减低了数据精度。
本文采用Matlab语言,实现实验数据的采集与存储,不仅可以方便地增加、修改程序的功能,而且由于采用.mat 文件格式存储实验数据,保证了数据精度,同时也节省了存储空间,提高了数据传递的效率。
二、实验平台的组成本文采用8051系列单片机实现实际的数据采集,通过RS-232C串口向上位机发送采集到的实验数据,通过Matlab GUI程序实现数据的接收、显示和保存。
matlab的随机矩阵
matlab的随机矩阵MATLAB是一种强大的数值计算和数据可视化工具,在科学和工程领域非常受欢迎。
它具有丰富的数学函数库和图形处理功能,可以进行复杂的数值计算、数据分析和建模,帮助用户快速解决各种问题。
在MATLAB中,我们可以使用随机矩阵来模拟各种现实世界中的随机现象,并对其进行分析和处理。
随机矩阵是由随机数填充的矩阵,每个随机数都是独立和均匀分布的。
具体地说,MATLAB提供了几种生成随机矩阵的函数,如rand、randi和randn等。
这些函数可以生成具有指定大小和分布的随机矩阵。
下面我们来详细介绍一些常用的生成随机矩阵的函数和其应用。
1. rand函数rand函数可以生成一个具有在[0, 1)范围内均匀分布的随机数的矩阵。
它的基本语法如下:A = rand(m, n)其中,m和n分别表示生成的随机矩阵的行数和列数。
例如,我们可以生成一个3×3的随机矩阵:A = rand(3, 3)运行上述代码后,MATLAB会生成一个3×3的随机矩阵A,其元素是0到1之间的随机数。
rand函数在科学实验、模拟和概率分析等领域中经常使用。
例如,在蒙特卡洛方法中,我们可以使用rand函数生成大量的随机数来模拟真实环境中的不确定性,并用于统计估计和优化问题。
此外,rand函数还可以用于生成随机图像、随机噪声等。
2. randi函数randi函数可以生成一个具有特定范围和分布的随机整数矩阵。
它的基本语法如下:A = randi([min, max], m, n)其中,min和max表示生成随机整数的范围,m和n表示生成的随机矩阵的行数和列数。
例如,我们可以生成一个3×3的随机整数矩阵,范围为1到10:A = randi([1, 10], 3, 3)运行上述代码后,MATLAB会生成一个3×3的随机整数矩阵A,其元素是1到10之间的随机整数。
randi函数在密码学、模拟实验和随机算法等领域中经常使用。
MATLAB中的GUI程序设计
第七章MATLAB 的图形用户界面(GUI)程序设计Chapter 8: Design of MATLAB of GUIprogram图形用户界面GUI(Graphical User Interfaces)是一种用户和计算机进行信息交流的工具和方法,由各种图形对象组成,在这种用户界面下,用户的命令和对程序的控制是通过鼠标等输入设备“选择” 各种图形对象来实现的。
软件开发者只需在由软件开发工具自动生成的程序代码中添加自己的运算或控制代码,就可以完成应用程序的设计。
目前90% 以上的应用程序和软件都是在GUI 下运行的。
MATLAB 有两种GUI 用户界面控件的创建方式,基于命令行的编程方式制作和基于MATLAB 提供的图形用户界面开发环境GUIDE 中的图形用户界面开发工具的GUI 创建方式制作。
这里主要介绍基于GUIDE 的创建方式。
MATLAB 的GUI的基本图形对象分为控件对象uicontrol和用户界面菜单对象uimenu(包括固定菜单和现场菜单),简称控件和菜单。
一. 控件对象及属性(Object and its attributes of controller))1.GUI 控件对象类型(The mode of controller object)控件对象是事件响应的图形界面对象。
当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序( Callback) .常用的基本控件:(1)按钮(Push Buttons:) 执行某种预定的单功能或操作;(2)双位开关按钮(Toggle Button:产生一个动作并指示一个二进制状态(开或关) ,当鼠标点击它时按钮将下陷,并执行callback (回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback 中的内容;(3)单选框(Radio Button):单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;(4)复选框(Check Boxes)单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;(5)文本编辑器(Editable Texts):用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操作;(6)静态文本框(Static Texts)仅仅用于显示单行的说明文字;(7)滚动条(Slider):可输入指定范围的数量值;( 8)控件边框(Frames) 在图形窗口圈出一块区域;(9)列表框(List Boxes:在其中定义一系列可供选择的字符串;( 10)弹出式菜单(Popup Menus) 让用户从一列菜单项中选择一项作为参数输入;( 11)坐标轴(Axes) 用于显示图形和图象2.控件对象的描述(Description of controller object)MATLAB 中的控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生相应的响应。
利用MATLAB实现Routh稳定判据的GUI设计
摘 要 :根据 自动控制 系统 R0 t u h稳 定判据 的基本原理 ,利用 M ATLAB的 数值计算 和图形用 户界面 ( GUI )设计 功能 ,实现 线 性 系统稳定性 的快速判 别和系统特征根 的准确求 解 ,给 出了具 体的实现 方法及程序运 行界面 。 关键 词 : ta 稳定性分析 Ro t ma lb u h表 图形用户界面 中图分类 号 : TP 1 3 1 文 献标 识码 :A 文章编号 :1 7 — 5 42 0 ) 4 c一 0 5 0 6 3 0 3 (0 7 0 () 0 4 — 2 M ATL AB是 一种简 洁 、直 观 、高效 的 其 所具 有 的能控 制其特 性或 性 能的属 性值 来 TLA B提 供 了三个获 取当前 对 计算机语 言 ,它具 有强 大的科 学计算 能 力和 确定的 。M A 出色的 图形处 理能 力 ,提 供 了友好 的 图形用 象句 柄 的 函 数 ,gC f获 取 当前 图 形窗 口句 c c 户界面 (UI G ) 和齐全的 工具 箱 ,在工 程技 术领 柄 ;g a获 取 当前坐标 轴句 柄 ;g o获 取被 鼠标最 近点 击对 象的 句柄 。g t函数 用于 获 e 域 得到 了广泛 应用 。 稳 定性 是控 制 系统的 重要 性能 ,也 是 系 取指定对象 的属性 值 ,st e 函数用来设 置对象 统能正 常工 作的首 要条件 。 线性控 制 系统稳 的属性 值。f d b 可以 快速查 找所有对 象 , i oj n 定的充分 必要 条件是 :闭环 系统特 征方 程的 获取 指 定属 性 值的 对 象句 柄 。 所 有根 均具有 负实部 ;或者说 ,闭环传 递 函 数 的极 点均位于 左半 s平面 上 。由于 自动控 3G I U 程序设计 . 制 系统 的复杂 性 ,判别 计算量 非常 大 ,利用 31 图形窗 口和控件 . MAT A L B强大 的计算能 力 ,设 计出 G 应 UI 应 用程 序 的 图形 窗 口有 两种 生成 方 法 , 用 程序后 ,将 大大 方便用 户 ,使稳 定性 分析 利 用可视化 界面环 境 G ie实现或者 编写 M ud 变得很 简单。 脚 本文 件实 现 ,本设 计的所 有功 能全部 采 用 M 脚本 文 件设 计 。 1R uh 定判据 ot稳 f ue i r 函数创建新 的图形窗 口 常容易 , g 非 如 果 能够 将 所 有的 特 征根 全 部 解 出来 , 并 可 同时设 定窗 口的各 种属性 来控 制其 显示 立 即可以判 定 系统是 否稳 定 ,但对于 三阶 以 效果 , 如菜单 条、 工具 条、 背景 色、 位置尺寸 、 上 的高阶 系统 ,求解特 征 根难 度较大 ,采 用 标题 等。如果 需要在运行后 调节窗 口的大小 , Ro t u h稳 定判据可 以不必解 出特征 根 ,直 接 可将 R s e ei 属性 值设为 0 ,同时 为 了能正 常 z 1 3 可判断 出在右半 s 面是否 有根和有几 个根 。 关 闭窗 口, 平 必须设 置 Coe e u sF n属性 , lsR q etc 若 系统 的特 征 方 程 为 : 通过执 行 co e函数关 闭窗 口对象 。 ls 整个 窗 口按功 能分 为三块 功 能 区域 ,一 口 + a,a 5 . +…+a s ;0() s a+ 1 部 分用于显示 计算后完 整的 Ro t u h表 ;一 部 其 中 a 为正 ,绘制 一个 表格 ,最上 面 分 用于 功能和 参数 设置 ,如 系统特 征方 程 的 n 两行 系数按表 1 的格式 填入 () 1式中的各 系数 。 阶 次 、稳 定 度 、特 殊 情 况 的 处 理 方 式 等 ; 表l Ro t u h表格式 还 有一部 分用 于文 本信 息显示 ,如稳定 性 判 定 结 论 和 特 征 方 程 的 根 。 各 部 分 利 用 u i o t o 命令 创建 了静 态文本 、单 选按 ncnrl 钮 、命 令 按 钮 、框 架 ,列 表 框 、 检 查 框 、 编辑 框 、下拉 菜 单等 控 件 ,构 成 窗 口主 体 。 从第 三行 开始 按 照使 第 i 行第 J列的数 和 f ue i r 一样 ,u c n r l g io to 函数也可 以一次性 等于( ) : 2式 设 定控 件 的 各 种属 性 。 使 用时 ,用 户先通 过 上部 的下拉 菜 单设 定特征方 程的阶次 n ,阶次 n确定 后 ,R u h o t 表各 行的数 据 个数就 可 以确定 了。编 写一个 如果 a-1 j 不存在 ,则代 之以 0 i , +1 。整 根据 n 值 个 表格 共 n 行 ,称 为 Ro t +1 u h表 。线性 控 建表子程序作 为该控件的 回调函数 , u h表最 上面的两 行 ,由于 这两 制 系统 稳定 的充分 必要 条件是 表 中第一 列的 自动生成 Ro t 所 有元素 为正 数 ,并且 该列 中数值 符号 改变 行需 要用 户用键 盘输 入特 征方 程的 系数 ,所 以使用 u io to 函数建立 几个的编辑 框控 ncn r l 的次数 等于 特征 方程 中正 实部 根 的数 目。 于 特 殊 情 况 ,点 击 “ 算 ” 按 钮 就会 调 用 计 Rot 表计算 子程序求 出完 整的 R uh 。 uh ot 表 计 算前 必须定义几个全 局变量 , 整数 n 保存特征 方程 的阶次 ,行向量 p z r s1n 1 ,保存 = eo( ,+ ) 特征 方程的 系数 ,矩阵 c z r sn ) = e o ( +1 ,保存 整个 R uh表的 系数 。使用 f d b 和 g t ot i o j e函 n 数将 R u h 上两行系数 编辑框 的系数读 出, ot表 得 到是字符 变量 ,还必须用 sr n m 函数转 t2 u 换 为数字 ,再 赋给 P C中相应 的元素 。 和 此时 ,就可以 从第 3 行开 始按 照公式 () 2 计算 余下的 Ro t u h表各行 。每计算 完一行必 须 及时 判断 ,一 旦发现 出现 后面所 说的特 殊 情 况应 及时转 入相 应的 子程序 ,而不得 继续 下一行 的计算 。 正常情况 下还必须用 n m s u 2t r 函数将 新系数转换为 字符 , 使用 f d b 和 st i oj e n 函数 将系数 在相应 编辑 框 中显示 出来 。 3 3 特殊情况 的处 理 . ( )如果 RO t 1 U h表 中某 行的 第 l 系 列 数为 0,而 其余 各 项不 为 0,可以用 一个 小 的正 数代 替 ,而继 续计算 其余 各元 素。 也可 以用 因子 s 乘 以原特 征方程 ,其 中 a可以 +a 为 任 意 正 数 ,之 后再 对 新 的特 征 方 程 应 用 Ro t u h判 据 。 在 Ro t uh表 计算 子程序 中 ,一 旦发现上 述情况 , 通过一 个单选按钮提示 , 将相应的 并 两个检 查框 控件使 能, 由用 户选择处理方法 。 如 果以小 正数取 代 ,在 M A AB中有 TL 个系统定 义的特殊变量 es p ,它是 计算 机能 处理的 最小数 ,约等于 2 2 0 e 0 6 . 2 4 - l ,因此 可以利用属 性设置 函数 st 该行第 l 系数 e将 列 设为 es 然 后调用 R uh表计算子程序继 续 p, ot 计算余 下的各 系数 。 也 可 以 通 过 下 拉 菜 单 控 件 , 选 择 因 子 sa a + 的 值大小 ,在该控件 的回调 函数 中执 行 如下操作 :用 g t f d b 获取 a ,利 用 e和 i oj n 值 函数 c n 将保 存原特征方程 的多项式 系数 行 oy 向量 P与行 向量 【 , 】 乘 ,就可 以得到 新的 l a相 特 征 方 程 的 系数 ,相 应 的方 程 阶 次应 加 l, 然 后调 用建表 子程序 重建 Ro t u h表 。 ( )如 果 RO t 2 U h表 中某行 的所有 元素 都 为 0,表 明特 征方 程 中存在 一些 大小相 等 但 关于 原点 对称 的根 。这时 ,可用全 0行 的 上 一 行 的 系数 构 造 一 个 辅 助 方 程 ,对其 求 导 ,用 所得 方程 的系数 代替 全 0行 ,然后继 续 运算得 到全部 的 Ro t u h表 。 程序设计 在 R uh表计算时 ,通过判 断 ot 发 现 上述 情 况后 ,通过 一 个 单选 按钮 提 示 , 并 将 相 应 的 检 查 框 控 件 使 能 ,由 用 户选 中 后 ,在 回调 函数 中提取 上一行 的 系数 ,构造 维普资讯Biblioteka 2 0 NO . 07 12
如何在Matlab中创建矩阵
如何在Matlab中创建矩阵在Matlab中创建矩阵是一项基本的任务,它在数据处理和数学建模中起着重要的作用。
本文将介绍几种在Matlab中创建矩阵的方法,包括手动创建矩阵、使用内置函数和通过导入数据。
1. 手动创建矩阵手动创建矩阵是最常用的方法之一,它允许用户根据自己的需求定义矩阵的大小和内容。
在Matlab中,可以使用方括号和分号来定义矩阵的行和列。
例如,要创建一个3x3的矩阵,可以使用以下命令:A = [1, 2, 3; 4, 5, 6; 7, 8, 9];这将创建一个3行3列的矩阵A,其中元素依次为1到9。
可以通过显示矩阵来验证结果。
disp(A);2. 使用内置函数创建矩阵Matlab提供了许多内置函数用于创建常见类型的矩阵,这些函数可以简化矩阵的创建过程并节省时间。
下面介绍几个常用的内置函数。
2.1 zeros函数zeros函数可以创建一个全零矩阵。
语法如下:B = zeros(3, 4);这将创建一个3行4列的矩阵B,其中所有元素都为零。
2.2 ones函数ones函数可以创建一个全一矩阵。
语法如下:C = ones(2, 3);这将创建一个2行3列的矩阵C,其中所有元素都为一。
2.3 eye函数eye函数可以创建一个单位矩阵,也称为对角矩阵。
语法如下:D = eye(4);这将创建一个4行4列的单位矩阵D,其中对角线上的元素为一,其他元素为零。
3. 导入数据创建矩阵除了手动创建和使用内置函数创建矩阵外,Matlab还支持从外部文件导入数据创建矩阵。
这对于处理大型数据集特别有用。
3.1 导入文本文件可以使用`importdata`函数导入文本文件中的数据。
例如,要导入名为data.txt 的文本文件,其中包含一组数值,可以使用以下命令:data = importdata('data.txt');这将把文本文件中的数据导入到一个名为data的矩阵中。
3.2 导入Excel文件Matlab还支持导入Excel文件中的数据。
matlab批量操作矩阵元素的方法
matlab批量操作矩阵元素的方法在MATLAB中,可以使用多种方法批量操作矩阵元素。
以下是一些常见的方法:1. 使用索引:MATLAB允许您使用索引直接访问和修改矩阵的元素。
例如,如果你想将矩阵A的所有元素乘以2,你可以这样做:```matlabA = [1 2 3; 4 5 6; 7 8 9];A = A 2;```2. 使用循环:您可以使用for循环或while循环来迭代矩阵的元素。
例如,如果你想将矩阵A的所有元素加1,你可以这样做:```matlabA = [1 2 3; 4 5 6; 7 8 9];for i = 1:size(A,1)for j = 1:size(A,2)A(i,j) = A(i,j) + 1;endend```3. 使用向量化:MATLAB是一种向量化语言,这意味着您可以使用向量操作而不是循环来执行许多常见的矩阵操作。
例如,如果您想将矩阵A的所有元素加1,您可以这样做:```matlabA = [1 2 3; 4 5 6; 7 8 9];A = A + 1;```4. 使用内置函数:MATLAB有许多内置函数可以用于批量操作矩阵元素。
例如,`repmat`函数可以用于复制矩阵,`cat`函数可以用于连接矩阵,`diag`函数可以用于创建对角矩阵等等。
5. 使用数组操作:MATLAB还支持使用数组操作批量处理数据。
例如,您可以使用``和`.`操作符来执行矩阵乘法和元素乘法,使用`+`和`-`操作符来执行矩阵加法和元素加法等等。
这些是MATLAB中批量操作矩阵元素的一些常见方法。
选择哪种方法取决于您的具体需求和偏好。
MATLAB-SIMULINK实用教程第2章数组、矩阵及其运算
【例2-14】 计算多项式的
( x + 2 x + 3x + 4)(10x + 20x + 30) 卷积。
3 2 2
9.张量积
命令格式:
C=kron (A,B) 则C为mp×nq矩阵。 %A为m×n矩阵,B为p×q矩阵,
【例2-15】
1 2 3 1 2 , B 4 5 6 A 3 4 7 8 9
2.1 数组的创建 1.3.2 Windows下安装MATLAB
1.直接输入法
(1)使用分号,创建一维列数组。
>> D1=[pi;log(5);7+2;2^3] D1 = 3.1416 1.6094 9.0000 8.0000
(2)使用空格,创建一维行数组。
>> D2=[pi log(5) 7+2 2^3] D2 = 3.1416 1.6094 9.0000
2.2.2 加、减运算
加、减运算符为“+”和“−”。运算规则 为对应元素相加、减,即按线性代数中矩阵的 “+”、“−”运算进行。 【例2-6】 加、减运算符示例。
2.2.3 乘法
乘法运算符为“*”。运算规则和线性代 数中矩阵乘法运算相同,即放在前面的矩阵的 各行元素,分别与放在后面的矩阵的各列元素 对应相乘并相加。
zeros ones
magic
linspace logspace
魔方矩阵
线性空间向量 对数空间向量
rand
randn eye
元素服从均匀分布的随机矩阵
元素服从正态分布的随机矩阵 对角线上元素为1的矩阵(单位矩阵)
2.1.4 矩阵元素的标识
找到满足某一条件的矩阵元素称为矩阵元 素的标识。 【例2-3】 找出数组A中所有绝对值大于 3的元素。
MATLAB图形显示和GUI设计
第4章MATLAB计算的可视化和GUI设计MATLAB具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的可视化。
4.1二维曲线的绘制4.1.1基本绘图命令plot1. plot(x) 绘制x向量曲线plot命令是MATLAB中最简单而且使用最广泛的一个绘图命令,用来绘制二维曲线。
语法:plot(x) %绘制以x为纵坐标的二维曲线plot(x,y) %绘制以x为横坐标y为纵坐标的二维曲线说明:x和y可以是向量或矩阵。
【例4.1】用plot(x)命令画直线,如图4.1所示。
x1=[1 2 3]x1 =1 2 3plot(x1)x2=[0 1 0]x2 =0 1 0plot(x2)图4.1 (a) x1曲线 (b) x2曲线2. plot(x,y) 绘制向量x和y的曲线【例4.2】绘制正弦曲线y=sin(x)和方波曲线,如图4.2所示。
x1=0:0.1:2*pi;y1=sin(x1); %y1为x1的正弦函数plot(x1,y1);x2=[0 1 1 2 2 3 ];y2=[1 1 0 0 1 1 ];plot(x2,y2);axis([0 4 0 2]) %将坐标轴围设定为0-4和0-23. plot(x) 绘制矩阵x的曲线【例4.3】矩阵图形的绘制,如图4.3所示。
x1=[1 2 3;4 5 6];plot(x1);x2=peaks; %产生一个49*49的矩阵plot(x2);程序分析:a图中有三条曲线而不是两条曲线,因为矩阵x1有三列,每列向量画一条曲线;b图为由peaks函数生成的一个49×49的二维矩阵,因此产生49条曲线。
4. plot(x,y)绘制混合式曲线当plot(x,y)命令中的参数x和y是向量或矩阵时,分别有以下几种情况:图4.2 (a) 正弦曲线 (b) 方波曲线图4.3 (a) x1曲线 (b) x2曲线▪如果x是向量,而y是矩阵,则x的长度与矩阵y的行数或列数必须相等,如果x 的长度与y的行数相等,则向量x与矩阵y的每列向量对应画一条曲线;如果x的长度与y 的列数相等,向量x与y的每行向量画一条曲线,如果y是方阵,则x和y的行数和列数都相等,将向量x与矩阵y的每列向量画一条曲线;▪如果x是矩阵,而y是向量,则y的长度必须等于x的行数或列数,绘制的方法与前一种相似;▪如果x和y都是矩阵,则大小必须相同,矩阵x的每列和y的每列画一条曲线。
