MATLAB数值分析应用教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-23 00:50:58

点击下载

作者:周品

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

MATLAB数值分析应用教程

MATLAB数值分析应用教程试读:

前言

MATLAB是矩阵实验室(Matrix Laboratory)的简称,是由美国MathWorks公司发布的主要面对科学计算、可视化及交互式程序设计的高科技计算环境。它以强大的科学计算与可视化功能,简单易用、开放式可扩展环境,特别是所附带的多种面向不同领域的工具箱,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具及优选平台。因此MATLAB语言被通俗地称为演算纸的科学算法语言。同时MATLAB将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象,是计算数学的主体部分。

随着科学技术的迅猛发展和生产实践的不断丰富,越来越多的数值分析问题亟待人们去解决。而计算机技术的日益丰富和提高,以及人们对计算机软件的深入研究和发展,使得这些问题的解决变得相对容易。因此,一般高等学校的绝大多数理科专业都相继开设了数值分析这门课。数值分析属于计算数学的范畴,是一门与计算机紧密结合的学科,数值分析在数学理论基础上研究各种数学问题的数值解法,主要通过算法设计程序,同时结合分析结果来解决实际问题。

本书以MATLAB软件为基础实现数值分析,具有如下特点:(1)主要介绍科学及工程中常用的算法,内容新颖、简单,参考性强,方便查阅。(2)条理清晰,语言通俗易懂,针对性强,内容涵盖范围广。如先介绍MATLAB的计算基础知识,然后由MATLAB带领读者解决数值分析中的问题。(3)理论与实践相结合。书中对所涉及的概念都进行了介绍,并通过MATLAB自带的函数、自定义编写的函数以例子形式验证相关概念,一步步带领读者领略MATLAB的强大,在挖掘MATLAB丰富宝库的同时打开并进入数值分析的大门。

本书共分10章,下面阐述每章的主要内容。

第1章:MATLAB软件使用基本介绍。主要介绍MATLAB基本功能及特点、MATLAB帮助系统、MATLAB数据类型等。

第2章:矩阵与数组。主要介绍矩阵的创建、矩阵拼接、矩阵的扩展、矩阵元素的寻访等。

第3章:元胞与结构数组。主要介绍元胞数组、结构数组等。

第4章:程序控制与矩阵分析。主要介绍程序控制流、函数类型、矩阵运算、矩阵特征量、矩阵的分解等。

第5章:数据分析。主要介绍数据排序、数据预处理、数据插值、曲线拟合等。

第6章:线性与非线性方程组的求解。主要介绍线性方程组的种类、利用MATLAB内置函数求解线性方程组、利用自定义编写函数求解线性方程组等。

第7章:数值微积分。主要介绍微分、积分、用MATLAB函数实现复合求积公式、积分变换等。

第8章:微分方程。主要介绍符号法求解常微分方程、数值法求解微分方程、MATLAB中微分方程的求解等。

第9章:偏微分方程。主要介绍偏微分方程组求解、偏微分方程的边界求解、二阶偏微分方程、偏微分方程的PDE图形界面等。

第10章:最优化设置。主要介绍优化参数设置、线性规划、非线性规划等。

本书涉及很多数学公式,按照国家标准规定,公式中的变量要用斜体字母表示,其中矩阵、矢量又要用“黑斜体”字母(斜体字母再加粗)表示;而在MATLAB函数及其代码中,变量又只能以正体字母表示。所以本书中的公式变量只能正、斜体并用。

为便于读者演示学习,本书提供主要实例的源代码,读者可登录华信教育资源网(www.hxedu.com.cn)搜索本书所在页面下载。

本书主要由周品编写,此外参加编写的还有张德丰、李晓东、丁伟雄、雷晓平、李娅、杨文茵、何正风、赵新芬、赵书梅、栾颖、刘志为、周灵、赵书兰、余智豪。

本书结构清晰、内容丰富,论述详细得当,适合MATLAB软件刚入门做进一步学习的读者阅读,也可作为广大工程技术人员、科研工作人员、理工科学生的工具用书。编著者第1章MATLAB软件使用基本介绍

MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。1.1 MATLAB软件概述

MATLAB是由美国MathWorks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域。1.1.1 MATLAB基本功能

MATLAB具有以下基本功能。

1. 友好的工作平台和编程环境

