matlab_matlab介绍 - CSDN
matlab 订阅
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 [1]  MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。 [1]  MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。 展开全文
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 [1]  MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。 [1]  MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
信息
开发商
MathWorks.Inc [2]
软件授权
MathWorks.Inc
软件名称
MATLAB
更新时间
2020-06-11
软件版本
R2020a [3]
软件平台
Windows/MacOS/Linux等
软件语言
C
软件大小
216.77M
MATLAB功能特性
·MATLAB®: MATLAB 语言的单元测试框架   ·Trading Toolbox™: 一款用于访问价格并将订单发送到交易系统的新产品  ·Financial Instruments Toolbox™: 赫尔-怀特、线性高斯和 LIBOR 市场模型的校准和 Monte Carlo 仿真  ·Image Processing Toolbox™: 使用有效轮廓进行图像分割、对 10 个函数实现 C 代码生成,对 11 个函数使用 GPU 加速  ·Image Acquisition Toolbox™: 提供了用于采集图像、深度图和框架数据的 Kinect® for Windows®传感器支持  ·Statistics Toolbox™: 用于二进制分类的支持向量机 (SVM)、用于缺失数据的 PCA 算法和 Anderson-Darling 拟合优度检验  ·Data Acquisition Toolbox™: 为 Digilent Analog Discovery Design Kit 提供了支持包  ·Vehicle Network Toolbox™: 为访问 CAN 总线上的 ECU 提供 XCPSimulink 产品系列重要功能  ·Simulink®: Simulation Performance Advisor,链接库模块的封装,以及通过逻辑表达式控制有效变量  ·Simulink: 除 LEGO® MINDSTORMS® NXT、Arduino®、Pandaboard 和 Beagleboard 外,还为 Raspberry Pi™ 和 Gumstix® Overo® 硬件提供了内置支持  ·SimRF™: 针对快速仿真和模型加载时间的电路包络求解器  ·SimMechanics™: 发布了用于从 CAD 和其他系统导入模型的 XML 架构  ·Simulink Design Verifier™: 数组超出边界检查  MATLAB 和 Simulink 的系统工具箱  ·Communications System Toolbo Sphere 解码器和 Constellation 框图系统对象  ·Computer Vision System Toolbox™: 相机标定,立体视觉,Viola-Jones 对象检测培训,FREAK 特征提取和其他新函数  ·DSPSystem Toolbox™: 频谱分析仪和逻辑分析示波器,以及时域示波器的触发·Phased Array System Toolbox™: 极化支持、数组锥化以及针对传感器数组分析、波形分析和雷达方程计算的应用程序代码生成和实现  ·Simulink Coder™: 减少了从 Stateflow® 调用的 Simulink 函数的数据副本  ·Fixed-Point Designer™: 一款结合了 Fixed-Point Toolbox™ 和 Simulink Fixed Point™ 功能的新产品  ·HDL Verifier™: 从 MATLAB 生成 HDL 测试工作台
收起全文
精华内容
参与话题
  • MATLAB基础入门课程

    千人学习 2019-11-21 10:30:22
    MATLAB基础入门课程,系统介绍MATLAB的基础知识。 主要从数组、运算、结构和绘图等几方面进行讲解 简单易懂,轻松入门MATLAB
  • MATLAB零基础入门教程

    万人学习 2019-12-09 16:38:29
    MATLAB零基础入门教程,主要介绍数组和矩阵、数据类型和M文件设计等。很详细地介绍了MATLAB语言的基础知识。 本课程的特点是内容系统全面,条理清晰,并且内容比较新,讲了表、时间表等新的数据类型。
  • matlab经典题目

    2020-07-30 23:33:24
    matlab经典题目,老师上课的时候给的,后续再发具体程序。matlab经典题目,老师上课的时候给的,后续再发具体程序。matlab经典题目,老师上课的时候给的,后续再发具体程序。
  • Matlab小白入门必备教程

    千人学习 2020-07-13 15:13:46
    MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算语言和交互式环境,本课程将深入浅出讲解 MATLAB 的基本操作、MATLAB 编程和绘图等。          
  • MATLAB(一)——软件及基本操作介绍

    万次阅读 多人点赞 2019-04-23 15:27:57
    一、MATLAB软件介绍 1.matlab的界面 左上角,home标签下,找到layout进行设置/复位,可以设置各板块的显示与隐藏。其中有几个部分,请务必要显示①Current Folder:中文一般翻译成工作路径,一般设置成一个自己...

    一、MATLAB软件介绍

    1.matlab的界面

     左上角,home标签下,找到layout进行设置/复位,可以设置各板块的显示与隐藏。其中有几个部分,请务必要显示
    ①Current Folder:中文一般翻译成工作路径,一般设置成一个自己建立的、有读写权限的文件夹,例如我的文档下建立一个matlab文件夹
    ②Command Window:字面意思是命令窗口,用来运行代码,所有的代码都是在这里输入

    ③Workspace:字面意思是工作空间,其实就是暂存所有运行结果的地方,“暂”的具体含义是:关闭matlab后丢失

    2.软件中的基本概念

    2.1 函数

     

        matlab之所以强大,就是因为提供大量的函数,你也可以建立自定义函数,方法是:Home->New->function。自定义函数一般保存在工作路径下。函数文件的特征是:扩展名m,内容的第一行以function开头,后续内容是“输出变量=函数名(输入变量)”。且函数名和文件名相同。
        每个函数在Command Window中运行,用来完成特定的计算任务,运行方式是输入“输出变量=函数名(输入变量)”,然后按回车。例如有个系统自带的函数是用来求绝对值的,函数名abs,所以在Command Window里输入“a=abs(-1)”,就会显示运算结果为“a=1”。且运算结果会在Workspace里出现一个变量a,双击后可看到a的值是1。

     

    2.2 脚本

        可以理解为特殊的函数,这种函数内容的开头没有function那行,因此没有输入、输出变量,也没有函数名。文件扩展名和函数一样是m,也需要在Command Window里运行。脚本都是用户建立的,方法是:Home->New Script。一般保存在工作路径下。脚本的功能就是完成用户需要的、复杂的计算任务,通常脚本里会调用很多函数。

    2.3 GUI

     

        一般翻译为界面,就是人机交互界面的意思。写脚本处理问题的方法有点麻烦,让人看起来更像是码农,所以现在很多问题可以通过界面点点鼠标解决。这时候就需要打开界面,打开方法是:在APPS标签里可以找到所有已安装的GUI工具,单击即可。注意右边有个小三角可以点开。和函数一样,用户也可以自己建立自定义GUI,这部分较为复杂,对新手而言有点遥远。

     

    2.4 toolbox

     

        一般翻译成工具箱,matlab将功能相近或者应用上自成体系的一组函数和GUI打包成一个toolbox。正版的matlab在购买时,几乎每一个toolbox都是要单独收费的,所以toolbox也可以理解为matlab产品的模块,一个工具箱就是一个产品/商品。

     

    2.5 simulink

     

        一般用matlab解决问题的过程是:用户自定义脚本,在Command Window里运行脚本。而脚本的运行逻辑是顺序执行,和一般的编程一样。simulink则提供另一种思路,图形化编程,有点像labview,这种方法很适合于物理模型的仿真,因此有时用“matlab编程”和“simulink仿真”强调。使用方法是在home标签下点击simulink。

     

    3.获得帮助

     

        常用的获得帮助有四种方法

     

    右上角home标签里,有个Help标志,点开后可以获得各工具箱/产品的完整帮助文档。新版本中默认使用在线,改用本地帮助的办法是在home标签里,Preferences下的matlab/Help里选择installed locally

     

    cn.mathworks.com官网上找到支持,然后可以获得教程。这种方法获得的帮助文档和第一种方法一样。
    在Command Window里输入 doc+函数名 来获得帮助。比如输入"doc fft"可以获得离散傅里叶变换函数fft的帮助和范例。这种方法获得的文档是前两种方法文档中的部分。当然,前提是你要知道函数名,才能找到帮助。这种方法适合于获得系统自带函数的使用说明。
    使用GUI时,通常界面的角落里有Help,点开可以获得帮助。这种方法获得的文档是第一和第二种方法文档中的部分。这种方法适合于获得系统自带GUI的使用说明。
        这几种方法中,最常用的是第三种,只要知道自己需要的函数名,就可以用这种方式获得说明和范例。而实际使用中,一般常用的系统自带函数,也并不是非常多,大概几十个?真正需要牢记使用方法的可能就几个,通常都是知道函数名,要用的时候doc一下。

     

    二、命令窗口的基本配置

    1、format命令

    进行数据类型转换,行间距调节等功能时,用

            format + 关键词 回车

    eg:format long 回车   //将数据变为长整型

            format compat/loose 回车  //调节行间距紧密/松散

    2、clc命令  

        清屏。即清理当前屏幕上的内容,屏幕上没有了,但保留在内存中了

    3、clear命令 

        删除某一变量,或清空工作区

        clear + 变量名 回车

        eg:clear a 回车  //删除工作区中的a变量

                clear或者clear all //清空工作区。建议在刚打开matlab窗口时先清空一下工作区。

    4、whos命令  

        查看某变量详细信息

       4.1  whos 回车  //查看所有变量信息

       4.2 whos + 变量名 回车 // 查看该变量详细信息

        eg:whos a 回车

    5、x/ylable命令  //给xy轴加横纵坐标说明

        eg:xlable (‘x轴’) 回车

    6、disp()  //屏幕输出函数,类似于c语言中的printf()函数

     

        disp函数直接将内容输出在Matlab命令窗口中,关键是看disp函数怎么把字符和数字在一起进行显示。

        disp(X)函数只有一个输入,当你有多个字符串作为输入时就会报错。

    例如:

        disp('Alice is ' , num2str(12) , ' years old!' );

    就会报错--输入参数过多。

        但是将里边的内容用中括号一括就成了一个字符串,

    例如:

        str=['Alice is ' num2str(12) ' years old!'];

        disp(str);

    上边这句话也就等价于:

        disp=(['Alice is ' num2str(12) ' years old!']);

    这就是加中括号的原因,而不是因为num2str(),

        因为disp(num2str(12));也是正确的,因为里边就只有一个字符串。

    7、zeros函数 //创建一个全为零元素的数组

    1、B = zeros(n)  返回一个n x n的零矩阵.如果n不是一个标量,将抛出错误。
    2、B = zeros(m,n) or B = zeros([m n])  返回一个m x n的零矩阵。
    3、B = zeros(d1,d2,d3...) or B = zeros([d1 d2 d3...]) 返回一个d1-by-d2-by-d3-by-... .的零元素数组。
    4、B = zeros(size(A))  返回一个和A一样大小的零数组。
    5、zeros(m, n,...,classname) or zeros([m,n,...]  返回一个类型为classname的m x n x...零数组。classname可以是下面一些值:double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', or 'uint32'
    示例
        x = zeros(2,3,'int8');
    备注
        MATLAB语言 没有一个 维度 声明 ; MATLAB 自动为矩阵分配存储空间。 然而,对于大型矩阵 , MATLAB程序可能会执行得更快 ,如果零函数用于设置一个矩阵,其元素将产生一次 , 或行或列的时间预留存储空间。例如
    
    2、B = zeros(m,n) or B = zeros([m n])  返回一个m x n的零矩阵。
    3、B = zeros(d1,d2,d3...) or B = zeros([d1 d2 d3...]) 返回一个d1-by-d2-by-d3-by-... .的零元素数组。
    4、B = zeros(size(A))  返回一个和A一样大小的零数组。
    5、zeros(m, n,...,classname) or zeros([m,n,...]  返回一个类型为classname的m x n x...零数组。classname可以是下面一些值:double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', or 'uint32'
    示例
        x = zeros(2,3,'int8');
    备注
        MATLAB语言 没有一个 维度 声明 ; MATLAB 自动为矩阵分配存储空间。 然而,对于大型矩阵 , MATLAB程序可能会执行得更快 ,如果零函数用于设置一个矩阵,其元素将产生一次 , 或行或列的时间预留存储空间。例如
    
        x = zeros(1,n); 
        for i = 1:n
        x(i) = i; 
        end

     

     

     

     

     

     

     

    展开全文
  • matlab linkage函数 计…

    千次阅读 2017-03-14 10:49:23
    Z=linkage(Y)使用最短距离算法生成具层次结构的聚类树。    输入矩阵Y为pdist函数输出的距离行向量。    Z=linkage(Y,’method’)使用由’method’指定的算法计算生成聚类树。’method’可取表中特征字符串值...
        Z=linkage(Y)使用最短距离算法生成具层次结构的聚类树。 

        输入矩阵Y为pdist函数输出的距离行向量。 

        Z=linkage(Y,’method’)使用由’method’指定的算法计算生成聚类树。’method’可取表中特征字符串值。 

             ’method’取值及含义 
           字符串          含  义 
        ’single’       最短距离(缺省) 
        ’complete’      最大距离 
        ’average’      平均距离 
        ’centroid’      重心距离 
        ’ward’      离差平方和方法(Ward方法)

        输出Z为包含聚类树信息的 (m-1)*3矩阵。聚类树上的叶节点为原始数据集中的对象,由1到m 。它们是单元素的类,级别更高的类都由它们生成。对应于Z中行j 每个新生成的类,其索引为 j+m ,其中m 为初始叶节点的数量。 

        第1列和第2列,即Z(i,1:2)包含了被两两连接生成一个新类的所有对象的索引。生成的新类索引为 j+m 。共 有 m-1 个级别更高的类,它们对应于聚类树中的内部节点。 

        第三列,Z(i,3)包含了相应的在类中的两两对象间的连接距离。 
    展开全文
  • MATLAB的使用

    万次阅读 多人点赞 2018-05-05 17:05:58
    绪 论Matlab是“Matrix Laboratory”的缩写,意为“矩阵实验室”,是当今美国很流行的科学计算软件.信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用.在许多诸如控制论、时间序列分析、系统...

     

    绪 

    Matlab是“Matrix Laboratory”的缩写,意为“矩阵实验室”,是当今美国很流行的科学计算软件.信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用.在许多诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其相应的计算问题.自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高.美国Mathwork软件公司推出的Matlab软件就是为了给人们提供一个方便的数值计算平台而设计的.

    Matlab是一个交互式的系统,它的基本运算单元是不需指定维数的矩阵,按照IEEE的数值计算标准(能正确处理无穷数Inf(Infinity)、无定义数NaN(not-a-number)及其运算)进行计算.系统提供了大量的矩阵及其它运算函数,可以方便地进行一些很复杂的计算,而且运算效率极高.Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程完成特定的工作.除基本部分外,Matlab还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的Control System工具箱和神经网络中Neural Network工具箱等.

    第一节 Matlab的安装及使用

    §1.1 Matlab的安装

    版本Matlab 6.x for Windows.因为它使用方便,界面美观,我们选择它作为主要讲解版本.Matlab还有许多附加的部分,最常见的部分称为Simulink,是一个用作系统仿真的软件包,它可以让您定义各种部件,定义各自对某种信号的反应方式及与其它部件的连接方式.最后选择输入信号,系统会仿真运行整个模拟系统,并给出统计数据.Simulink有时是作为Matlab的一部分提供的,称为Matlab with Simulink版本.Matlab还有许多工具箱,它们是根据各个特殊领域的需要,用Matlab自身的语言编写的程序集,使用起来非常方便.您可以视工作性质和需要购买相应的工具箱.常见的工具箱有:

    Signal Process

    信号处理

    System Identification

    系统辨识

    Optimization

    优化

    Neural Network

    神经网络

    Control System

    自动控制

    Spline

    样条

    Symbolic Math

    符号代数

    Image Process

    图像处理

    Nonlinear Control

    非线性控制

    Statistics

    统计

    §1.2 Matlab基本用法

    从Windows中双击Matlab图标,会出现Matlab命令窗口(Command Window),在一段提示信息后,出现系统提示符“>>”.您可以在提示符后键入各种命令,通过上下箭头可以调出以前打入的命令,用滚动条可以查看以前的命令及其输出信息.

    如果对一条命令的用法有疑问的话,可以用Help菜单中的相应选项查询有关信息,也可以用help命令在命令行上查询,您可以试一下help、help help和help eig(求特征值的函数)命令.

    下面我们先从输入简单的矩阵开始掌握Matlab的功能.

    §1.2.1输入简单的矩阵

    输入一个小矩阵的最简单方法是用直接排列的形式.矩阵用方括号括起,元素之间用空格或逗号分隔,矩阵行与行之间用分号分开.例如输入:

    A=[1  2  3 ;  4  5  6 ;  7  8  0]

    系统会回答

    A =

    1      2     3

    4      5     6

    7      8     0

    表示系统已经接收并处理了命令,在当前工作区内建立了矩阵A.

    大的矩阵可以分行输入,用回车键代替分号,如:

    A=[ 1     2     3

    4    5     6

    7    8     0]

    结果和上式一样,也是

    A =

    1      2     3

    4      5     6

    7      8     0

    §1.2.2矩阵元素

    Matlab的矩阵元素可以是任何数值表达式.如:

    x=[ -1.3   sqrt(3)   (1+2+3)*4/5]

    结果:

    x =

     -1.3000   1.7321    4.8000

    在括号中加注下标,可取出单独的矩阵元素.如:

    x(5)=abs(x(1))

    结果

    x =

     -1.3000   1.7321    4.8000    0     1.3000

    注:结果中自动产生了向量的第5个元素,中间未定义的元素自动初始为零.

    大的矩阵可把小的矩阵作为其元素来完成,如:

    A=[A; [10  11  12]]

    结果

    A =

    1      2     3

    4      5     6

    7      8     0

    10    11   12

    小矩阵可用“:”从大矩阵中抽取出来,如:

    A=A(1:3,:);

    即从A中取前三行和所有的列,重新组成原来的A. (详细介绍参见第二节的相关内容)

    §1.2.3语句和变量

    Matlab的表述语句、变量的类型说明由Matlab系统解释和判断.Matlab语句通常形式为:

    变量=表达式

    或者使用其简单形式为:

    表达式

    表达式由操作符或其它特殊字符、函数和变量名组成.表达式的结果为一个矩阵,显示在屏幕上,同时保存在变量中以留用.如果变量名和“=”省略,则具有ans名(意思指回答)的变量将自动建立.例如:

    键入1900/81

    结果为:

    ans =

    23.4568

    需注意的问题有以下几点:

    语句结束键入回车键,若语句的最后一个字符是分号,即“;”,则表明不输出当前命令的结果.

    如果表达式很长,一行放不下,可以键入“”(三个点,但前面必须有个空格,目的是避免将形如“数2 …”理解为“数2.”与“..”的连接,从而导致错误),然后回车.

    变量和函数名由字母加数字组成,但最多不能超过63个字符,否则系统只承认前63个字符.

    Matlab变量字母区分大小写,如Aa不是同一个变量,函数名一般使用小写字母,如inv(A)不能写成INV(A),否则系统认为未定义函数.

    §1.2.4 who和系统预定义变量

    输入who命令可检查工作空间中建立的变量,键入

    who

    系统输出为:

    Your variables are:

    A  ans  x

    这里表明三个变量已由前面的例子产生了.

    但列表中列出的并不是系统全部的变量,系统还有以下内部变量:

    eps、pi、Inf、NaN

    变量eps在决定诸如矩阵的奇异性时,可作为一个容许差,容许差的初值为1.0到1.0以后计算机所能表示的下一个最大浮点数,IEEE在各种计算机、工作站和个人计算机上使用这个算法.用户可将此值置为任何其它值(包括0值).

    变量pi是p.

    Inf表示无穷大.如果您想计算1/0

    S=1/0

    结果会是

    Warning:Divide by zero

    S=Inf

    具有IEEE规则的机器,被零除后,并不引出出错条件或终止程序的运行,而产生一个警告信息和一个特殊值在计算方程中列出来.

    变量NaN表示它是个不定值.由Inf/Inf或0/0运算产生.

    要了解当前变量的信息请键入whos,屏幕将显示:

      Name           Size               Bytes             Class

      A                4x3                96                  double array

      S                 1x1                8                  double array

      ans                     1x1                8                  double array

      x                 1x5                40                  double array

    Grand total is 19 elementsusing 152 bytes

    从size及bytes项目可以看出,每一个矩阵实元素需8个字节的内存.4×3的矩阵使用96个字节,全部变量的使用内存总数为152个字节.自由空间的大小决定了系统变量的多少,如计算机上有虚拟内存的话,其可定义的变量个数会大大增加.

    §1.2.5数和算术表达式

    Matlab中数的表示方法和一般的编程语言没有区别.如:

    3                    -99                       0.0001

    9.63972           1.6021E-20           6.02252e23

    在计算中使用IEEE浮点算法其舍入误差是eps.浮点数表示范围是10-308~10308

    数学运算符有:

    +            加

    -             减

    *            乘

    /             右除

    \             左除

    ^            幂

    这里1/4和4\1有相同的值都等于0.25(注意比较:1\4=4).只有在矩阵的除法时左除和右除才有区别.

    §1.2.6复数与矩阵

    Matlab中输入复数首先应该建立复数单位:

    i=sqrt(-1)

    及j=sqrt(-1)

    之后复数可由下面语句给出:

    Z=3+4i    (注意: 在4与i之间不要留有任何空间!)

    输入复数矩阵有两个方便的方法,如:

    A=[1  2; 3  4] + i*[5 6; 7  8]

    和 A=[1+5i  2+6i;  3+7i  4+8i]

    两式具有相等的结果.但当复数作为矩阵的元素输入时,不要留有任何空间,如1+5i,如在“+”号左右留有空格,就会被认为是两个分开的数.

    不过实际使用复数时并没有这么麻烦,系统有一个名为startup.m的Matlab命令文件,建立复数单位的语句也放在其中.当Matlab启动时,此文件自动执行,i和j将自动建立.

    §1.2.7输出格式

    任何Matlab语句执行结果都可在屏幕上显示,同时赋给指定的变量,没有指定变量时赋给ans.数字显示格式可由format命令来控制(Windows系统下的Matlab系统的数字显示格式可以由Option菜单中的NumericalFormat菜单改变).format仅影响矩阵的显示,不影响矩阵的计算与存贮.(Matlab以双精度执行所有的运算)

    首先,如果矩阵元素是整数则矩阵显示就没有小数,如x=[-1 0 1],结果为:

            x=

                   -1    0     1

    如果矩阵元素不是整数则输出形式有:(用命令:format 格式进行切换)

    格式

    中文解释

    说明

    format

    短格式

    (缺省格式)

    Default. Same as SHORT

    format short

    短格式

    (缺省格式)

    Scaled fixed point format with 5 digits

    (只显示五位十进制数)

    format long

    长格式

    Scaled fixed point format with 15 digits

    format short e

    短格式e方式

    Floating point format with 5 digits

    format long e

    长格式e方式

    Floating point format with 15 digits

    format short g

    短格式g方式

    Best of fixed or floating point format with 5 digits

    format long g

    长格式g方式

    Best of fixed or floating point format with 15 digits

    format hex

    16进制格式

    Hexadecimal format

    format +

    +格式

    The symbols +, - and blank are printed                         for positive, negative and zero elements.                        Imaginary parts are ignored

    format bank

    银行格式

    Fixed format for dollars and cents

    format rat

    有理数格式

    Approximation by ratio of small integers

    format compact

    压缩格式

    Suppress extra line-feeds

    format loose

    自由格式

    Puts the extra line-feeds back in

    例如:

    x=[4/3  1.2345e-6]

    在不同的输出格式下的结果为:

    短格式                   1.3333                                       0.0000

    短格式e方式         1.3333e+000                               1.234e-006

    长格式                   1.333333333333333                    0.000001234500000

    长格式e方式         1.333333333333333e-000            1.23450000000000e-006

    有理数格式            4/3                                             1/810045

    16进制格式           3ff5555555555555                      3eb4b6231abfd271

    +格式                    +                                               +

    对于短格式,如果矩阵的最大元素比数999999999大,或者比数0.0001小,则在打印时,将加入一个普通的长度因数.如y=1.e20*x,意为x被1020乘,结果为:

    y=

             1.0e+020*

    1.3333             0.0000

    “+”格式是显示大矩阵的一种紧凑方法,“+”,“-”和空格显示正数、负数和零元素.

    最后format compact命令压缩显示的矩阵,以允许更多的信息显示在屏幕上.

    §1.2.8 Help求助命令和联机帮助

    Help求助命令很有用,它对Matlab大部分命令提供了联机求助信息.您可以从Help菜单中选择相应的菜单,打开求助信息窗口查询某条命令,也可以直接用help命令.

    键入help

    得到help列表文件,键入“help 指定项目”,如:

    键入help eig

    则提供特征值函数的使用信息.

    键入help [

    显示如何使用方括号等.

    键入help help

    显示如何利用help本身的功能.

    还有,键入lookfor  <关键字>:可以从m文件的help中查找有关的关键字

    §1.2.9 退出和存入工作空间

    退出Matlab可键入quit或exit或选择相应的菜单.中止Matlab运行会引起工作空间中变量的丢失,因此在退出前,应键入save命令,保存工作空间中的变量以便以后使用.

    键入 save

    则将所有变量作为文件存入磁盘Matlab.mat中,下次Matlab启动时,

    键入load

    将变量从Matlab.mat中重新调出.

    save和load后边可以跟文件名或指定的变量名,如仅有save时,则只能存入Matlab.mat中.如save temp命令,则将当前系统中的变量存入temp.mat中去,命令格式为:

    savetemp x 仅仅存入x变量.

    savetemp X Y Z 则存入X、Y、Z变量.

    load  temp可重新从temp.mat文件中提出变量,load也可读ASCII数据文件.详细语法见联机帮助.

    第二节 向量与矩阵运算

    Matlab能处理数、向量和矩阵.但一个数事实上是一个1×1的矩阵,1个n维向量也不过是一个1×n或n×1的矩阵.从这个角度上来讲,Matlab处理的所有的数据都是矩阵.Matlab的矩阵处理能力是非常灵活、强大的.以下我们将从矩阵的产生、基本运算、矩阵函数等几个方面来说明.

    §2.1向量及矩阵的生成

    除了我们在上节介绍的直接列出矩阵元素的输入方法,矩阵还可以通过几种不同的方式输入到Matlab中.

    §2.1.1 通过语句和函数产生

    1. 向量的产生

    除了直接列出向量元素(即所谓的“穷举法”)外,最常用的用来产生相同增量的向量的方法是利用“:”算符(即所谓的“描述法”).在Matlab中,它是一个很重要的字符.如:

    z=1:5

    z =

         1    2     3    4     5

    即产生一个1~5的单位增量是1的行向量,此为默认情况.

    用“:”号也可以产生单位增量不等于1的行向量,语法是把增量放在起始量和结尾量的中间.如:

    x=0:pi/4:pi

    即产生一个由0~pi的行向量,单位增量是pi/4=3.1416/4=0.7854.

    x =

     0     0.7854           1.5708           2.3562           3.1416

    也可以产生单位增量为负数的行向量.如:

    y=6:-1:1

    y =

         6    5     4     3    2     1

    2. 矩阵的产生

    Matlab提供了一批产生矩阵的函数:

    zeros

    产生一个零矩阵

    diag

    产生一个对角矩阵

    ones

    生成全1矩阵

    tril

    取一个矩阵的下三角

    eye

    生成单位矩阵

    triu

    取一个矩阵的上三角

    magic

    生成魔术方阵

    pascal

    生成PASCAL矩阵

    例如:

    ones(3)

    ans =

     1    1     1

     1    1     1

     1    1     1

    eye(3)

    ans =

     1    0     0

     0    1     0

     0    0     1

    除了以上产生标准矩阵的函数外,Matlab还提供了产生随机(向量)矩阵的函数rand和randn,及产生均匀级数的函数linspace、产生对数级数的函数logspace和产生网格的函数meshgrid等等.详细使用请查阅随机文档.

    “ : ”冒号可以用来产生简易的表格,为了产生纵向表格形式,首先用冒号“ : ”产生行向量,再进行转置,计算函数值的列,然后形成有二列的矩阵.例如命令:

    x=(0.0:0.2:3.0)';

    y=exp(-x).*sin(x);

    [x y]

    产生结果为:

    ans =

    0             0

    0.2000      0.1627

    0.4000      0.2610

    0.6000      0.3099

    0.8000      0.3223

    1.0000      0.3096

    1.2000      0.2807

    1.4000      0.2430

    1.6000      0.2018

    1.8000      0.1610

    2.0000      0.1231

    2.2000      0.0896

    2.4000      0.0613

    2.6000      0.0383

    2.8000      0.0204

    3.0000      0.0070

    §2.1.2 通过后缀为.m的命令文件产生

    如有文件data.m,其中包括正文:

    A=[  1 2 3

    4 5 6

    7 8 0]

    则用data命令执行data.m,可以产生名为A的矩阵.

    §2.2 矩阵操作

    Matlab中可以对矩阵进行任意操作,包括改变它的形式,取出子矩阵,扩充矩阵,旋转矩阵等.其中最重要的操作符为“:”, 它的作用是取出选定的行与列.

    例如:

    A(:,:) 代表A的所有元素;试比较A(:),将A按列的方向拉成长长的1列(向量);

    A(:,J) 代表A的第J列;

    A(J:K) 代表 A(J), A(J+1), …, A(K),如同A(:)的第J到第K个元素;

    A(:,J:K) 代表A(:,J), A(:,J+1), …, A(:,K),如此类推.

    对矩阵可以进行各种各样的旋转、变形、扩充:

     

    矩阵的转置用符号“ ' ”表示:

    如A=[1  2  3;  4  5  6 ;  7  8  0]

    那么:计算B=A'

    B =

     1    4     7

     2    5     8

     3    6     0

    符号“ ' ”为矩阵的转置,如果Z为复矩阵,则Z'为它的复数共轭转置,非共轭转置使用Z.' 或conj(Z')求得.

    reshape改变矩阵的形状,这是什么意思呢?可举一个例子来说明.

    A=[A;[10 11 12]]

    A =

     1    2     3

     4    5     6

     7    8     0

     10 11   12

    reshape(A,2,6)

    ans =

     1    7     2     8    3     0

     4    10   5     11   6     12

    可见,reshape 是将矩阵元素以列为单位进行重组,原来4×3的矩阵变为了2×6的矩阵.

    第三节 矩阵的基本运算

    §3.1 加和减

    如矩阵A和B的维数相同,则A+B与A-B表示矩阵A与B的和与差.如果矩阵A和B的维数不匹配,Matlab会给出相应的错误提示信息.如:

    A=                                B=

    1     2     3                   1     4     7

    4     5     6                   2     5     8

    7     8     0                   3     6     0

    C =A+B返回:

    C =

        2     6    10

        6    10    14

       10    14     0

    如果运算对象是个标量(即1×1矩阵),可和其它矩阵进行加减运算.例如:

    x=    -1                  y=x-1=    -2

    0                                 -1

    2                                 1

    §3.2矩阵乘法

    Matlab中的矩阵乘法有通常意义上的矩阵乘法,也有Kronecker乘法,以下分别介绍.

    §3.2.1 矩阵的普通乘法

    矩阵乘法用“ * ”符号表示,当A矩阵列数与B矩阵的行数相等时,二者可以进行乘法运算,否则是错误的.计算方法和线性代数中所介绍的完全相同.

    如:A=[1  2 ; 3  4]; B=[5  6 ; 7  8];  C=A*B,

    结果为

    C= × = =

    Matlab返回:

    C =

        19   22

        43   50

    如果A或B是标量,则A*B返回标量A(或B)乘上矩阵B(或A)的每一个元素所得的矩阵.

    §3.3 矩阵除法

    Matlab中有两种矩阵除法符号:“\”即左除和“/”即右除.如果A矩阵是非奇异方阵,则A\B是A的逆矩阵乘B,即inv(A)*B;而B/A是B乘A的逆矩阵,即B*inv(A).具体计算时可不用逆矩阵而直接计算.

    通常:

    x=A\B就是A*x=B的解;

    x=B/A就是x*A=B的解.

    当B与A矩阵行数相等可进行左除.如果A是方阵,用高斯消元法分解因数.解方程:A*x(:, j)=B(:, j),式中的(:, j)表示B矩阵的第j列,返回的结果x具有与B矩阵相同的阶数,如果A是奇异矩阵将给出警告信息.

    如果A矩阵不是方阵,可由以列为基准的Householder正交分解法分解,这种分解法可以解决在最小二乘法中的欠定方程或超定方程,结果是m×n的x矩阵.m是A矩阵的列数,n是B矩阵的列数.每个矩阵的列向量最多有k个非零元素,k 是A的有效秩.

    右除B/A可由B/A=(A'\B')'左除来实现.

    §3.4矩阵乘方

    A^P意思是A的P次方.如果A是一个方阵,P是一个大于1的整数,则A^P表示A的P次幂,即A自乘P次.如果P不是整数,计算涉及到特征值和特征向量的问题,如已经求得:[V,D]=eig(A),则:

    A^P=V*D.^P/V(注:这里的.^表示数组乘方,或点乘方,参见后面的有关介绍)

    如果B是方阵, a是标量,a^B就是一个按特征值与特征向量的升幂排列的B次方程阵. 如果a和B都是矩阵,则a^B是错误的.

    §3.5 矩阵的超越函数

    Matlab中解释exp(A)和sqrt(A)时曾涉及到级数运算,此运算定义在A的单个元素上. Matlab可以计算矩阵的超越函数,如矩阵指数、矩阵对数等.

    一个超越函数可以作为矩阵函数来解释,例如将“m”加在函数名的后边而成expm(A)和sqrtm(A),当Matlab运行时,有下列三种函数定义:

    expm           矩阵指数

    logm        矩阵对数

    sqrtm           矩阵开方

    所列各项可以加在多种m文件中或使用funm.请见应用库中sqrtm.m,1ogm.m,funm.m文件和命令手册.

    §3.6数组运算

    数组运算由线性代数的矩阵运算符“*”、“/”、“\”、“^”前加一点来表示,即为“.*”、“./”、“.\”、“.^”.注意没有“.+”、“.-”运算.

    §3.6.1数组的加和减

    对于数组的加和减运算与矩阵运算相同,所以“+”、“-”既可被矩阵接受又可被数组接受.

    §3.6.2数组的乘和除

    数组的乘用符号.*表示,如果A与B矩阵具有相同阶数,则A.*B表示A和B单个元素之间的对应相乘.例如x=[1  2  3]; y=[ 4  5  6];

    计算z=x.*y

    结果z=4  10  18

    数组的左除(.\)与数组的右除(./),由读者自行举例加以体会.

    §3.6.3 数组乘方

    数组乘方用符号.^表示.

    例如:键入:

    x=[ 1  2  3]

    y=[ 4  5  6]

    则z=x.^y=[1^4  2^5  3^6]=[1  32  729]

    (1) 如指数是个标量,例如x.^2,x同上,则:

    z=x.^2=[1^2  2^2  3^2]=[ 1  4  9]

    (2) 如底是标量,例如2 .^[x y] ,x、y同上,则:

    z=2 .^[x y]=[2^1  2^2  2^3  2^4 2^5  2^6]=[2  4  8  16  32  64]

    从此例可以看出Matlab算法的微妙特性,虽然看上去与其它乘方没什么不同,但在2和“.”之间的空格很重要,如果不这样做,解释程序会把“.”看成是2的小数点. Matlab看到符号“^”时,就会当做矩阵的幂来运算,这种情况就会出错,因为指数矩阵不是方阵.

    §3.7 矩阵函数

    Matlab的数学能力大部分是从它的矩阵函数派生出来的,其中一部分装入Matlab本身处理中,它从外部的Matlab建立的M文件库中得到,还有一些由个别的用户为其自己的特殊的用途加进去的.其它功能函数在求助程序或命令手册中都可找到.手册中备有为Matlab提供数学基础的LINPACK和EISPACK软件包,提供了下面四种情况的分解函数或变换函数:

    (1)三角分解;(2)正交变换;(3) 特征值变换;(4)奇异值分解.

    §3.7.1三角分解

    最基本的分解为“LU”分解,矩阵分解为两个基本三角矩阵形成的方阵,三角矩阵有上三角矩阵和下三角矩阵.计算算法用高斯变量消去法.

    从lu函数中可以得到分解出的上三角与下三角矩阵,函数inv得到矩阵的逆矩阵,det得到矩阵的行列式.解线性方程组的结果由方阵的“\”和“/”矩阵除法来得到.

    例如:

    A=[ 1      2     3

    4      5     6

    7      8     0]

    LU分解,用Matlab的多重赋值语句

    [L,U]=lu(A)

    得出

    L =

    0.1429

    1.0000

    0

    0.5714

    0.5000

    1.0000

    1.0000

    0

    0

    U =

    7.0000

    8.0000

    0

    0

    0.8571

    3.0000

    0

    0

    4.5000

    注:L是下三角矩阵的置换,U是上三角矩阵的正交变换,分解作如下运算,检测计算结果只需计算L*U即可.

    求逆由下式给出: x=inv(A)

    x =

    -1.7778

    0.8889

    -0.1111

    1.5556

    -0.7778

    0.2222

    -0.1111

    0.2222

    -0.1111

    从LU分解得到的行列式的值是精确的,d=det(U)*det(L)的值可由下式给出:

    d=det(A)

    d =

    27

    直接由三角分解计算行列式:d=det(L)*det(U)

    d =

    27.0000

    为什么两种d的显示格式不一样呢? 当Matlab做det(A)运算时,所有A的元素都是整数,所以结果为整数.但是用LU分解计算d时,L、U的元素是实数,所以Matlab产生的d也是实数.

    例如:线性联立方程取 b=[ 1

                                               3

                                               5]

    解Ax=b方程,用Matlab矩阵除得到

    x=A\b

    结果x=

    0.3333

    0.3333

    0.0000

    由于A=L*U,所以x也可以有以下两个式子计算:y=L\b,x=U\y.得到相同的x值,中间值y为:

    y =

    5.0000

    0.2857

    0.0000

    Matlab中与此相关的函数还有rcond、chol和rref.其基本算法与LU分解密切相关.chol函数对正定矩阵进行Cholesky分解,产生一个上三角矩阵,以使R'*R=X.rref用具有部分主元的高斯-约当消去法产生矩阵A的化简梯形形式.虽然计算量很少,但它是很有趣的理论线性代数.为了教学的要求,也包括在Matlab中.

    §3.7.2正交变换

    “QR”分解用于矩阵的正交-三角分解.它将矩阵分解为实正交矩阵或复酉矩阵与上三角矩阵的积,对方阵和长方阵都很有用.

    例如A=[  1     2     3

    4     5     6

    7     8     9

    10    11    12]

    是一个降秩矩阵,中间列是其它二列的平均,我们对它进行QR分解:

    [Q,R]=qr(A)

    Q =

    -0.0776

    -0.8331

    0.5444

    0.0605

    -0.3105

    -0.4512

    -0.7709

    0.3251

    -0.5433

    -0.0694

    -0.0913

    -0.8317

    -0.7762

    0.3124

    0.3178

    0.4461

    R =

    -12.8841

    -14.5916

    -16.2992

    0

    -1.0413

    -2.0826

    0

    0

    0.0000

    0

    0

    0

    可以验证Q*R就是原来的A矩阵.由R的下三角都给出0,并且R(3,3)=0.0000,说明矩阵R与原来矩阵A都不是满秩的.

    下面尝试利用QR分解来求超定和降秩的线性方程组的解.

    例如:

    b=[ 1

    3

    5

    7]

    讨论线性方程组Ax=b,我们可以知道方程组是超定的,采用最小二乘法的最好结果是计算x=A\b

    结果为:

    Warning: Rank deficient, rank = 2 tol =   1.4594e-014

    x =

        0.5000

             0

        0.1667

    我们得到了缺秩的警告.用QR分解法计算此方程组分二个步骤:

    y=Q'*b

    x=R\y

    求出的y值为

    y =

    -9.1586

    -0.3471

    0.0000

    0.0000

    x的结果为

    Warning: Rank deficient, rank = 2 tol =   1.4594e-014

    x =

        0.5000

             0

        0.1667

    用A*x来验证计算结果,我们会发现在允许的误差范围内结果等于b.这告诉我们虽然联立方程Ax=b是超定和降秩的,但两种求解方法的结果是一致的.显然x向量的解有无穷多个,而“QR”分解仅仅找出了其中之一.

    §3.7.3奇异值分解

    Matlab中三重赋值语句

    [U,S,V]=svd(A)

    在奇异值分解中产生三个因数:

    A=U*S*V '

    U矩阵和V矩阵是正交矩阵,S矩阵是对角矩阵,svd(A)函数恰好返回S的对角元素,而且就是A的奇异值(其定义为:矩阵A'*A的特征值的算术平方根).注意到A矩阵可以不是方的矩阵.

    奇异值分解可被其它几种函数使用,包括广义逆矩阵pinv(A)、秩rank(A)、欧几里德矩阵范数norm(A,2)和条件数cond(A).

    §3.7.4 特征值分解

    如果A是n×n矩阵,若l满足Ax=lx,则称l为A的特征值,x为相应的特征向量.

    函数eig(A)返回特征值列向量,如果A是实对称的,特征值为实数.特征值也可能为复数,例如:

    A=[  0     1

    -1     0]

    eig(A)

    产生结果

    ans =

    0 + 1.0000i

    0 - 1.0000i

    如果还要求求出特征向量,则可以用eig(A)函数的第二个返回值得到:

    [x,D]=eig(A)

    D的对角元素是特征值.x的列是相应的特征向量,以使A*x=x*D.

    计算特征值的中间结果有两种形式:

    Hessenberg形式为hess(A),Schur形式为schur(A).

    schur形式用来计算矩阵的超越函数,诸如sqrtm(A)和logm(A).

    如果A和B是方阵,函数eig(A,B)返回一个包含一般特征值的向量来解方程

    Ax=lBx

    双赋值获得特征向量

    [X,D]=eig(A,B)

    产生特征值为对角矩阵D.满秩矩阵X的列相应于特征向量,使A*X=B*X*D,中间结果由qz(A,B)提供.

    §3.7.5秩

    Matlab计算矩阵A的秩的函数为rank(A),与秩的计算相关的函数还有:rref(A)、orth(A)、null(A)和广义逆矩阵pinv(A)等.

    利用rref(A),A的秩为非0行的个数.rref方法是几个定秩算法中最快的一个,但结果上并不可靠和完善.pinv(A)是基于奇异值的算法.该算法消耗时间多,但比较可靠.其它函数的详细用法可利用Help求助.

    第四节 Matlab中的图形

    §4.1 二维作图

    绘图命令plot绘制x-y坐标图;polor命令绘制极坐标图.

    §4.1.1 基本形式

    如果y是一个向量,那么plot(y)绘制一个y中元素的线性图.假设我们希望画出

    y=[0., 0.48,  0.84,  1., 0.91,  6.14 ]

    则用命令:plot(y)

    它相当于命令:plot(x, y),其中x=[1,2,…,n]或x=[1;2;…;n],即向量y的下标编号, n为向量y的长度

    Matlab会产生一个图形窗口,显示如下图形,请注意:坐标x和y 是由计算机自动绘出的.

    图4.1.1.1plot([0.,0.48,0.84,1.,0.91,6.14])

     

    上面的图形没有加上x轴和y轴的标注,也没有标题.用xlabel,ylabel,title命令可以加上.

    如果x,y是同样长度的向量,plot(x,y)命令可画出相应的x元素与y元素的x-y坐标图.例:

    x=0:0.05:4*pi;  y=sin(x);  plot(x,y)

    grid on, title(' y=sin( x ) 曲线图' )

    xlabel(' x = 0 : 0.05 : 4Pi ')

    结果见下图.

    图4.1.1.2 y=sin(x)的图形

     

    title

    图形标题

    xlabel

    x坐标轴标注

    ylabel

    y坐标轴标注

    text

    标注数据点

    grid

    给图形加上网格

    hold

    保持图形窗口的图形

    表4.1.1.1 Matlab图形命令

    §4.1.2 多重线

    在一个单线图上,绘制多重线有三种办法.

    第一种方法是利用plot的多变量方式绘制:

    plot(x1,y1,x2,y2,...,xn,yn)

    x1,y1,x2,y2,...,xn,yn是成对的向量,每一对x, y在图上产生如上方式的单线.多变量方式绘图是允许不同长度的向量显示在同一图形上.

    第二种方法也是利用plot绘制,但加上hold on/off命令的配合:

    plot(x1,y1)

    hold on

    plot(x2,y2)

    hold off

    第三种方法还是利用plot绘制,但代入矩阵:

    如果plot用于两个变量plot(x,y),并且xy是矩阵,则有以下情况:

    1)如果y是矩阵,x是向量,plot(x,y)用不同的画线形式绘出y的行或列及相应的x向量,y的行或列的方向与x向量元素的值选择是相同的.

    2)如果x是矩阵,y是向量,则除了x向量的线族及相应的y向量外,以上的规则也适用.

    3)如果xy是同样大小的矩阵,plot(x,y)绘制x的列及y相应的列.

    还有其它一些情况,请参见Matlab的帮助系统.

    §4.1.3 线型和颜色的控制

    如果不指定划线方式和颜色,Matlab会自动为您选择点的表示方式及颜色.您也可以用不同的符号指定不同的曲线绘制方式.例如:

    plot(x,y,'*')                    用'*'作为点绘制的图形.

    plot(x1,y1,':',x2,y2,'+')    用':'画第一条线,用'+'画第二条线.

    线型、点标记和颜色的取值有以下几种:

    线型

    点标记

    颜色

    -

    实线

    .

    y

    :

    虚线

    o

    小圆圈

    m

    棕色

    -.

    点划线

    x

    叉子符

    c

    青色

    --

    间断线

    +

    加号

    r

    红色

     

     

    *

    星号

    g

    绿色

     

     

    s

    方格

    b

    蓝色

     

     

    d

    菱形

    w

    白色

     

     

    ^

    朝上三角

    k

    黑色

     

     

    v

    朝下三角

     

     

     

     

    朝右三角

     

     

     

     

    朝左三角

     

     

     

     

    p

    五角星

     

     

     

     

    h

    六角星

     

     

    表4.1.3.1线型和颜色控制符

    如果你的计算机系统不支持彩色显示,Matlab将把颜色符号解释为线型符号,用不同的线型表示不同的颜色.颜色与线型也可以一起给出,即同时指定曲线的颜色和线型.

    例如:     t=-3.14:0.2:3.14;

    x=sin(t);  y=cos(t);

    plot(t,x, '+r',t,y, '-b')

    图4.1.3.1不同线型、颜色的sin,cos图形

     

    §4.1.4对数图、极坐标图及条形图

     

     

    例6:极坐标绘图

    t=0:0.01:2*pi;

    polar(t,sin(6*t))   %% (图4.1.4.3)

        

                 图4.1.4.3 极坐标绘图         图4.1.4.4正态分布的统计直方图与其正态分布拟合曲线

     

    例7:正态分布图

    我们可以用命令normrnd生成符合正态分布的随机数.

    normrnd(u,v,m,n)

    其中,u表示生成随机数的期望,v代表随机数的方差.

    运行:

    a=normrnd(10,2,10000,1);

    histfit(a)   %% (图4.1.4.4)

    我们可以得到正态分布的统计直方图与其正态分布拟合曲线.

     

    例8:比较正态分布(图4.1.4.5(1))与平均分布(图4.1.4.5(2))的分布图:

    yn=randn(30000,1);    %% 正态分布

    x=min(yn): 0.2 : max(yn);

    subplot(121)

    hist(yn,x)

    yu=rand(30000,1);     %% 平均分布

    subplot(122)

    hist(yu,25)

    4.1.4.5(1)                          4.1.4.5(2)

     

    图4.1.4.5 正态分布与平均分布的分布图

    §4.1.5 子图

    在绘图过程中,经常要把几个图形在同一个图形窗口中表现出来,而不是简单地叠加(例如上面的例8).这就用到函数subplot.其调用格式如下:

    subplot(m,n,p)

    subplot函数把一个图形窗口分割成m×n个子区域,用户可以通过参数p调用个各子绘图区域进行操作.子绘图区域的编号为按行从左至右编号.

     

    例9:绘制子图

    x=0:0.1*pi:2*pi;

    subplot(2,2,1)

    plot(x,sin(x),'-*');

    title('sin(x)');

    subplot(2,2,2)

    plot(x,cos(x),'--o');

    title('cos(x)');

    subplot(2,2,3)

    plot(x,sin(2*x),'-.*');

    title('sin(2x)');

    subplot(2,2,4);

    plot(x,cos(3*x),':d')

    title('cos(3x)')

    得到图形如下:

    图4.1.5.1子图

    §4.1.6 填充图

    利用二维绘图函数patch,我们可绘制填充图.绘制填充图的另一个函数为fill.

    下面的例子绘出了函数humps(一个Matlab演示函数)在指定区域内的函数图形.

    例10:用函数patch绘制填充图

    fplot('humps',[0,2],'b')

    hold on

    patch([0.5 0.5:0.02:1 1],[0humps(0.5:0.02:1) 0],'r');

    hold off

    title('A region under an interesting function.')

    grid

    图4.1.6.1填充图

     

    我们还可以用函数fill来绘制类似的填充图.

    例11:用函数fill绘制填充图

    x=0:pi/60:2*pi;

    y=sin(x);

    x1=0:pi/60:1;

    y1=sin(x1);

    plot(x,y,'r');

    hold on

    fill([x1 1],[y10],'g')

    图4.1.6.2填充图

    §4.2 三维作图

    §4.2.1 mesh(Z)语句

    mesh(Z)语句可以给出矩阵Z元素的三维消隐图,网络表面由Z坐标点定义,与前面叙述的x-y平面的线格相同,图形由邻近的点连接而成.它可用来显示用其它方式难以输出的包含大量数据的大型矩阵,也可用来绘制Z变量函数.

    显示两变量的函数Z=f(x,y),第一步需产生特定的行和列的x-y矩阵.然后计算函数在各网格点上的值.最后用mesh函数输出.

    下面我们绘制sin(r)/r函数的图形.建立图形用以下方法:

    x=-8:.5:8;

    y=x';

    x=ones(size(y))*x;

    y=y*ones(size(y))';

    R=sqrt(x.^2+y.^2)+eps;

    z=sin(R)./R;

    mesh(z)       %%  试运行mesh(x,y,z),看看与mesh(z)有什么不同之处?

    各语句的意义是:首先建立行向量x,列向量y;然后按向量的长度建立1-矩阵;用向量乘以产生的1-矩阵,生成网格矩阵,它们的值对应于x-y坐标平面;接下来计算各网格点的半径;最后计算函数值矩阵Z.用mesh函数即可以得到图形.

    图4.2.1三维消隐图

    第一条语句x的赋值为定义域,在其上估计函数;第三条语句建立一个重复行的x矩阵,第四条语句产生y的响应,第五条语句产生矩阵R(其元素为各网格点到原点的距离).用mesh方法结果如上.

    另外,上述命令系列中的前4行可用以下一条命令替代:

    [x, y]=meshgrid(-8:0.5:8)

    §4.2.2与mesh相关的几个函数

    (1) meshc与函数mesh的调用方式相同,只是该函数在mesh的基础上又增加了绘制相应等高线的功能.下面来看一个meshc的例子:

    [x,y]=meshgrid([-4:.5:4]);

    z=sqrt(x.^2+y.^2);

    meshc(z)       %% 试运行 meshc(x,y,z),看看与meshc(z)有什么不同之处?

    我们可以得到图形:

    图4.2.2.1  meshc 图

     

    地面上的圆圈就是上面图形的等高线.

    (2) 函数meshz与mesh的调用方式也相同,不同的是该函数在mesh函数的作用之上增加了屏蔽作用,即增加了边界面屏蔽.例如:

    [x,y]=meshgrid([-4:.5:4]);

    z=sqrt(x.^2+y.^2);

    meshz(z)       %% 试运行 meshz(x,y,z),看看与meshz(z)有什么不同之处?

    我们得到图形:

    图4.2.2.2  meshz 图

     

    §4.2.3 其它的几个三维绘图函数

    (1) 在Matlab中有一个专门绘制圆球体的函数sphere,其调用格式如下:

    [x,y,z]=sphere(n) 

    此函数生成三个(n+1)×(n+1)阶的矩阵,再利用函数surf(x,y,z)可生成单位球面.

    [x,y,z]=sphere   此形式使用了默认值n=20

    sphere(n)   只绘制球面图,不返回值.

    运行下面程序:

    sphere(30);

    axis square;

    我们得到球体图形:

    图4.2.3.1  球面图

     

    若只输入sphere画图,则是默认了n=20的情况.

     

    (2) surf函数也是Matlab中常用的三维绘图函数.其调用格式如下:

    surf(x,y,z,c)

    输入参数的设置与mesh相同,不同的是mesh函数绘制的是一网格图,而surf绘制的是着色的三维表面.Matlab语言对表面进行着色的方法是,在得到相应网格后,对每一网格依据该网格所代表的节点的色值(由变量c控制),来定义这一网格的颜色.若不输入c,则默认为c=z.

    我们看下面的例子:

    %绘制地球表面的气温分布示意图.

    [a,b,c]=sphere(40);

    t=abs(c);    %求绝对值

    surf(a,b,c,t);

    axis equal

    colormap('hot')

    我们可以得到图形如下:

    图4.2.3.2  等温线示意图

     

     

    §4.2.4图形的控制与修饰

    (1) 坐标轴的控制函数axis,调用格式如下:

    axis([xmin,xmax,ymin,ymax,zmin,zmax])

    用此命令可以控制坐标轴的范围.

    与axis相关的几条常用命令还有:

    axis auto                自动模式,使得图形的坐标范围满足图中一切图元素

    axis equal                     严格控制各坐标的分度使其相等

    axis square             使绘图区为正方形

    axis on                  恢复对坐标轴的一切设置

    axis off                 取消对坐标轴的一切设置

    axis manual           以当前的坐标限制图形的绘制

     

    (2)grid on  在图形中绘制坐标网格.

    grid off  取消坐标网格.

     

    (3)xlabel,ylabel, zlabel分别为x轴, y轴, z轴添加标注.title为图形添加标题.

    以上函数的调用格式大同小异,我们以xlabel为例进行介绍:

    xlabel('标注文本','属性1','属性值1','属性2','属性值2',…)

    这里的属性是标注文本的属性,包括字体大小、字体名、字体粗细等.

     

    例如:

    [x, y]=meshgrid(-4:.2:4);

    R=sqrt(x.^2+y.^2);

    z=-cos(R);

    mesh(x,y,z)

    xlabel('x\in[-4,4]','fontweight','bold');

    ylabel('y\in[-4,4]','fontweight','bold');

    zlabel('z=-cos(sqrt(x^2+y^2))','fontweight','bold');

    title('旋转曲面','fontsize',15,'fontweight','bold','fontname','隶书');

     

     

    图4.2.4.1 添加标注

     

    以上各种绘图方法的详细用法,请看联机信息.

    §4.3 统计回归图

    对平面上n个点:

    在平面直线族{ 为实数}中寻求一条直线 ,使得散点到与散点相对应的在直线上的点之间的纵坐标的误差的平方和最小,用微积分的方法可得:

     

    所求得的这条直线: 称为回归直线.

    例:已知如下点列,求其回归直线,并计算最小误差平方和.

    x

    0.1

    0.11

    .12

    .13

    .14

    .15

    .16

    .17

    .18

    .2

    .21

    .23

    y

    42

    43.5

    45

    45.5

    45

    47.5

    49

    53

    50

    55

    55

    60

    参考的程序如下:

    x=[0.10.11 .12 .13 .14 .15 .16 .17 .18 .2.21 .23];

    y=[4243.5 45 45.5 45 47.5 49 53 50 55 55 60];

    n=length(x);

    xb=mean(x);  

    yb=mean(y);

    x2b=sum(x.^2)/n;

    xyb=x*y'/n;

    b=(xb*yb-xyb)/(xb^2-x2b);

    a=yb-b*xb;

    y1=a+b.*x;

    plot(x,y,'*',x,y1);

    serror=sum((y-y1).^2)

     

     

    图4.3.1回归直线

    第五节 Matlab编程

    §5.1关系运算

    §5.1.1 比较运算

    比较两个同阶矩阵有下面六种相关操作符:

    相关操作符

    小于

    <=

    小于等于

    大于

    >=

    大于等于

    ==

    等于

    ~=

    不等于

    表5.1.1.1相关操作符

    比较两个元素的大小,结果是“1”表明为真,结果是“0”表明为假.

    例如2+2~=4

    结果是“0”,表明为假.

    例如一个6阶魔术方阵,矩阵元素计算满足各种条件:

    A=magic(6)

    ans =

        35    1     6    26   19    24

         3   32     7    21   23    25

        31    9     2    22   27    20

         8   28    33    17   10    15

        30    5    34    12   14    16

         4   36    29    13   18    11

    阶数为n的魔术方阵,即n×n矩阵,是由1~n2的整数组成(n=6).仔细观察这个矩阵,我们会发现任何行和、任何列和都相等.另外,每个3×3子行列式的对角线元素和,都可被3整除.为了显示这一特性,键入:

    p=(rem(A,3)==0)

    p =

         0    0     1     0    0     1

         1    0     0     1    0     0

         0    1     0     0    1     0

         0    0     1     0    0     1

         1    0     0     1    0     0

         0    1     0     0    1     0

    为了再仔细地观察这个模式,可以用format+格式画出矩阵的压缩格式.此格式用“+”代表正元素,“-”代表负元素,空格代表0.

    format+

    p =

      +  +

    +  + 

     +  +

      +  +

    +  + 

     +  +

    find 函数在关系运算中很有用,它可以在0-1矩阵中找非零元素的下标.

    若y是一个向量,例如:y=[1   3   2   4   3.5   2.9],则find(y<3.0),将指出y的分量在哪些位置上小于3.0.

    ans=     1     3    6

    即:向量y的第1、3、6位置上的元素小于3.0.

    当输入x==NaN时结果为NaN,因为按照IEEE算法规定任何具有NaN的操作,结果都是NaN.调试NaN很有用,例如测试x,输入isnan(x)函数,如果x元素是不定值则得1,否则得0.isfinite(x)更有用,如-¥<x<¥时则得1.

    §5.1.2逻辑运算

    &

    |

    ~

    表5.1.2.1逻辑运算符

     

    “&”和“|”操作符可比较两个标量或两个同阶矩阵.对于矩阵来说必须符合规则,如果A和B都是0-1矩阵,则A&B或A|B也都是0-1矩阵,这个0-1矩阵的元素是A和B对应元素之间逻辑运算的结果,逻辑操作符认定任何非零元素都为真,给出“1”,任何零元素都为假,给出“0”.

    非(或逻辑非)是一元操作符,即~A:当A是非零时结果为“0”;当A为“0”时,结果为“1”.因此下列两种表示:

    p |(~p)             结果为1.

    p & (~p)          结果为0.

    any和all函数在连接操作时很有用,设x是0-1向量,如果x中任意有一元素非零时,any(x)返回“1”,否则返回“0”;all(x)函数当x的所有元素非零时,返回“1”,否则也返回“0”.这些函数在if语句中经常被用到.如:

    ifall(A<5)

    do something

    end

    §5.2控制流

    Matlab与其它计算机语言一样,也有控制流语句.控制流语句可使原本简单地在命令行中运行的一系列命令或函数,组合成为一个整体——程序,从而提高工作效率.

    §5.2.1 for 循环

    Matlab与其它计算机语言一样有do或for循环,完成一个语句或一组语句在一定时间内反复运行的功能.例如:

    for  i = 1:n ,  x( i )=0,  end

    x的第一个元素赋0值,如果n<1,结构上合法,但内部语句不运行,如果x不存在或比n元素小,额外的空间将会自动分配.

    多重循环写成锯齿形是为了增加可读性.例如:

    m=9;n=9;

    for i= 1:m

    for j=1:n

                   A( i, j ) = 1/( i + j - 1);

    end

    end

    A

    程序的说明:

    (1)事实上,上述程序给出了Hilbert矩阵的构造过程,可参见函数hilb(n).

    (2)语句内部使用分号,表示计算过程不输出中间结果.

    (3)循环后的A命令表示显示矩阵A的结果.

    (4)每个for语句必须以end语句结束,否则是错误的.

    for循环的通用形式为:

    for v=expression

    statements

    end

    其中expression表达式是一个矩阵,因为Matlab中都是矩阵,矩阵的列被一个接一个的赋值到变量v,然后statements语句运行.

    通常expression是一些m:n或m:k:n仅有一行的矩阵,并且它的列是个简单的标量.但如注意到expression可以为矩阵,即v可以为向量,对某些问题的处理将大大简化.

    §5.2.2  while 循环

    Matlab中的while 循环语句为一个语句或一组语句在一个逻辑条件的控制下重复未知的次数.

    它的一般形式为:

    while  expression

    statements

    end

    当expression的所有运算为非零值时,statements语句组将被执行.如果判断条件是向量或矩阵的话,可能需要all或any函数作为判断条件.

    例如计算expm(A),在A并不是太大时,直接计算expm(A)是可行的.

    expm(A)=I+A+A^2/2!+A^3/3!+…   注意:这里的I表示单位矩阵.

    程序为:

    E = 0*A; F = E + eye(size(E)); N = 1;

    while norm(F,1) > 0,

    F = A*F/N;

    E = E + F;

    N = N + 1;

    end

    §5.2.3 if和break语句

    下面介绍if语句的二个例子.

    (1) 一个计算如何被分成三个部分,用符号校验:

    if n<0

    A=negative(n)

    elseif mod(n,2)==0

    A=even(n)

    else

    A=odd(n)

    end

    其中的三个函数negative(n)、even(n)、odd(n)是自编的输出函数.参见下面的函数文件.

     

    (2) 这个例子涉及数论中一个很有趣的问题,取任何的正整数,如果是偶数,用2除;如果是奇数,用3乘,并加上1,反复这个过程,直到你的整数成为1.这个极有趣不可解的问题是:有使这个过程不中止的整数吗?

    %classic "3n+1"problem from number theory

    while 1

    n=input('Enter n, negative quits:');

    if n<=0 break,end

            while n>1

                   if rem(n,2) == 0  %% 是连续的2个等号

                          n=n/2

                   else

                          n=3*n+1

                   end;

            end

    end

    这个过程能永远进行吗?

    程序的说明:

    (1)本程序用到了if语句与while语句,过程比较复杂;

    (2)使用input函数,可使程序在执行过程中,从键盘输入一个数(矩阵);

    (3)break语句提供了程序跳出死循环的途径.

    §5.3 M文件、命令文件及函数文件

    §5.3.1 M文件

    Matlab通常使用命令驱动方式,当单行命令输入时,Matlab立即处理并显示结果,同时将运行说明或命令存入文件.

    Matlab语句的磁盘文件称作M文件,因为这些文件名的未尾是.M形式,例如一个文件名为bessel.m,提供bessel函数语句.

    一个M文件包含一系列的Matlab语句,一个M文件可以循环地调用它自己.

    M文件有两种类型:

    第一类型的M文件称为命令文件,它是一系列命令、语句的简单组合.

    第二类型的M文件称为函数文件,它提供了Matlab的外部函数.用户为解决一个特定问题而编写的大量的外部函数可放在Matlab工具箱中,这样的一组外部函数形成一个专用的软件包.

    这两种形式的M文件,无论是命令文件,还是函数文件,都是普通的ASCII文本文件,可选择编辑或字处理文件来建立.

    §5.3.2命令文件

    当一个命令文件被调用时,Matlab运行文件中出现的命令而不是交互地等待键盘输入,命令文件的语句在工作空间中运算全局数据,对于进行分析解决问题及做设计中所需的一长串繁杂的命令和解释是很有用的.

    例如:一个自编的命令文件fibo.m,用于计算Fibonnaci数列

    % An M-file to calculate Fibonnaci numbers

    f=[1, 1 ]; i = 1;

    while f(i)+f(i+1)<1000

    f(i+2)=f(i)+f(i+1);

    i=i+1;

    end

    plot(f)

    Matlab命令窗口中键入fibo命令,并回车执行,将计算出所有小于1000的Fibonnaci数,并绘出图形.

    要注意的是:文件执行后,f和i变量仍然留在工作空间.

    §5.3.3函数文件

    如果M文件的第一行包含function,这个文件就是函数文件,它与命令文件不同,所定义变量和运算都在文件内部,而不在工作空间.函数被调用完毕后,所定义变量和运算将全部释放.函数文件对扩展Matlab函数非常有用.

    例如:一个自编的函数文件mean.m,用于求向量的(或矩阵按列的)平均值

    function  y=mean(x)

    % MEAN Average or mean value,For Vectors,

    % MEAN (x) returns the mean value

    % For matrix MEAN (x) is a row vector

    % containing the mean value of each column

    [m,n]=size(x);

    if m==1

    m=n;

    end

    y=sum(x)/m;

    磁盘文件中定义的新函数称为mean函数,它与Matlab函数一样使用,例如z为从1到99的实数向量:

    z=1:99;

    计算均值:mean(z)

    ans=

    50

    mean.m程序的说明:

    (1)第一行的内容:函数名,输入变量,输出变量,没有这行这个文件就是命令文件,而不是函数文件.

    (2)%:表明%右边的行是说明性的内容注释.前一小部分行来确定M文件的注释,并在键入helpmean后显示出来.显示内容为连续的若干个%右边的文字.

    (3)变量m,n和y是mean的局部变量,在mean运行结束后,它们将不在工作空间z中存在.如果在调用函数之前有同名变量,先前存在的变量及其当前值将不会改变.

     

    再例如:一个计算标准差的函数文件stat.m

    function [mean,stdev]=stat(x)

    [m,n]=size(x);

    if m==1

    m=n

    end

    mean=sum(x)/m;

    stdev=sqrt(sum(x.^2)/m-mean.^2);

    stat表明返回多输出变量是可能的.

     

    又如:使用多输入变量计算矩阵秩函数

    function r=rank(x,tol)

    % rank of a matrix

    s=svd(x);

    if(nargin==1)

    tol=max(size(x))*s(1)*eps;

    end

    r=sum(s>tol);

    这个变量说明利用永久变量nargin确定输入变量的个数,变量nargout虽然这里没有使用,但它包含有输出变量的个数.

    一些有用的说明:

    当M函数文件第一次在Matlab运行时,它被编译并放入内存,以后使用时不用重新编译即可得到.

    what命令:显示磁盘当前目录中的M文件,

    dir命令:列出所有文件.

    一般而言,输入一个名字到Matlab,例如键入whoopie命令,Matlab用以下步骤解释:

    (1) 看whoopie是否为变量.

    (2) 检验whoopie是否为在线函数.

    (3) 检验whoopie文件的当前目录.

    (4) 将whoopie看成Matlab的PATH中的一个文件,在Matlab PATH目录中搜索.

    如果whoopie存在,Matlab首先将其作为变量而不是作为函数.

    §5.4 字符串、输入及输出

    §5.4.1 echo、input、pause、keyboard

    一般来说,当一个M文件运行时,文件的命令不在屏幕上显示,而echo命令则使M文件运行时,命令在屏幕上显示,这对于调试、演示相当有用.

    input功能:输入Input('How many apples')给用户一个提示串,等待,然后显示用户通过键盘输入的大量表达式.可以用input命令建立驱动M文件的菜单.

    与input功能相同,但功能更强的keyboard命令将计算机作为一个命令文件来调用,放入M文件中,此特性对调试或正在运行期间修改变量很有用.

    pause命令:使用户暂停运行一个程序,当再按任一键时恢复执行,pause(n)等待n秒钟后再继续执行.

    §5.4.2串和宏串

    字符串用单个引号输入到Matlab中,例如:

    s='Hello'

    结果显示为:

    s =

    Hello

    字符存在向量中,每个元素就是一个字符,如:

    size(s)

    ans =

    1       5

    表明S为一个1×5的矩阵,有五个元素.字符以ASCII值存入,abs函数或double函数将显示以下值(即Hello的ASCII值)

    abs(s)

    ans =

       72   101  108   108   111

    getstr函数,使向量作为字符显示,而不显示ASCII值.

    disp可在变量中显示字符.sprintf, num2str和int2str可以将数字转换成串.

    字符变量通过括号连成大串.例如:

    s='hello';

    s=[s,'world']

    s =

    hello world

    eval是与字符变量—起工作的函数,执行简单字符宏调用.eval( t )执行包含在t内的字符.如果t是任何Matlab表达式或语句的源字符,则字符串被解释执行.例如:

    t='eye(2)', eval(t)

    结果为:

    ans=

    1     0

    0     1

    又例如,给矩阵元素赋值

    t='1/(i+j-1)';

    for i=1:n

    for j=1:n

                   a( i,j)=eval(t);

    end

    end

    这儿有一个例子,介绍如何一起使用eval与load命令,装入十个具有顺序文件名的文件中的数据:

    fname='mydata';

    for i = 1:10

    eval([ 'load ', fname, int2str( i )])

    end

    §5.4.3外部程序

    Matlab与外部独立程序的通讯方式可以是多种多样的,下面介绍其中的一个办法:

    (1) Matlab中将变量存入磁盘

    (2) 运行外部程序(读数据文件,进行处理),将结果写到磁盘上

    (3) 将处理后的文件装回到工作空间中

    例如:用外部程序gareqn找garfield方程的结果:

    function y=garfield(a,b,q,r)

    save gardata a,b,q,r

    ! gareqn

    load gardata

    使用FORTRAN或其它语言写gareqn程序,使其可以读gardata.mat,进行处理,将结果存入文件中.

    这个程序可将计算机的“连接码”提供给Matlab,在许多系统中它将新的目标码连接到程序中比物理联接要方便得多.

    §5.4.4输入输出数据

    可使用各种方法将其它程序和外部世界的数据送入Matlab,同样可把Matlab数据输送到外部世界,使你的程序以Matlab使用的文件形式直接计算数据.

    最好的方法取决于多少数据,数据是否可读,什么形式等:

    (1) 清晰的元素表输入:

    如果你有少量数据,比如说小于10~15个元素,使用方括号[]输入.

    (2) 使用文本编辑建立命令文件,将数据列为清晰的元素表输入.如果数据不是可读形式,又不得不以一种方法键入,可以重复运行M文件,重复修改数据.

    (3) 如果数据以ASCII形式存贮,并有固定长度,行尾有回车符,各数间有空格的文件称为flatfile(ASCII的flat file可由普通文本编辑来编辑),flat file通过load命令直接读进Matlab,结果存入名为文件名的变量中去.

    (4) 将数据文件译成Matlab文件形式,使用load命令,translate程序由Matlab中的应用程序库支持,translate程序将ASCII文件、二进制文件、FORTRAN非格式文件和DIF文件转换为Matlab使用的特定的MAT文件,当磁盘文件中存有大量数据时,这个方法输入最好.

    Matlab数据输出到外部世界的方法:

    (1) 小矩阵时:使用diary命令建立日志文件,在文件中列出变量,用文本编辑处理日志文件,日志的输出包括运行中的Matlab命令.

    (2) 使用save命令存入变量,退出Matlab,用translate程序将MAT文件转换成任一种其它文件形式.

    第六节 Matlab符号运算

     

    Matlab本身并没有符号计算功能,1993年通过购买Maple的使用权后,开始具备符号运算的功能.符号运算的类型很多,几乎涉及数学的所有分支.

    §6.1 Matlab符号运算的工作流程

    §6.1.1工作过程

     

    §6.1.2 核心工具

    sym函数  VS    syms 语句

    sym函数:构造符号变量和表达式:  a=sym('a')

    (Construct symbolic numbers,variables and objects)

    syms语句:构造符号对象的简捷方式(Short-cut forconstructing symbolic objects)

    §6.1.3 符号变量确定原则

    (1)除了i 和j之外,字母位置最接近x的字母;若距离相等,则取ASCII码大的;

    (2)若没有除了i 与j以外的字母,则视x为默认的符号变量;

    (3)可利用函数findsym(string,N)来询问在众多符号中,哪N个为符号变量.例如:键入findsym(3*a*b+y^2,1),即可得到答案y.更多的例子见下表:

     

    符号表达式

    默认符号变量

    a*x^2+b*x+c

    x

    1/(4+cos(t))

    t

    4*x/y

    x

    2*a+b

    b

    2*i

    x

    §6.2  Matlab的六大常见符号运算

    §6.2.1 因式分解

    symsx

    f=x^6+1;

    s=factor(f)

    结果为:

    s=(x^2+1)*(x^4-x^2+1)

    §6.2.2 计算极限

    求极限:

     

      syms h n x

      L=limit('(log(x+h)-log(x))/h',h,0)  %%单引号可省略掉

     M=limit('(1-x/n)^n',n,inf) 

    结果为:

     L =1/x

     M =exp(-x) 

    §6.2.3 计算导数

      syms a x;   y=sin(a*x);

     A=diff(y,x)

     B=diff(y,a) 

     C=diff(y,x,2)

    结果为:

      A = cos(a*x)*a

     B = cos(a*x)*x

     C = -sin(a*x)*a^2  

    §6.2.4 计算不定积分、定积分、反常积分

    , 

        syms x

        f=(x^2+1)/(x^2-2*x+2)^2;

        g=cos(x)/(sin(x)+cos(x));

        h=exp(-x^2);

        I=int(f)

        J=int(g,0,pi/2)

    K=int(h,0,inf) 

    结果为:

      I =1/4*(2*x-6)/(x^2-2*x+2)+3/2*atan(x-1)

      J =1/4*pi

      K =1/2*pi^(1/2) 

     

    §6.2.5 符号求和

    求级数   的和S, 以及前十项的部分和S1.

        syms n

        S=symsum(1/n^2, 1, inf)

    S1=symsum(1/n^2,1,10) 

    结果为:

      S =1/6*pi^2

      S1 =1968329/1270080

    重要说明:当求函数项级数   的和S2时,可用命令:

    syms n x

    S2=symsum(x/n^2, n, 1, inf)   

    S2 =1/6*x*pi^2

     

    两点说明:

    (1)注意观察S2与S1的细微区别!

    (2)当通项公式的Matlab表达式较长时,表达式要加上单引号.后面的练习中会遇到此问题.

    §6.2.6 解代数方程和常微分方程

    利用符号表达式解代数方程所需要的函数为solve(f),即解符号方程式f.

    例如:求一元二次方程a*x^2+b*x+c=0的根.

    f=sym('a*x^2+b*x+c')  或 f='a*x^2+b*x+c'

    solve(f)

    ans=

    [1/2/a*(-b+(b^2-4*c*a)^(1/2))]

    [1/2/a*(-b-(b^2-4*c*a)^(1/2))]

    solve(f,a)

    ans=

    -(b*x+c)/x^2

     

    利用符号表达式可求解微分方程的解析解,所需要的函数为dsolve(f),使用格式:

    dsolve('equation1', ' equation2', …)

    其中:equation为方程或条件.写方程或条件时,用 Dy 表示y 关于自变量的一阶导数,用D2y 表示 y 关于自变量的二阶导数,依此类推.

    1. 求微分方程 的通解.

    syms x y   %定义x,y为符号

    dsolve('Dy=x',  'x')

    ans =

    1/2*x^2+C1

    试比较:

    若写成:

    syms x y   %定义x,y为符号

    dsolve('Dy=x')

    结果将是什么?是否正确?为什么?

     

    2. 求微分方程 的特解.

    syms x y

    dsolve('D2y=x+Dy','y(0)=1', 'Dy(0)=0', 'x')

    ans =

    -1/2*x^2+exp(x)-x

    试比较:

    若写成:

    syms x y

    dsolve('D2y=x+Dy','y(0)=1', 'Dy(0)=0')

     

    结果将是什么?是否正确?为什么?

     

    3. 求微分方程组 的通解.

    syms x y

    [x,y]=dsolve('Dx=y+x,Dy=2*x') 

    x =

    1/3*C1*exp(-t)+2/3*C1*exp(2*t)+1/3*C2*exp(2*t)-1/3*C2*exp(-t)

    y =

    2/3*C1*exp(2*t)-2/3*C1*exp(-t)+2/3*C2*exp(-t)+1/3*C2*exp(2*t)

     

    试比较:

    若写成:

    (1)dsolve('Dx=y+x, Dy=2*x')

    结果将是:

    ans =

        x: [1x1 sym]

    y: [1x1 sym]

    试解释此结果的含义.

     

    若写成:

    (2)[x,y]=dsolve('Dx=y+x, Dy=2x')

    结果将是:

    x=

    exp(t)*C1+C2*exp(t)-C2-2-2*t

    y =

                 C2+2*t

    是否正确?为什么?
    综合练习

     

    1.按顺序进行如下的操作:

    (1)产生一个5阶魔术方阵A;并计算A'与A-1(即inv(A));

    (2)求A的特征值;

    (3)计算A的各列的总和与平均值;

    (4)计算A的各行的总和与平均值;

    (5)若b=[1 2 3 45] ',求方程组 Ax=b的解;

    (6)验证你的结论的正确性.

    2.产生行向量S =[1.0, 1.2, 1.4, …,  20],并计算S * S' 与  S' * S,你有何“发现”?

    3.设A= ;B= ;求C=A * B – B * A,你有何“发现”?

    4.若设矩阵A= ;B= ;求C=A * B – B * A,你又有何“发现”?

    5.如何建立如下的矩阵(命令方式和程序方式)?

     

    (1) ;  (2) ;

     

     

    (3) ;  (4)

    (5)                (6)  

    (7)

    6.绘制下列曲线的图形(散点图与折线图):

    7.绘制下列曲面的图形: (提示:曲面由两部分构成)

    8.在同一个图形上作下列两个函数的图象:

    (1) ;    (2)

    9.假如你有一组实测数据,例如:

    x=[53  56     60    67.5    75    90  110];

    y=[109 120.5  130   141.1  157.5  180  185];

    求其回归直线,画回归直线图形并计算最小误差平方和.

    10.假如你有一组实测数据,例如:

    x=[75 86  95  108  112  116 135  151  155 160  163  167 171  178 185];

    y=[10 12  15  17   20   22   35   41   48  50   51   54  59   66   75];

    求其回归直线,画回归直线图形并计算最小误差平方和.

    11.随机产生500个0到100的整数FS作为学生的考试分数.

    (1)       画出FS的简单直方图;

    (2)       画出每个分数段(0~10、10~20、…,90~100)的统计频数直方图;

    12.求下列各结果:

    (1)用Matlab因式分解: .

    (2)用Matlab求极限: .

    (3)用Matlab求积分: .

    (4)用Matlab求幂级数: 的和函数(化简结果).

    13.非线性回归尝试

    下表是到1994年的游泳世界纪录,试估计时间y与距离x的关系.

    距离x(米)

    50

    100

    200

    400

    800

    1500

    时间y(秒)

    21.81

    48.42

    106.69

    225

    466.60

    863.48

     

    说明:用线性回归方法将得到: ,但当 时, ,这是非常荒唐的结果!显然,一个基本要求是当 时 .试尝试使用非线性回归模型: .

     

    14. (三维)符号作图尝试

    命令

    作用

    解释

    ezplot3

    3-D parametric curve plotter

    3D参数曲线图形

    ezcontour

    use contour plotter

    等高线图

    ezcontourf

    filled contour plotter

    填充等高线图

    ezmesh

    3-D mesh plotter

    3D mesh曲面图形

    ezmeshc

    combination mesh/contour plotter

    mesh曲面/等高线图

    ezsurf

    3-D colored surface plotter

    3D surf曲面图形

    ezsurfc

    combination surf/contour plotter

    surf曲面/等高线图

     

    请尝试以下的命令:

    ezplot3('sin(t)', ' cos(t)','t', [0,6*pi])

    ezcontour('x*exp(-x^2 - y^2)')

    ezcontourf('x*exp(-x^2 - y^2)')

    ezmesh('(s-sin(s))*cos(t)','(1-cos(s))*sin(t)','s',[-2*pi,2*pi])

    ezmeshc('(s-sin(s))*cos(t)','(1-cos(s))*sin(t)','s',[-2*pi,2*pi])

    ezsurf('x*exp(-x^2 - y^2)')

    ezsurfc('x*exp(-x^2 - y^2)')

     

    展开全文
  • matlab库函数大全

    千次阅读 多人点赞 2019-03-20 10:37:59
    matlab库函数大全 2017年08月23日 19:37:26 数据架构师 阅读数:14863更多 <div class="tags-box space"> <span ...

    matlab库函数大全

    附录 MATLAB函数参考

    附录1 常用命令
    附录1.1 管理用命令

    函数名

    功能描述

    函数名

    功能描述

    addpath

    增加一条搜索路径

    rmpath

    删除一条搜索路径

    demo

    运行Matlab演示程序

    type

    列出.M文件

    doc

    装入超文本文档

    version

    显示Matlab的版本号

    help

    启动联机帮助

    what

    列出当前目录下的有关文件

    lasterr

    显示最后一条信息

    whatsnew

    显示Matlab的新特性

    lookfor

    搜索关键词的帮助

    which

    造出函数与文件所在的目录

    path

    设置或查询Matlab路径

     

     


    附录1.2管理变量与工作空间用命令

    函数名

    功能描述

    函数名

    功能描述

    clear

    删除内存中的变量与函数

    pack

    整理工作空间内存

    disp

    显示矩阵与文本

    save

    将工作空间中的变量存盘

    length

    查询向量的维数

    size

    查询矩阵的维数

    load

    从文件中装入数据

    who,whos

    列出工作空间中的变量名


    附录1.3文件与操作系统处理命令

    函数名

    功能描述

    函数名

    功能描述

    cd

    改变当前工作目录

    edit

    编辑.M文件

    delete

    删除文件

    matlabroot

    获得Matlab的安装根目录

    diary

    Matlab运行命令存盘

    tempdir

    获得系统的缓存目录

    dir

    列出当前目录的内容

    tempname

    获得一个缓存(temp)文件

    !

    执行操作系统命令

     

     


    附录1.4窗口控制命令

    函数名

    功能描述

    函数名

    功能描述

    echo

    显示文件中的Matlab中的命令

    more

    控制命令窗口的输出页面

    format

    设置输出格式

     

     


    附录1.5启动与退出命令

    函数名

    功能描述

    函数名

    功能描述

    matlabrc

    启动主程序

    quit

    退出Matlab环境

    startup

    Matlab自启动程序

     

     


    附录2 运算符号与特殊字符附录
    2.1
    运算符号与特殊字符

    函数名

    功能描述

    函数名

    功能描述

    +

    ...

    续行标志

    -

    ,

    分行符(该行结果不显示)

    *

    矩阵乘

    ;

    分行符(该行结果显示)

    .*

    向量乘

    %

    注释标志

    ^

    矩阵乘方

    !

    操作系统命令提示符

    .^

    向量乘方

     

    矩阵转置

    kron

    矩阵kron

    .

    向量转置

    \

    矩阵左除

    =

    赋值运算

    /

    矩阵右除

    ==

    关系运算之相等

    .\

    向量左除

    ~=

    关系运算之不等

    ./

    向量右除

    关系运算之小于

    :

    向量生成或子阵提取

    <=

    关系运算之小于等于

    ()

    下标运算或参数定义

    关系运算之大于

    []

    矩阵生成

    >=

    关系运算之大于等于

    {}

     

    &

    逻辑运算之与

    .

    结构字段获取符

    |

    逻辑运算之或

    .

    点乘运算,常与其他运算符联合使用(.\)

    ~

    逻辑运算之非

    xor

    逻辑运算之异成

     

     


    附录2.2逻辑函数

    函数名

    功能描述

    函数名

    功能描述

    all

    测试向量中所用元素是否为真

    is*(一类函数)

    检测向量状态.其中*表示一个确定的函数(isinf)

    any

    测试向量中是否有真元素

    *isa

    检测对象是否为某一个类的对象

    exist

    检验变量或文件是否定义

    logical

    将数字量转化为逻辑量

    find

    查找非零元素的下标

     

     


    附录3 语言结构与调试
    附录3.1编程语言

    函数名

    功能描述

    函数名

    功能描述

    builtin

    执行Matlab内建的函数

    global

    定义全局变量

    eval

    执行Matlab语句构成的字符串

    nargchk

    函数输入输出参数个数检验

    feval

    执行字符串指定的文件

    script

    Matlab语句及文件信息

    function

    Matlab函数定义关键词

     

     


    附录3.2控制流程

    函数名

    功能描述

    函数名

    功能描述

    break

    中断循环执行的语句

    if

    条件转移语句

    case

    switch结合实现多路转移

    otherwise

    多路转移中的缺省执行部分

    else

    if一起使用的转移语句

    return

    返回调用函数

    elseif

    if一起使用的转移语句

    switch

    case结合实现多路转移

    end

    结束控制语句块

    warning

    显示警告信息

    error

    显示错误信息

    while

    循环语句

    for

    循环语句

     

     


    附录3.3交互输入

    函数名

    功能描述

    函数名

    功能描述

    input

    请求输入

    menu

    菜单生成

    keyboard

    启动键盘管理

    pause

    暂停执行


    附录3.4面向对象编程

    函数名

    功能描述

    函数名

    功能描述

    class

    生成对象

    isa

    判断对象是否属于某一类

    double

    转换成双精度型

    superiorto

    建立类的层次关系

    inferiorto

    建立类的层次关系

    unit8

    转换成8字节的无符号整数

    inline

    建立一个内嵌对象

     

     


    附录3.5调试

    函数名

    功能描述

    函数名

    功能描述

    dbclear

    清除调试断点

    dbstatus

    列出所有断点情况

    dbcont

    调试继续执行

    dbstep

    单步执行

    dbdown

    改变局部工作空间内存

    dbstop

    设置调试断点

    dbmex

    启动对Mex文件的调试

    sbtype

    列出带命令行标号的.M文件

    dbquit

    退出调试模式

    dbup

    改变局部工作空间内容

    dbstack

    列出函数调用关系

     

     


    附录4 基本矩阵与矩阵处理
    附录4.1基本矩阵

    函数名

    功能描述

    函数名

    功能描述

    eye

    产生单位阵

    rand

    产生随机分布矩阵

    linspace

    构造线性分布的向量

    randn

    产生正态分布矩阵

    logspace

    构造等对数分布的向量

    zeros

    产生零矩阵

    ones

    产生元素全部为1的矩阵

    :

    产生向量


    附录4.2特殊向量与常量

    函数名

    功能描述

    函数名

    功能描述

    ans

    缺省的计算结果变量

    non

    非数值常量常由0/0Inf/Inf获得

    computer

    运行Matlab的机器类型

    nargin

    函数中参数输入个数

    eps

    精度容许误差(无穷小)

    nargout

    函数中输出变量个数

    flops

    浮点运算计数

    pi

    圆周率

    i

    复数单元

    realmax

    最大浮点数值

    inf

    无穷大

    realmin

    最小浮点数值

    inputname

    输入参数名

    varargin

    函数中输入的可选参数

    j

    复数单元

    varargout

    函数中输出的可选参数


    附录4.3时间与日期

    函数名

    功能描述

    函数名

    功能描述

    calender

    日历

    eomday

    计算月末

    clock

    时钟

    etime

    所用时间函数

    cputime

    所用的CPU时间

    now

    当前日期与时间

    date

    日期

    tic

    启动秒表计时器

    datenum

    日期(数字串格式)

    toc

    读取秒表计时器

    datestr

    日期(字符串格式)

    weekday

    星期函数

    datevoc

    日期(年月日分立格式)

     

     


    附录4.4矩阵处理

    函数名

    功能描述

    函数名

    功能描述

    cat

    向量连接

    reshape

    改变矩阵行列个数

    diag

    建立对角矩阵或获取对角向量

    rot90

    将矩阵旋转90

    fliplr

    按左右方向翻转矩阵元素

    tril

    取矩阵的下三角部分

    flipud

    按上下方向翻转矩阵元素

    triu

    取矩阵的上三角部分

    repmat

    复制并排列矩阵函数

     

     


    附录5 特殊矩阵

    函数名

    功能描述

    函数名

    功能描述

    compan

    生成伴随矩阵

    invhilb

    生成逆hilbert矩阵

    gallery

    生成一些小的测试矩阵

    magic

    生成magic矩阵

    hadamard

    生成hadamard矩阵

    pascal

    生成pascal矩阵

    hankel

    生成hankel矩阵

    toeplitz

    生成toeplitz矩阵

    hilb

    生成hilbert矩阵

    wilkinson

    生成wilkinson特征值测试矩阵


    附录6 数学函数
    附录6.1三角函数

    函数名

    功能描述

    函数名

    功能描述

    sin/asin

    正弦/反正弦函数

    sec/asec

    正割/反正割函数

    sinh/asinh

    双曲正弦/反双曲正弦函数

    sech/asech

    双曲正割/反双曲正割函数

    cos/acos

    余弦/反余弦函数

    csc/acsc

    余割/反余割函数

    cosh/acosh

    双曲余弦/反双曲余弦函数

    csch/acsch

    双曲余割/反双曲余割函数

    tan/atan

    正切/反正切函数

    cot/acot

    余切/反余切函数

    tanh/atanh

    双曲正切/反双曲正切函数

    coth/acoth

    双曲余切/反双曲余切函数

    atan2

    四个象限内反正切函数

     

     


    附录6.2指数函数

    函数名

    功能描述

    函数名

    功能描述

    exp

    指数函数

    log10

    常用对数函数

    log

    自然对数函数

    sqrt

    平方根函数


    附录6.3复数函数

    函数名

    功能描述

    函数名

    功能描述

    abs

    绝对值函数

    imag

    求虚部函数

    angle

    角相位函数

    real

    求实部函数

    conj

    共轭复数函数

     

     


    附录6.4数值处理

    函数名

    功能描述

    函数名

    功能描述

    fix

    沿零方向取整

    round

    舍入取整

    floor

    沿-∞方向取整

    rem

    求除法的余数

    ceil

    沿+∞方向取整

    sign

    符号函数


    附录6.5其他特殊数学函数

    函数名

    功能描述

    函数名

    功能描述

    airy

    airy函数

    erfcx

    比例互补误差函数

    besselh

    bessel函数(hankel函数)

    erfinv

    逆误差函数

    bessili

    改进的第一类bessel函数

    expint

    指数积分函数

    besselk

    改进的第二类bessel函数

    gamma

    gamma函数

    besselj

    第一类bessel函数

    gammainc

    非完全gamma函数

    bessely

    第二类bessel函数

    gammaln

    gamma对数函数

    beta

    beta函数

    gcd

    最大公约数

    betainc

    非完全的beta函数

    lcm

    最小公倍数

    betaln

    beta对数函数

    log2

    分割浮点数

    elipj

    Jacobi椭圆函数

    legendre

    legendre伴随函数

    ellipke

    完全椭圆积分

    pow2

    2标量浮点数

    erf

    误差函数

    rat

    有理逼近

    erfc

    互补误差函数

    rats

    有理输出

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    附录7 坐标转换

    函数名

    功能描述

    函数名

    功能描述

    cart2pol

    笛卡儿坐标到极坐标转换

    pol2cart

    极坐标到笛卡儿坐标转换

    cart2sph

    笛卡儿坐标到球面坐标转换

    sph2cart

    球面坐标到笛卡儿坐标转换


    附录8 矩阵函数
    附录8.1矩阵分析

    函数名

    功能描述

    函数名

    功能描述

    cond

    求矩阵的条件数

    rcond

    LINPACK倒数条件估计

    det

    矩阵的行列式

    rref

    矩阵的行阶梯型实现

    norm

    求矩阵的范数

    rrefmovie

    消元法解方程演示

    null

    右零空间

    subspace

    子空间

    orth

    正交空间

    trace

    矩阵的迹

    rank

    求矩阵的秩

     

     


    附录8.2线性方程

    函数名

    功能描述

    函数名

    功能描述

    /,\

    线性方程求解

    nnls

    非零最小二乘

    chol

    Cholesky分解

    pinv

    求伪逆矩阵

    inv

    矩阵求逆

    qr

    矩阵的QR分解

    lscov

    最小二乘方差

    qrdelete

    QR分解中删除一行

    lu

    矩阵的LU三角分解

    qrinsert

    QR分解中插入一行


    附录8.3特征值与奇异值

    函数名

    功能描述

    函数名

    功能描述

    banlance

    改进特征值精度的均衡变换

    qz

    QZ算法求矩阵特征值

    cdf2rdf

    复块对角阵到实块对角阵转换

    rdf2cdf

    实块对角阵到复块对角阵转换

    eig

    求矩阵的特征值和特征向量

    schur

    Schur分解

    hess

    求Hessenberg矩阵

    svd

    奇异值分解

    poly

    求矩阵的特征多项式

     

     


    附录8.4矩阵函数

    函数名

    功能描述

    函数名

    功能描述

    expm

    矩阵指数函数

    logm

    矩阵对数函数

    funm

    矩阵任意函数

    sqrtm

    矩阵平方根


    附录9 数据分析与Fourier变换函数
    附录9.1基本运算

    函数名

    功能描述

    函数名

    功能描述

    cumprod

    向量累积

    prod

    对向量中各元素求积

    cumsum

    向量累加

    sort

    对向量中各元素排序

    max

    求向量中最大元素

    sortrows

    对矩阵中各行排序

    min

    求向量中最小元素

    std

    求向量中各元素标准差

    mean

    求向量中各元素均值

    sum

    对向量中各元素求和

    median

    求向量中中间元素

    trapz

    梯形法求数值积分


    附录9.2微分计算

    函数名

    功能描述

    函数名

    功能描述

    del2

    离散Laplace变换

    gradient

    梯度计算

    diff

    差分于近视微分

     

     


    附录9.3滤波与卷积

    函数名

    功能描述

    函数名

    功能描述

    Conv

    卷给与多项式乘法

    filter

    一维数字滤波

    conv2

    二维卷积

    filter2

    二维数字滤波

    Deconv

    因式分解与多项式乘法

     

     


    附录9.4方差处理

    函数名

    功能描述

    函数名

    功能描述

    corrcoef

    相关系数计算

    cov

    协方差计算


    附录9.5Fourier变换

    函数名

    功能描述

    函数名

    功能描述

    abs

    绝对值函数

    fftshift

    fft与fft2输出重排

    angle

    相角函数

    ifft

    离散Fourier逆变换

    cplxpair

    依共轭复数对重新排序

    ifft2

    二维离散Fourier逆变换

    fft

    离散Fourier变换

    unwrap

    相角矫正

    fft2

    二维离散Fourier变换

     

     


    附录10 多项式处理函数
    附录10.1多项式处理

    函数名

    功能描述

    函数名

    功能描述

    conv

    卷机与多项式乘法

    polyfit

    数据的多项式拟合

    deconv

    因式分解与多项式乘法

    polyval

    多项式求值

    poly

    求矩阵的特征多项式

    polyvalm

    多项式矩阵求值

    polyder

    多项式求导

    residue

    部分分式展开

    polyeig

    多项式特征值

    roots

    求多项式的根


    附录10.2数据插值

    函数名

    功能描述

    函数名

    功能描述

    griddata

    数据网络的插值生成

    interpft

    一维插值(FFT方法)

    interp1

    一维插值(查表)

    interpn

    多维插值(查表)

    interp2

    二维插值(查表)

    meshgrid

    构造三维图形用x,y阵列

    interp3

    三维插值(查表)

    spline

    三次样条插值


    附录11 非线性数值方法

    函数名

    功能描述

    函数名

    功能描述

    dblquad

    双重积分

    odeget

    获得微分方程求解的可选参数

    fmin

    单变量最优化函数

    odeset

    设置微分方程求解的可选参数

    fmins

    多变量最优化函数

    quad

    低阶数值积分方法

    ode45,ode23,ode113,ode15s,ode23s

    微分方程数值解法

    quad8

    高阶数值积分方法

    odefile

    对文件定义的微分方程求解

     

     


    附录12 稀疏矩阵函数
    附录12.1基本稀疏矩阵

    函数名

    功能描述

    函数名

    功能描述

    spdiags

    稀疏对角矩阵

    sprandn

    稀疏正态分布随机矩阵

    speye

    稀疏单位矩阵

    sprandsym

    稀疏对称随机矩阵

    sprand

    稀疏均匀分布随机矩阵

     

     


    附录12.2稀疏矩阵转换

    函数名

    功能描述

    函数名

    功能描述

    find

    查找非零元素下标

    sparse

    常规矩阵转换为稀疏矩阵

    full

    稀疏矩阵转换为常规矩阵

    spconvert

    由外部格式引入稀疏矩阵


    附录12.3处理非零元素

    函数名

    功能描述

    函数名

    功能描述

    issparse

    判断元素是否为稀疏矩阵

    nzmax

    允许的非零元素空间

    mmz

    稀疏矩阵的非零元素个数

    spalloc

    为非零元素定位存储空间

    nonzeros

    稀疏矩阵的非零元素

    spfun

    为非零元素定义处理函数


    附录12.4稀疏矩阵可视化

    函数名

    功能描述

    函数名

    功能描述

    gplot

    绘制图论图形

    spy

    绘制稀疏矩阵结构


    附录12.5排序算法

    函数名

    功能描述

    函数名

    功能描述

    colmmd

    列最小度排序

    randperm

    产生随机置换向量

    colperm

    由非零元素的个数排序各列

    symmd

    对称最小度排序

    dmperm

    Dulmage-Mendelsohn分解

    symrcm

    反向Cuthill-McKee排序


    附录12.6范数、条件数

    函数名

    功能描述

    函数名

    功能描述

    condest

    估算||*||1范数

    normest

    估算||*||2范数

    sprank

    计算结构秩

     

     


    附录12.7特征值与奇异值

    函数名

    功能描述

    函数名

    功能描述

    eigs

    求稀疏矩阵特征值和特征向量

    svds

    稀疏矩阵奇异值分解


    附录12.8其他

    函数名

    功能描述

    函数名

    功能描述

    spaugment

    最小二乘算法形成

    symbact

    符号因子分解

    spparms

    设置稀疏矩阵参数

     

     

     

     

     

     

     

     

     

     

    matlab库函数命令大全(三)

    2007-05-21 11:34

    附录13 图形绘制
    附录13.1基本二维图形

    函数名

    功能描述

    函数名

    功能描述

    fill

    填充二维多边形

    polar

    极坐标图形绘制

    loglog

    全对数二维坐标绘制

    semilogx

    x轴半对数坐标图形绘制

    plot

    线性坐标图形绘制

    semilogy

    y轴半对数坐标图形绘制


    附录13.2基本三维图形

    函数名

    功能描述

    函数名

    功能描述

    fill3

    三维多边形填充

    plot3

    三维线或点型图绘制

    mesh

    三维网格图形绘制

    surf

    三维表面图形绘制


    附录13.3三维颜色控制

    函数名

    功能描述

    函数名

    功能描述

    brighten

    图形亮度调整

    hidden

    网格图的网格线开关设置

    caxis

    坐标轴伪彩色设置

    shading

    设置渲染模式

    colormap

    调色板设置

     

     


    附录13.4三维光照模型

    函数名

    功能描述

    函数名

    功能描述

    diffuse

    图象漫射处理

    surf1

    带光照的三维表面绘制

    lighting

    光照模式设置

    surfnorm

    曲面法线

    specular

    设置镜面反射

     

     


    附录13.5标准调色板设置

    函数名

    功能描述

    函数名

    功能描述

    bone

    带有蓝色调的灰色的调色板

    hot

    以黑红黄白为基色的调色板

    cool

    以天蓝粉色为基色的调色板

    hsv

    色度饱和度亮度调色板

    copper

    线性铜色调的调色板

    pink

    粉色色调的调色板

    flag

    以红白蓝黑为基色的调色板

    prism

    光谱颜色表

    gray

    线性灰度调色板

     

     


    附录13.6三维视点控制

    函数名

    功能描述

    函数名

    功能描述

    rotate3d

    设置三维旋转开关

    viewmtx

    求视转换矩阵

    view

    设置视点

     

     


    附录13.7坐标轴控制

    函数名

    功能描述

    函数名

    功能描述

    axis

    坐标轴标度设置

    hold

    设置当前图形保护模式

    axes

    坐标轴位置设置

    subplot

    将图形窗口分成几个区域

    box

    坐标轴盒状显示

    zoom

    二维图形缩放

    grid

    坐标网格线开关设置

     

     


    附录13.8图形注解

    函数名

    功能描述

    函数名

    功能描述

    colorbar

    颜色条设置

    xlabel

    给图形的x轴加文字说明

    gtext

    在鼠标位置加文字说明

    ylabel

    给图形的y轴加文字说明

    text

    在图形上加文字说明

    zlabel

    给图形的z轴加文字说明

    title

    给图形加标题

     

     


    附录13.9拷贝与打印

    函数名

    功能描述

    函数名

    功能描述

    print

    打印图形或将图形存盘

    orient

    设置纸的方向

    orintopt

    设置打印机为默认值

     

     


    附录14 特殊图形
    附录14.1特殊二维图形

    函数名

    功能描述

    函数名

    功能描述

    area

    区域填充

    feather

    羽状条形图绘制

    bar

    条形图绘制

    fplot

    给定函数绘制

    barh

    水平条形图绘制

    hist

    直方图绘制

    bar3

    3维条形图绘制

    pareto

    pareto图绘制

    bar3h

    3维水平条形图绘制

    pie

    饼状图绘制

    comet

    彗星状轨迹绘制

    stem

    离散序列图形绘制

    errorbar

    误差条形图绘制

    stairs

    梯形图绘制


    附录14.2等高线及其他二维图形

    函数名

    功能描述

    函数名

    功能描述

    contour

    等高线绘制

    pcolor

    伪色绘制

    contourf

    等高线填充绘制

    quiver

    有向图(箭头)绘制

    contour3

    三维等高线绘制

    voronoil

    voronoi图绘制

    clabel

    等高线高程标志

     

     


    附录14.3特殊三维图形

    函数名

    功能描述

    函数名

    功能描述

    comet3

    三维彗星状轨迹绘制

    slice

    切片图

    meshc

    带等高线的三维网格绘制

    surfc

    带等高线的三维表面绘制

    meshz

    带零平面的三维网格绘制

    trisurf

    表面图形的三角绘制

    stem2

    杆图绘制

    trimesh

    网格图形的三角绘制

    quiver3

    三维箭头(有向图)绘制

    waterfall

    瀑布型图形的绘制


    附录14.4图象显示与文件I/O

    函数名

    功能描述

    函数名

    功能描述

    brighten

    图形色调亮化

    image

    图像显示

    colorbar

    颜色条设置

    imfinfo

    图形文件信息

    colormap

    调色板设置

    imread

    从文件读取图形

    contrast

    灰度对比度设置

    imwrite

    保存图像


    附录14.5动画处理

    函数名

    功能描述

    函数名

    功能描述

    capture

    屏幕抓取

    movie

    播放动画帧

    getframe

    获取动画帧

     

     


    附录14.6实体模型

    函数名

    功能描述

    函数名

    功能描述

    cylinder

    圆柱体生成

    sphere

    球体生成


    附录15 图形处理
    附录15.1图形窗口生成与控制

    函数名

    功能描述

    函数名

    功能描述

    clf

    清除当前图形窗口

    gcf

    获取当前图形的窗口句柄

    close

    关闭图形窗口

    refresh

    图形窗口刷新

    figure

    生成图形窗口

    shg

    显示图形窗口


    附录15.2坐标轴建立与控制

    函数名

    功能描述

    函数名

    功能描述

    axes

    坐标轴标度设置

    gca

    获得当前坐标轴句柄

    axis

    坐标轴位置设置

    hold

    设置当前图形保护模式

    box

    坐标轴盒状显示

    ishold

    返回hold的状态

    caxis

    为彩色坐标轴刻度

    subplot

    将图形窗口分为几个区域

    cla

    清除当前坐标轴

     

     


    附录15.3处理图形对象

    函数名

    功能描述

    函数名

    功能描述

    axes

    坐标轴生成

    surface

    表面生成

    figure

    图形窗口生成

    text

    文本生成

    image

    图像生成

    unicontrol

    生成一个用户接口控制

    light

    光源生成

    uimenu

    菜单生成

    line

    线生成

     

     


    附录15.4图形

    函数名

    功能描述

    函数名

    功能描述

    copyobj

    图像对象拷贝

    gcbo

    获得当前回调对象的句柄

    delete

    对象删除

    gco

    获得当前对象的句柄

    drawnow

    消除未解决的图像对象事件

    get

    获得对象属性

    findobj

    查找对象

    reset

    重新设置对象属性

    gebf

    获得当前回调窗口的句柄

    set

    设置对象属性


    附录16 GUI(图形用户接口)
    附录16.1GUI函数

    函数名

    功能描述

    函数名

    功能描述

    ginput

    获取鼠标输入

    uiresume

    继续执行

    selectmoveresize

    对象的选择、移动、大小设置、拷贝

    uiwait

    中断执行

    uicontrol

    生成图形用户接口对象

    waitgorbutterpress

    等待按钮输入

    uimenu

    生成菜单对象

    waitfor

    中断执行


    附录16.2GUI设计工具

    函数名

    功能描述

    函数名

    功能描述

    align

    坐标轴与用户接口控制的对齐工具

    menuedit

    菜单编辑器

    cbedit

    回调函数编辑器

    propedit

    属性编辑器

    guide

    GUI设计工具

     

     


    附录16.3对话框

    函数名

    功能描述

    函数名

    功能描述

    dialog

    对话框生成

    printdlg

    打印对话框

    axlimdig

    坐标轴设限对话框

    questdlg

    请求对话框

    errordlg

    错误对话框

    uigetfile

    标准的打开文件对话框

    helpdlg

    帮助对话框

    uiputfile

    标准的保存文件对话框

    inputdlg

    输入对话框

    uisetcolor

    颜色选择对话框

    listdlg

    列表选择对话框

    uisetfont

    字体选择对话框

    msgdlg

    消息对话框

    waitbar

    等待条显示

    pagedlg

    页位置对话框

    warndlg

    警告对话框


    附录16.4菜单

    函数名

    功能描述

    函数名

    功能描述

    makemenu

    生成菜单结构

    umtoggle

    菜单对象选中状态切换

    menubar

    设置菜单条属性

    wimenu

    生成window菜单项的子菜单


    附录16.5组按钮

    函数名

    功能描述

    函数名

    功能描述

    btndown

    组按钮中的按钮按下

    btnstate

    查询按钮中的按钮状态

    btngroup

    组按钮生成

    btnup

    组按钮中的按钮弹起

    btnpress

    组按钮中的按钮按下管理

     

     


    附录16.6自定义窗口属性

    函数名

    功能描述

    函数名

    功能描述

    clruprop

    清除用户自定义属性

    setuprop

    设置用户自定义属性

    getuprop

    获取用户自定义属性

     

     


    附录16.7其他应用

    函数名

    功能描述

    函数名

    功能描述

    allchild

    获取所有子对象

    popupstr

    获取弹出式菜单选中项的字符串

    edtext

    坐标轴文本对象编辑

    remapfig

    改变窗口中对象的位置

    findall

    查找所有对象

    setptr

    设置窗口指针

    getptr

    获得窗口指针

    setstatus

    设置窗口中文本传状态

    getstatus

    获取窗口中文本状态

     

     


    附录17 声音处理

    函数名

    功能描述

    函数名

    功能描述

    soond

    将向量转换成声音

    wavread

    读。wav文件

    auread

    读。au文件

    wavwrite

    写。wav文件

    auwrite

    写。au文件

     

     


    附录18 字符串处理函数
    附录18.1字符串处理

    函数名

    功能描述

    函数名

    功能描述

    strings

    Matlab字符串函数说明

    upper

    字符串大写

    isstr

    字符串判断

    lower

    字符串小写

    deblank

    删除结尾空格

    isletter

    字母判断

    str2mat

    字符串转换成文本

    isspace

    空子符判断

    strcmp

    字符串比较

    strrep

    字串查找

    findstr

    字串查找

    strtok

    标记查找


    附录18.2字符串与数值转换

    函数名

    功能描述

    函数名

    功能描述

    num2str

    变数值为字符串

    sprintf

    数值的格式输出

    str2num

    变字符串为数值

    sscanf

    数值的格式输入

    int2str

    变整数为字符串

     

     


    附录18.3进制转换

    函数名

    功能描述

    函数名

    功能描述

    hex2num

    十六进制到IEEE标准下浮点数的轮换

    hex2dec

    十六进制到十进制的轮换

    dec2hex

    十进制到十六进制的轮换

     

     


    附录19 文件输入输出函数
    附录19.1基本文件输入输出

    函数名

    功能描述

    函数名

    功能描述

    fclose

    关闭文件

    feof

    文件结尾检测

    fopen

    打开文件

    ferror

    文件I/O错误查询

    fread

    读二进制流文件

    frewind

    文件指针回绕

    fwrite

    写二进制流文件

    fseek

    设置文件指针位置

    fgetl

    读文本文件(无行结束符)

    ftell

    获得文件指针位置

    fgets

    读文本文件(含行结束符)

    sprintf

    格式化数据转换为字符串

    fprintf

    写格式化数据到文件

    sscanf

    依数据格式化读取字符串

    fscanf

    从文件读格式化数据

     

     


    附录19.2特殊文件输入输出

    函数名

    功能描述

    函数名

    功能描述

    imfinfo

    获得图形文件信息

    wklread

    读一Lotus123WK1数据表

    imread

    图像的文件读取

    wklwrite

    将一矩阵写入Lotus123WK1数据表文件

    imwrite

    图像的文件保存

    xlgetrange

    Excel表格文件的数据

    qrwrite

    保存一段QuickTime电影文件

    xlsetrange

    Excel文件


    附录20 位操作

    函数名

    功能描述

    函数名

    功能描述

    bitand

    位求与

    bitor

    位求或

    bitcmp

    位求补

    bitset

    位设置

    bitget

    位获取

    bitshift

    位移动

    bitmax

    求最大无符号浮点整数

    bitxor

    位异或


    附录21 复杂数据类型
    附录21.1数据类型

    函数名

    功能描述

    函数名

    功能描述

    cell

    生成单元数组

    sparse

    生成稀疏数组

    char

    生成字符串

    struct

    生成结构

    double

    转换成双精度型

    uint8

    转换成无字符号单字节整数

    inline

    生成INLINE对象

     

     


    附录21.2结构操作

    函数名

    功能描述

    函数名

    功能描述

    fieldnames

    获得结构的子段名

    rnfield

    删除结构子段

    getfield

    获得结构的子段值

    setfield

    设置结构的子段值

    isfield

    如果子段属于结构则返回真

    struct

    生成结构数组

    isstruct

    如果是结构则返回真

    struct2cell

    结构到单元数组的转换


    附录21.3多维数组操作

    函数名

    功能描述

    函数名

    功能描述

    cat

    数组连接

    permute

    任意改变矩阵维数序列

    ipermute

    任意改变矩阵维数序列

    shiftdim

    矩阵维数序列的左移变换

    ndims

    求矩阵维数

    squeeze

    去除多维数组中的一维向量

    ndgrid

    N维数组生成

     

     


    附录21.4单元数组操作

    函数名

    功能描述

    函数名

    功能描述

    cell

    单元数组生成

    iscell

    如果是单元数组则返回真

    celldisp

    显示单元数组内容

    num2cell

    将数值数组转换为单元数组

    cellplot

    单元数组内容的图形显示

    struct2cell

    将结构数组转换为单元数组

    cell2struct

    单元数组转换成结构数组

     

     


    附录21.5面向对象函数

    函数名

    功能描述

    函数名

    功能描述

    class

    生成一个对象

    methods

    显示所有方法名

    isa

    如果是某一给定类对象则返回真

    struct

    将对象转换为结构数组

    isobject

    如果是一个对象则返回真

    superiorto

    建立类间的关系检里

    inferiorto

    建立类间的关系检里

     

     


    附录22 日期与时间

    函数名

    功能描述

    函数名

    功能描述

    now

    以数字形式给出当前日期和时间

    weekday

    星期函数

    date

    以字符转形式给出当前日期

    eomday

    月末日判断函数

    clock

    以向量形式给出当前日期和时间

    cputime

    所用CPU的时间

    datenum

    日期的数字形式转换

    tic

    启动秒表计时器

    datestr

    日期的字符串形式转换

    toc

    读取秒表计时器

    datevec

    日期的向量形式转换

    etime

    使用时间函数

    calendar

    日历函数

    pause

    暂停函数


    附录23 动态数据交换

    函数名

    功能描述

    函数名

    功能描述

    ddeadv

    设置DDE连接

    dderep

    接收数据

    ddeexec

    发送要执行的串

    ddeterm

    DDE终止

    ddeinit

    DDE初始化

    ddeunadv

    释放DDE连接

    ddepoke

    发送数据

     

     

     


    展开全文
  • MatLab常见函数和运算符号

    千次阅读 2010-04-06 10:34:00
    基本运算 convhull :凸壳函数cumprod :累计积cumsum :累计和cumtrapz :累计梯形数值积分delaunay :Delaunay三角化dsearch :求最近点 (这是两个有趣的函数)factor :质数分解inpolygon :搜索多边形内的点max ...
  • MATLAB安装

    万次阅读 多人点赞 2018-07-27 18:09:11
    Matlab 2016a 安装包及破解教程百度云分享链接: 链接:https://pan.baidu.com/s/1i6BgD8p 密码:17gg   Matlab安装教程: 1、下载文件,得到R2016a_win64.part1.rar、R2016a_win64.part2.rar两部分安装文件和...
  • matlab中@的用法

    万次阅读 多人点赞 2020-09-06 12:17:52
    举例:sin是matlab中的一个函数,但sin只是函数名,还不是函数句柄,不可以用于传参。f = @sin;这行代码定义了一个函数句柄,变量名是f。这样就可以当做参数传递了(这就是上面代码中的意义所在),而且还可以跟sin...
  • 基于MATLAB的二值化图像常用的三种方法

    万次阅读 多人点赞 2016-11-24 22:25:36
    图像分割是模式识别和计算机视觉中很重要的一个部分,基于阈值的图像分割具有简单、计算量小、效率高等特点,在实际图像处理中具有广泛的应用。经过国内外学者的广泛努力,已经提出了数以百计的阈值分割的算法,依据...
  • MATLAB基础知识

    万次阅读 多人点赞 2019-03-20 17:13:44
    专题一 MATLAB基础知识 目录 1. MATLAB系统环境 2. MATLAB数值数据 3. 变量及其操作 4. MATLAB矩阵的表示 5. 矩阵元素的引用 6. MATLAB基本运算 7. 字符串处理 ------------------------------------------...
  • matlab是一个很强大的计算软件,合理使用会给我们的学习带来极大的方便之处,本人旨在提供一个零基础的matlab学习博文,供大家学习交流。谢谢大家支持。
  • ubuntu16.04安装MATLAB R2017b步骤详解(附完整文件包)

    万次阅读 多人点赞 2020-03-17 19:16:56
    本文给出MATLAB R2017b(Linux系统)的完整安装包百度云盘下载地址,逐步介绍一种简单易行的安装方法,在桌面创建快捷方式,最终完整运行。 1. 前言 最近由于项目原因,需要在ubuntu上安装MATLAB,在网上找了很久...
  • matlab中exp()函数的使用

    万次阅读 2017-10-26 19:29:53
    MATLAB中我们常常需要用到自然数对数底数 e ,需要输入e 的不同次幂,那么我们在MATLAB中具体应如何操作呢?下面通过不同的例子介绍一下。 e 下面我们通过一个例子,介绍如何如何输入自然数,在MATLAB主窗口...
  • matlab求解全局最优(初步介绍

    万次阅读 2017-08-09 22:45:03
    这里可以看到全局优化的一些经典算法举例matlab两个工具箱的比较最左上角是求解器的选项,可以在此选择不同的算法求解,不同的求解器需要输入的参数也各不相同。...下面介绍matlab的各种求解器MultiStart 并行计算
  • matlab实现自定义函数的数据拟合

    万次阅读 2016-08-02 08:47:53
    matlab版本以及问题数据介绍 本人使用的matlab为2012b,数据见下图 实现过程输入数据 打开Curve Fiting Tools 位于apps第一个工具 设置变量并输入自定义函数 输出结果 左侧为数据参数,右侧为拟合图像。
  • Matlab 和 Simulink 学习基础入门

    万次阅读 多人点赞 2018-06-11 08:55:15
    原文Matlab主要内容MATLAB介绍MATLAB矩阵运算与数据可视化MATLAB脚本、函数和实时编辑器MATLAB App 构建MATLAB数据分析:流程与优势MATLAB 学习工具与资源MATLAB是什么MATLAB是一种用于算法开发、数据可视化、数据...
  • MATLAB简介

    万次阅读 2017-06-10 17:32:56
    什么是MATLAB? 了解MATLAB ,熟练掌握简单编程,能够使用MATLAB解决常见的数学问题。
1 2 3 4 5 ... 20
收藏数 49,345
精华内容 19,738
关键字:

matlab