MATLAB由一系列工具箱组成。这些工具箱非常方便用户使用MATLAB函数和文件,其中许多工具箱采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。且新版本的MATLAB提供了完整的联机查询、帮助系统,极大地方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

2. 简单易用的程序语言

MATLAB为一个高级的矩阵/阵列语言,其包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

3. 强大的科学计算机数据处理能力

MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便地实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅里叶变换的复杂函数。函数所能解决的问题大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅里叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。

4. 出色的图形处理功能(1)有一系列绘图函数,可方便地输出复杂的二维、三维图形。(2)高级图形处理。如:色彩控制、句柄图形、动画等。(3)图形用户界面GUI制作工具,可以制作用户菜单和控件。使用者可以根据自己的需求编写出满意的图形界面。

5. 应用广泛的模块集合工具箱

MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通信、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。

6. 实用的程序接口和发布平台

新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。

7. 应用软件开发(包括用户界面)

在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对图形添加标注和对语句进行注释等;在输入输出方面,可以直接向Excel和HDF5进行连接。

8. 源程序的开放性

MATLAB语言有丰富的库函数和开放性,在进行复杂的数学运算时可以直接调用,而且用户文件和MATLAB的库函数在形式上是一样的,所以用户文件可以作为MATLAB的库函数来调用。因此,用户可以根据自己的需要,方便地建立新的库函数或扩充原有的库函数,以提高使用MATLAB的效率。

开放性是MATLAB十分受人们喜爱的主要原因之一,除了内部函数以外,所有的MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可以对源文件进行修改,也可加入用户自己的文件。开放性使得MATLAB成为众多领域的“专家工具”。

为了充分利用FORTRAN、C等语言的资源,包括用户已经编好的FORTRAN、C语言程序,通过建立MEX文件的形式,混合编辑,方便地调用有关FORTRAN、C语言的子程序。在MATLAB中,又增加了C/C++数学库的内容,并且加强了与Excel等应用软件的接口的功能。

9. 可以直接处理声言和图形文件

● 声言文件。如:WAV文件(例:wavread,sound等)。

● 图形文件。如:bmp、gif、pcx、tif、jpeg等文件。

10. 具有完善的联机帮助功能(1)提供十分详细的帮助文件(PDF、HTML、demo文件)。(2)联机查询指令:help指令(例:help elfun,help exp,help simulink),lookfor关键词(例:lookfor fourier)。1.1.2 MATLAB例子演示

MATLAB的应用范围非常广,包括信号和图像处理、通信、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。

下面通过介绍MATLAB几个示例让读者对MATLAB有一个概要的认识。【例1-1】在命令窗口中输入两个矩阵,进行各个矩阵运算。>> clear all;>> A=magic(3) %创建一个3阶魔方矩阵A = 8 1 6 3 5 7 4 9 2>> B=[1 8 9;6 7 12;0 3 11] %创建一个3阶矩阵B = 1 8 9 6 7 12 0 3 11>> A+B %矩阵的加法运算ans = 9 9 15 9 12 19 4 12 13>> A-B %矩阵的减法运算ans = 7 -7 -3 -3 -2 -5 4 6 -9>> flipud(A) %矩阵的上、下翻转运算ans = 4 9 2 3 5 7 8 1 6>> fliplr(A) %矩阵的上、下翻转运算ans = 6 1 8 7 5 3 2 9 4【例1-2】利用MATLAB绘制三维切片图。>>clear all;[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);v = x.*exp(-x.^2-y.^2-z.^2);xslice = [-1.2,.8,2]; yslice = 2; zslice = [-2,0];slice(x,y,z,v,xslice,yslice,zslice)colormap hsvset(gcf,'color','w')

运行程序,效果如图1-1所示。图1-1 切片图【例1-3】对给定的数据进行拟合。>> clear all;n = 7;x = rand(n,1);y = rand(n,1);plot(x,y,'.')axis([0 1 0 1])t = 1:n;ts = 1:1/10:n;xs = spline(t,x,ts);ys = spline(t,y,ts);hold onplot(xs,ys,'r');hold off

运行程序,效果如图1-2所示。图1-2 数据的拟合效果【例1-4】绘制4个首尾相接的圆环。>> clear all;ab = [0 2*pi];rtr = [6 1 1];pq = [10 50];box = [-6.6 6.6 -6.6 6.6 -3 3];vue = [200 70];tube('xylink1a',ab,rtr,pq,box,vue)colormap(jet);hold ontube('xylink1b',ab,rtr,pq,box,vue)tube('xylink1c',ab,rtr,pq,box,vue)tube('xylink1d',ab,rtr,pq,box,vue)hold off;

运行程序,效果如图1-3所示。4个首尾相接的圆环1.2 MATLAB帮助系统

作为一种高级语言和一个成熟的工程软件,MATLAB为用户提供了详细完善的帮助系统。养成经常查阅帮助系统的习惯,对于熟练掌握MATLAB的各项强大功能是十分必要的。随着MATLAB版本的不断更新,MATLAB的帮助文档也在不断地改进和完善。在早期的版本中,由于MATLAB的图形用户接口(GUI)还没有出现,所以用户只能在命令窗口中使用help命令和lookfor命令来查看帮助文本,而MATLAB7.0以后版本都提供了以下4种帮助方式:● 联机帮助系统;● 命令窗口查询帮助系统;● 联机演示系统;● 远程帮助系统。

下面将分别对这4大类的前两类进行详细介绍。1.2.1 联机帮助系统

MATLAB的联机帮助非常系统、全面,简直就是一本MATLAB的百科全书。进入联机帮助系统的方法有以下4类:● 单击桌面工具栏中的问号按钮“”;● 按“F1”键;● 在主窗口中单击“Help”菜单下的【Demos】、【About

MATLAB】、【Using the Desktop】、【Using the Command

Window】中的任一选项;● 在命令窗口中输入“helpwin”、“helpdesk”、“doc”,都可以打

开帮助窗口,帮助窗口如图1-4所示。图1-4 帮助窗口

MATLAB R2011a的帮助窗口与以往MATLAB的帮助窗口都有所不同,以往的MATLAB帮助窗口中有4个标签,分别为【Contents】(帮助主题)、【Search Index】(索引帮助)、【Results】(查寻帮助)、【Demos】(演示帮助)。而在图1-4的MATLAB R2011a的帮助窗口中只有两个标签,分别为【Contents】(帮助主题)、【Search Results】(搜索结果)。

当知道要查寻内容的所属主题或想要学习某个主题的内容时,可以用【Contents】。知道了某个问题的关键词时,多数用【Search Results】,这时一般在文本编辑框“Search”中输入关键词就可以查寻。

用【Contents】获取帮助时,帮助窗口分为左右两个小窗口,单击左边小窗口中的某个主题,就会在右边的小窗口中显示出相应的帮助内容。图1-5所示的就是左边的小窗口中选择【MATLAB】选项下的【Functions】子选项下的【Mathematics】子选项下的【Elementary Math】主题,在右边的小窗口中显示出这一主题下的帮助内容。图1-5 帮助主题

用【Search Results】获取帮助时,左边是两个小窗口(分别为搜索小窗口和查询结果目录窗口),右边是一个大窗口(显示查询结果窗口)。如在“Search”窗口中输入“sin”函数,回车,即图1-6为用联机帮助查询sin函数效果。图1-6 sin函数查询结果1.2.2 命令帮助系统

熟练的用户可以使用更为快捷的命令窗口查询帮助。这些帮助主要可以分为help系列、lookfor系列与其他常用帮助命令。

1. help系列

help系列的帮助命令有help、help+函数(类)名、helpwin及helpdesk。其中后两者是用来调用联机帮助窗口的。下面对help、help+函数(类)名这两个命令作介绍。

1)help

help命令是最常用的命令。在命令窗口中直接输入help命令将会显示当前的帮助系统中所包含的所有项目,以及搜索路径中所有的目录名称,如下所示:>> helpHELP topics:My Documents\MATLAB - (No table of contents file)matlab\general - General purpose commands.matlab\ops - Operators and special characters.matlab\lang - Programming language constructs.matlab\elmat - Elementary matrices and matrix manipulation.…… ……xpcblocks\thirdpartydrivers - (No table of contents file)build\xpcblocks - xPC Target -- Blocksxpc\xpcdemos - xPC Target -- demos and sample script files.kernel\embedded - xPC Target Embedded Option>> help hlephlep not found.Use the Help browser Search tab to search the documentation, ortype "help help" for help command options, such as help for methods.

2)help+函数(类)名

在实际应用中,这是最有用也最常用的一个帮助命令,可以辅助用户进行深入学习与应用。【例1-5】利用help命令查询elmat(类)名的帮助。>> help elmat >> help elfun Elementary math functions. Trigonometric. sin - Sine. sind - Sine of argument in degrees. sinh - Hyperbolic sine. asin - Inverse sine. asind - Inverse sine, result in degrees. asinh - Inverse hyperbolic sine. cos - Cosine. cosd - Cosine of argument in degrees. cosh - Hyperbolic cosine. …… …… Rounding and remainder. fix - Round towards zero. floor - Round towards minus infinity. ceil - Round towards plus infinity. round - Round towards nearest integer. mod - Modulus (signed remainder after division). rem - Remainder after division. sign - Signum.help+函数名【例1-6】利用help命令查询power函数的帮助。>> help power .^ Array power. Z = X.^Y denotes element-by-element powers. X and Y must have the same dimensions unless one is a scalar. A scalar can operate into anything. C = POWER(A,B) is called for the syntax 'A .^ B' when A or B is an object. See also mpower, nthroot, realpow. Overloaded methods: gf/power codistributed/power fints/power xregcovariance/power Reference page in Help browser doc power

2. lookfor命令

当用户知道某函数名而不知其用法时,help命令可以帮助用户正确地了解此函数的用法。然而,如果想查找一个不知道其确切名称的函数名时,help命令就显得无能为力了。这时就需要lookfor命令出马了。可以用lookfor命令来查询根据用户提供的关键字搜索相关的函数。其调用格式为:

lookfor abc:系统按照已设置的MATLAB路径在所有文件中查找字符串abc。对每个文件首部注释行的第一行所描述的帮助信息进行扫描。若在该行中找到字符串abc,则将其所在的文件名以及所在行显示在屏幕上。

lookfor abc -all:与lookfor abc类似,但查找范围扩大为每个文件首部的第一个注释块。【例1-7】利用lookfor命令查询power函数的帮助信息。>> lookfor powerlocaltruncps - Constructor for truncated power series modelmpower - ^ Matrix power.power - .^ Array power.nextpow2 - Next higher power of 2.pow2 - Base 2 power and scale floating point number.realpow - Real power.normest1 - Estimate of 1-norm of matrix by block 1-norm power method.…… ……rootmusic - Computes the frequencies and powers of sinusoids via thedeterministicsignalpower - Measuring the Power of Deterministic Periodic Signalspsddemo - Power Spectral Density.power_demopad - Power Converter Tuningsldvdemo_powerwindow_vs_script - Power Window Controller Temporal Propertiessampsizepwr - Sample size and power calculation for hypothesis test.

3. which命令

which命令用于查找指定函数和文件的目录。其调用格式如下:

which fun:显示指定fun的全部路径和文件名。其中fun可以是工作空间的变量、内置函数、已经加载的Simulink模型或者Java类的方法。

which fun -all:显示所有名为fun的函数路径。

which file.ext:显示指定文件的全路径名称。

which fun1 in fun2:显示在m文件fun2中出现的函数fun1的路径名称。

which fun(a, b, c, ...):显示指定的带有输入参数a, b, c,…的函数fun的路径。

s=which(...):把查询结果返回给字符串s,而不是输出到屏幕上。当fun为内置函数时,s的内容为'built-in'。

w=which(..., '-all'):返回多项式搜索方法的结果。w是个细胞数组,它包含通常在屏幕上输出的路径字符串。【例1-8】利用which命令查询zeros帮助信息。>> which power%局部方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@single\power) %说明power函数是MATLAB的内置函数>> which power -allbuilt-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@single\power) % 单精度方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@double\power) % 单精度方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@char\power) % 字符方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@int64\power) % int64 方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@int32\power) % int32方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@int16\power) % int16方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@int8\power) % int8方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@uint64\power) % uint64 方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@uint32\power) % uint32 方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@uint16\power) % uint16 方法built-in (C:\Program Files\MATLAB\R2011a\toolbox\matlab\ops\@uint8\power) % uint8 方法C:\Program Files\MATLAB\R2011a\toolbox\comm\comm\@gf\power.m % gf 方法C:\Program Files\MATLAB\R2011a\toolbox\distcomp\parallel\@codistributed\power.m %用户自定义方法C:\Program Files\MATLAB\R2011a\toolbox\finance\ftseries\@fints\power.m % fints 方法C:\Program Files\MATLAB\R2011a\toolbox\mbc\mbcmodels\@xregcovariance\power.m % xregcovariance 方法1.2.3 联机演示系统

MATLABR2011a的联机演示系统可通过以下3种方式打开:● 在主窗口的“help”菜单下选择“Demos”选项;● 在帮助目录窗口选择“Demos”表单;● 在命令窗口输入“demo”命令。

打开后的联机演示窗口如图1-7所示。图1-7 联机演示窗口

在联机演示窗口的左边是帮助向导页面Demos表单窗口,在左边选择所需表单时,右边显示表单相应的例子。单击图1-7中右上角的“Product page at mathworks.com”跳转按钮,即链接到MATLAB在线网站,对MATLAB进行相关介绍。

单击图1-7中的“Getting Started with MATLAB(5min, 18 sec)”按钮,跳转到如图1-8所示的界面。图1-8 Getting Started with MATLAB(5min, 18 sec)界面

单击图1-8中右上角的“Run this demo”按钮,可弹出在线视频讲解及演示该例子。1.2.4 远程帮助系统

MATLAB R2011a的远程帮助系统由网络资源(Wb Resources)和更新检查(Check for Updates)两部分组成,可通过主窗口中的“Help”菜单选择打开这两个选项。“Wb Resources”中只要用户选择某一项链接就可以直接链接到相应的网站或网页。更新检查选项用来进行MATLAB各组件的更新检查和更新。当用户的计算机联网并选择了该项后,稍后(与计算机配置和网络速度有关)帮助系统会弹出如图1-9所示的对话框,即系统经过远程查询以后告诉用户目前各组件的安装版本是不是最新版本,如果是,则显示“Up to date”;如果不是,则显示当前的最新版本号。如果没有找到该组件,则显示“Not found‘。图1-9 更新检查对话框1.3 常量与变量1.3.1 常量

常量,在MATLAB中习惯称之为特殊变量,即系统自定义的变量,它们在MATLAB启动以后驻留在内存里面。在MATLAB R2011a中常用的特殊变量如表1-1所示。表1-1 MATLAB常用特殊变量表

在MATLAB的命令窗口中输入一个表达式或一组数据,系统将会自动把计算结果赋值给ans变量。【例1-9】在命令窗口中计算tan(2*pi)。>> pians = 3.1416>> tan(2*pi)ans = -2.4493e-0161.3.2 变量

变量,即为一个值(数值,字符串,数值)指定的名称。当一个值存在于内存时,不可能直接从内存中访问该值,只能通过其名称来访问其的值。

变量,是要变化的,在程序运行中它的值可能会改变。

MATLAB不需要事先声明变量,也不需要任何维数语句声明数组。当MATLAB遇到一个新变量名时,自动建立变量并分配适当的存储空间。

MATLAB变量名必须以字符开头,是字母和数字的任意组合,允许使用下划线。除此之外,命名变量还应遵循以下规则:● 理论上,变量名可任意长度,但只使用前面的63个字符;● 不能使用函数名和系统保留字;● 不能用i与j,这两个字符是MATLAB复数专用的;● 大小写字符是不同的。

为了避免使用不同合法的变量名,在MATLAB中提供了isvarname函数用于验证函数名。其调用格式为:tf = isvarname('str')isvarname str【例1-10】利用isvarname函数验证各函数名是否正确。>> isvarname fooans = 1 %返回值为1,函数名合法>> isvarname 1th_columnans = 0 %返回值为0,函数名非法>> d = date;isvarname(['Monday_', d(1:2)])ans = 1 %返回值为1,函数名合法1.4 MATLAB数据类型

MATLAB的数值计算是以数组为基本单元的,而MATLAB数据类型的最大特点是每一种类型都以数组为基础。事实上,MATLAB也是把每种类型的数据作为数组来处理。

数据类型是掌握任何一门编程语言都必须首先了解的内容。MATLABR2011a的数据类型主要有:逻辑、数值、字符串、矩阵、元胞、Java、函数句柄、稀疏以及结构等类型。1.4.1 数值型

数值型又分为单精度型、双精度型以及整数型。而整数类型里又分为无符号型(uint8、uint16、uint32、uint64)和符号类型(int8、int16、int32、int64)两种。

1. 整数类型

有符号整数和无符号整数的不同在于前者必须有一位来表示符号位,而后者则不需要。因此,有符号整数不仅可以表示正整数和零,还可以表示负整数,而无符号整数却只能表示正整数和零。表1-2列出了各种整数类型的名称及其表示的数据范围以及相应的转换函数。对于一个整数,MATLAB支持多种整数存储方式,这与各种整数类型的存储范围有关。以整数100为例,其可以用整数类型中的任何一种类型存储,但用户可以根据需要,选择最适合的存储类型int8,即单字节无符号整数类型存储。这样选择的好处是可以尽量节省内存空间,以便提高程序调用和运算速度。表1-2 MATLAB中的整数类型

不同的整数类型所占用的位数不同,因此所能表示的数值范围不同,在实际应用中,应该根据需要的数据范围选择合适的整数类型。有符号的整数类型拿出一位用来表示正负,因此表示的数值范围和相应的无符号整数类型不同。

由于MATLAB中数值的默认存储类型是双精度浮点类型,因此,必须通过表1-2中列出的转换函数将双精度浮点数值转换成指定的整数类型。在转换过程中,MATLAB默认将待转换数值转换为最接近的整数,如果小数部分正好为0.5,那么MATLAB转换后的结果是绝对值较大的那个整数。另外,应用这些转换函数也可以将其他类型转换成指定的整数类型。【例1-11】通过转换函数创建整数类型。>> clear all; %清除MATLAB原空间变量>>a=109; b=111.264; c=-23.19;>> A=int8(a) %将double型的a强制转换成int8型A = 109>> B=int16(b) B = 111>> C=int32(c)C = -23>> str='MATLAB~~~!!' str =MATLAB~~~!!>> D=int8(str) %将字符串型的变量强制转换成int8型D = 77 65 84 76 65 66 126 126 126 33 33>> whos %查看各变量类型 Name Size Bytes Class Attributes A 1x1 1 int8 B 1x1 2 int16 C 1x1 4 int32 D 1x11 11 int8 a 1x1 8 double b 1x1 8 double c 1x1 8 double str 1x11 22 char

MATLAB中还有多种取整函数,可以用不同的策略把浮点小数转换成整数,如表1-3所列。表1-3 MATLAB中的取整函数

整数类型参与的数学运算与MATLAB中默认的双精度浮点运算不同。当两种相同的整数类型进行运算时,结果仍然是这种整数类型;当一个整数类型数值与一个双精度浮点类型数值进行数学运算时,计算结果是这种整数类型,取整采用默认的四舍五入(round)方式。需要注意的是,两种不同的整数类型之间不能进行数学运算,除非提前进行强制转换。【例1-12】数据的取整。>> clear all;>> a = [-1.9, -0.2, 3.4, 5.6, 7, 2.4];>> A=round(a)A = -2 0 3 6 7 2>> B=ceil(a)B = -1 0 4 6 7 3>> C=fix(a)C = -1 0 3 5 7 2>> D=floor(a)D = -2 -1 3 5 7 2

2. 浮点数类型

MATLAB中提供了单精度浮点数类型和双精度浮点数类型,它们在存储位宽、各数据位的用处、表示的数值范围、数值精度等方面都不相同,如表1-4所列。表1-4 MATLAB的单精度浮点数和双精度浮点数的比较

从表1-4可看出,存储单精度浮点类型所用的位数较少,因此内存占用上开支小,但从各数据位的用处来看,单精度浮点数能够表示的数值范围和数值精度都比双精度小。

MATLAB中默认的数据类型为双精度浮点类型。【例1-13】浮点数据转换函数演示。>> clear all;>> a=6.398;>> A=single(a) %把doulbe型的变量强制转换为single型并赋值给AA = 6.3980>> b=uint32(10056);>> B=double(b)B = 10056>> whos Name Size Bytes Class Attributes A 1x1 4 single B 1x1 8 double a 1x1 8 double b 1x1 4 uint32

为双精度浮点数参与运算时,返回值的类型依赖于参与运算中的其他数据类型。

双精度浮点数与逻辑型、字符型进行运算时,返回结果为双精度浮点类型;而与整数型进行运算时返回的结果为相应的整数类型,与单精度浮点型运算返回单精度浮点型。

单精度浮点型与逻辑型、字符型和任何浮点型进行运算时,返回结果都是单精度浮点型。需要注意的是,单精度浮点型不能和整数型进行算术运算。【例1-14】浮点型参与的运算。>> clear all;>> a=uint16(256);b=single(32.548);z=120.19;>> A=a*b??? Error using ==> timesIntegers can only be combined with integers of the same class, or scalar doubles. >> B=a*zB = 30769>> C=b*zC = 3.9119e+003>> str='MATLAB~~';>> STR1=str-32STR1 = 45 33 52 44 33 34 94 94>> whos Name Size Bytes Class Attributes B 1x1 2 uint16 C 1x1 4 single STR1 1x8 64 double a 1x1 2 uint16 b 1x1 4 single str 1x8 16 char z 1x1 8 double

3. 复数

MATLAB中,复数由独立的两部分:实部和虚部组成,其基本形式为a+bi,其中i为虚数符号,是-1的算术平方根,由于表示习惯的不同也可以用j来表示虚数符号。【例1-15】创建复数。>> a=pi+5ia = 3.1416 + 5.0000i>> b=pi+5*jb = 3.1416 + 5.0000i>> a==b %比较a,b是否相同,返回1即表相同,0表不同ans = 1

由以上结果可知:(1)虚数符号i和j在MATLAB中代表相同的意义。(2)复数虚部的表示既可以是5i,也可以是5*i。(3)单个复数间的比较是对应项之间进行比较,即实部与实部比较,虚部与虚部比较。如果是复数构成的矩阵间的比较,则是对应元素的对应项的比较。(4)用“==”比较两个复数时,其返回值为0或1,当返回值为1时,表示真,即两个复数相等;当返回值为0时,则两个复数不等。

在MATLAB中,还有多种对复数操作的函数,如表1-5所列。表1-5 MATLAB中复数相关操作函数【例1-16】复数的操作函数。>> x=rand(3)x = 0.8147 0.9134 0.2785 0.9058 0.6324 0.5469 0.1270 0.0975 0.9575>> y=rand(3)*-3y = -2.8947 -2.8715 -0.4257 -0.4728 -1.4561 -1.2653 -2.9118 -2.4008 -2.7472>> z=complex(x,y) %创建复数矩阵zz = 0.8147 - 2.8947i 0.9134 - 2.8715i 0.2785 - 0.4257i 0.9058 - 0.4728i 0.6324 - 1.4561i 0.5469 - 1.2653i 0.1270 - 2.9118i 0.0975 - 2.4008i 0.9575 - 2.7472i>> zr=real(z) %提取复数矩阵z的实部zr = 0.8147 0.9134 0.2785 0.9058 0.6324 0.5469 0.1270 0.0975 0.9575>> zi=imag(z) %提取复数矩阵z的虚部zi = -2.8947 -2.8715 -0.4257 -0.4728 -1.4561 -1.2653 -2.9118 -2.4008 -2.7472>> za=abs(z) %求复数矩阵z的模za = 3.0071 3.0133 0.5087 1.0218 1.5875 1.3784 2.9145 2.4028 2.9093>> zan=angle(z) %求复数矩阵z的相角zan = -1.2964 -1.2628 -0.9914 -0.4811 -1.1611 -1.1628 -1.5272 -1.5302 -1.2354

4. 无穷量与非数

MATLAB中用Inf和-Inf分别代表正无穷和负无穷,用NaN表示非数值的值。正负无穷的产生一般是由于0做了分母或者运算溢出,产生了超出双精度浮点数数值范围的结果;非数值量则是因为0/0或者Inf/Inf型的非正常运算。需要注意的是,两个NaN彼此是不相等的。

除了运算造成这些异常结果外,MATLAB也提供了专门函数可以创建这两种特别的量,读者可以用Inf函数和NaN函数创建指定数值类型的无穷量和非数值量,默认是双精度浮点类型。【例1-17】无穷量和非数值量。>> x=1/0x = Inf>> y=exp(1000)y = Inf>> z=log(0)z = -Inf>> v=infv = Inf>> a=0/0a = NaN>> b=NaNb = NaN>> c=NaN('single') %创建单精度浮点类型的非数值量c = NaN>> m=3i/0m = 0 + Infi>> a==bans = 01.4.2 逻辑类型

MATLAB中逻辑数据类型用“0”和“1”分别代表逻辑“假”和“真”状态。在MATLAB中存在一些函数和符号,如表1-6所列,通过返回逻辑“真”或逻辑“假”作为某种条件可否执行的判断依据,例如:>> clear all;str='MATLAB is good!'; %创建字符串strif ~isempty(str) && ischar(str) %判断str是否为空,是否为字符串类型 sprintf('Input string is''%s''',str)end

运行程序,输出如下:ans =Input string is'MATLAB is good!'表1-6 MATLAB的常用逻辑类型

逻辑类型数据常以标量形式出现,但有时也可以是逻辑数组(Logical Array)。采用true和false可以直接创建逻辑向量,只需将向量的每一个元素置为true或false即可,true和false分别代表逻辑真和逻辑假。【例1-18】创建逻辑类型。>> clear>> a=[true true false false true]a = 1 1 0 0 1>> x=randn(4)>0.9 %通过逻辑运算符可以生成逻辑矩阵x = 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0>> whos Name Size Bytes Class Attributes a 1x5 5 logical x 4x4 16 logical >> x=[1 4.7 pi nan inf 10];>> isinf(x) %生成逻辑向量ans = 0 0 0 0 1 0>> whos ans Name Size Bytes Class Attributes ans 1x6 6 logical 1.4.3 字符与字符串

使用MATLAB进行工作和学习时,用户不可避免会遇到诸如文本处理、字符显示等。字符串是以向量的形式来存储的,其每个元素中存放的是字符的内部代码(ASCII码),当在屏幕上显示字符变量的值时,将显示文本,而不是ASCII数字,故用户可以对显示的字符进行直接操作。

在MATLAB中,字符和字符串分别用char和string表示,MATLAB中的char类型都是以2个字节的Unicode统一字符编码来存储的,一般用单引号括注一个字符变量,如下代码所示:>> a='v'a =v

在MATLAB中,对于每个字符,系统都有其对应的ASCII数值。一般情况下,用户可以不用关心此数值,而直接针对显示的字符进行操作。如果用户需要获得此数值,可以调用abs函数,例如,对于字符'b',调用abs指令,得到其对应底层ASCII数值为96;而字符'B'对应的数值则为66,如下代码所示。如需查询ASCII数值对应的字符类型数据,则可以调用char函数。>> abs('b')ans = 98>> abs('B')ans = 66>> char(98)ans =b>> char(66)ans =B

字符串是1×n的字符类型数组,是单引号括注的一系列字符的组合,每个字符都是该字符串的一个元素,如果字符串本身包含单引号,需要双写此单引号,否则会产生错误,如下代码所示:>> a='this is a string containing''A''' %字符串本身为this is a string containing'A'a =this is a string containing'A'>> a='this is a string containing'A''??? a='this is a string containing'A'' |Error: Unexpected MATLAB expression.

1. 创建字符数组

在MATLAB中,用户可以运用两种不同的方式表示字符串,即字符数组和字符串元胞,有关字符串元胞的概念将在下面章节介绍。在此主要介绍用字符数组的方式创建字符串的方法。例如,以字符数组的形式创建一个字符串:>> a='the MATLAB is...'a =the MATLAB is...

说明:(1)字符串可以包含标点符号。(2)建立二维字符数组时,字符数组要求每行字符含有相同的列。当多个字符串具有相同长度时,为了避免出现错误,用户需要在短字符串的尾部添加空格来强制保证字符串等长。【例1-19】将短字符串合并成长字符串。>> %在'abc'和'abcd'的末尾分别补2个和1个空格>> A=['abc ';'abcd ';'abcde']A =abc abcd abcde>> %不在字符串后补空格,直接合并不同长度的字符串,系统报错,提示用户每行列数不等>> B=['abc';'abcd';'abcde']??? Error using ==> vertcatCAT arguments dimensions are not consistent.%利用char创建字符数组,可按照最长字符串的长度,自动把长度不够的字符串末尾补空格,使所有的字符串长度相同。与函数char相反,如果用户希望从一个字符数组中抽取某一字符串,可以调用deblank函数>> C=char('talent',' +','hard-working')C =talent + hard-working>> D=deblank(C(3,:))D =hard-working

2. 字符串比较

MATLAB中,如果需要进行字符串或字符串的比较,可以有以下

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载