China-pub.coM 下载 第2章 MATLAB启动 首先描述如何启动和如何退出MATLAB,这一点很重要。然后描述如何进行分配和计算, 也演示如何储存结果、获得帮助和定义你自己的函数。本章的部分内容对MATLAB老用户可 以跳过不读,但是,建议快速浏览本章,也建议参见附录A“MATLAB初步”。 2.1启动和退出MATLAB 不同的计算机系统,MATLAB的启动也不一样。在Vindows和Macintosh系统中,程序通常通 过点击一个图标而启动。在UNX系统中,程序是通过在命令行系统提示符后键入如下字符启动: matlab 如果上述工作有问题,可请教系统管理员。当启动MATLAB时,如果matlabrc.m和 startup.m文件存在,则执行这些文件。在这些文件中,为满足个人需要,用户可以给定命令 以调整MATLAB,例如,constants,用于设置图形等。在一个多用户系统上,系统管理员存储 matlabre.m文件,但你也能为自己的使用创建文件startup.m,参见例2.20(c)。 要退出MATLAB,键入quit或exit。 命令集1 退出和中断 exit,quit 结束MATLAB会话。程序完成,如果没有明确保存,则变量中的 数据丢失。参见2.8节。 Ctrl-c 中断一个MATLAB任务。例如,当MATLAB正在计算或打印时, 中断一个任务,但会话并没有结束。 除此之外,对一些系统有指定的菜单选择。例如,在Windows和Macintosh系统中,在文 件菜单下可以找到选项quit。 当编辑或执行MATLAB时,下列的快捷键十分有用。通常因为不同的平台使用不同的键, 因此,给定了一些替换键。在你的系统上试一下这些键,注意哪些键组合使用。 命令集2 特殊的功能键 ↑或ctr1p 恢复前面的命令。 ↓或ctr1n 恢复当前命令之后键入的命令。 →或Ctr1_f 向右移动一个字符。 -或Ctrl_b 向左移动一个字符。 Delete,Backspace删除字符。 Ctr11或Ctr1 向左移动一个字。 Ctr1_r或Ctr1_ 向右移动一个字
下载 第2章 M AT L A B启动 首先描述如何启动和如何退出 M AT L A B,这一点很重要。然后描述如何进行分配和计算, 也演示如何储存结果、获得帮助和定义你自己的函数。本章的部分内容对 M AT L A B老用户可 以跳过不读,但是,建议快速浏览本章,也建议参见附录 A“M AT L A B初步”。 2.1 启动和退出M AT L A B 不同的计算机系统,M AT L A B的启动也不一样。在Windows 和M a c i n t o s h系统中,程序通常通 过点击一个图标而启动。在U N I X系统中,程序是通过在命令行系统提示符后键入如下字符启动: m a t l a b 如果上述工作有问题,可请教系统管理员。当启动 M AT L A B时,如果 m a t l a b rc . m和 s t a rt u p . m文件存在,则执行这些文件。在这些文件中,为满足个人需要,用户可以给定命令 以调整M AT L A B,例如,c o n s t a n t s用于设置图形等。在一个多用户系统上,系统管理员存储 m a t l a b rc . m文件,但你也能为自己的使用创建文件 s t a rt u p . m,参见例2 . 2 0 ( c )。 要退出M AT L A B,键入q u i t或e x i t。 命令集1 退出和中断 e x i t,q u i t 结束M AT L A B会话。程序完成,如果没有明确保存,则变量中的 数据丢失。参见2 . 8节。 C t r l - c 中断一个 M AT L A B任务。例如,当 M AT L A B正在计算或打印时, 中断一个任务,但会话并没有结束。 除此之外,对一些系统有指定的菜单选择。例如,在 Wi n d o w s和M a c i n t o s h系统中,在文 件菜单下可以找到选项q u i t。 当编辑或执行M AT L A B时,下列的快捷键十分有用。通常因为不同的平台使用不同的键, 因此,给定了一些替换键。在你的系统上试一下这些键,注意哪些键组合使用。 命令集2 特殊的功能键 ↑或 C t r l_p 恢复前面的命令。 ↓或 C t r l_n 恢复当前命令之后键入的命令。 →或 C t r l_f 向右移动一个字符。 ←或 C t r l_b 向左移动一个字符。 Delete, Backspace 删除字符。 C t r l_l 或 C t r l_← 向左移动一个字。 C t r l_r 或 C t r l_→ 向右移动一个字
12 China-pu5.com ATLAB5手册 载 Ctrl_a或Home 移动到行的第一个字符。 Ctrl_e 移动到行尾。 Ctrl_k 删除到行尾。 cedit 在不同的快捷键间转换。键入help cediti可得到更多的信息。 2.2 MATLAB中矩阵和多维矩阵介绍 MAⅡLAB中数据的基本格式是矩阵。二维矩阵是一个带有以行和列排列的元素的矩形表。如果 有m行、n列,这个矩阵的大小就是m×n。多维矩阵的维数大于2,就是说其大小为mXn×…Xp。 ■例2.1 一个2×3的矩阵如下: 第1行是(123》,第2列是()。 ■ 矩阵的元素,即数a,通常是实数,但也可以是复数。一个a,是指第行、第j列的数。在 例2.1中,有a2=4。在本章,仅涉及数值矩阵,即矩阵包含的仅是数字。包含字符文本的矩阵 (见命令集4)和细胞矩阵,在5.5节中介绍,这些矩阵包含了不同类型的数据。 当矩阵仅由一行组成时,它是一个特例,就是一个行向量。如果矩阵仅有一列,就是一 个列向量。向量是矩阵的特例。向量中元素的数量是向量的长度。 如果矩阵的维数是1×1,它是一个标量,即是一个数。 在MATLAB中,一个变量可以通过给它分配一个值来定义,如下所示: variable =expression 在expression之后按回车键。表达式可以是由数字、变量、操作符和函数等组成。 定义一个变量的另一个方法是输入expression项,然后MATLAB对预定义变量ans(answer 的缩写)分配这个表达式值。 二维矩阵的分配可以有多种方法实现。最简单的方法是由方括号(参见help paren)包围的 逐行给定元素。如果定义一个标量,则方括号就不需要了。 相同行中的元素是由一行或多个空格‘’或一个逗号‘,’分隔,列由分号‘;或回车键分 隔。没有结尾分号的每个命令在屏幕上显示出其结果。若结尾带分号,就执行计算,但计算结 果并不显示。在MATLAB中使用的标点符号的一览表可以通过输入help punc得到。 一个变量的值可以通过输入它的名字和按回车键获得,MATLAB以显示这个变量的名字 和值作为回答。如果这个变量并不存在,就显示一个错误信息。显示一个变量内容的另一个 方法可参见5.1.3节。 一个矩阵或一个向量的指定元素是由指定它的索引来决定。例如:二维矩阵: variable (rowIndex,columnIndex) 如果这个变量是一个向量,就只允许有一个索引。如何处理多维矩阵将在例2.3中讨论
C t r l_a 或 H o m e 移动到行的第一个字符。 C t r l_e 移动到行尾。 C t r l_k 删除到行尾。 c e d i t 在不同的快捷键间转换。键入help cedit可得到更多的信息。 2.2 MAT L A B中矩阵和多维矩阵介绍 M AT L A B中数据的基本格式是矩阵。二维矩阵是一个带有以行和列排列的元素的矩形表。如果 有m行、n列,这个矩阵的大小就是m×n。多维矩阵的维数大于2,就是说其大小为m×n×…×p。 ■ 例2 . 1 一个2×3的矩阵如下: 第1行是(1 2 3),第2列是 。 矩阵的元素,即数 ai j,通常是实数,但也可以是复数。一个 ai j是指第i行、第j列的数。在 例2 . 1中,有a2 1= 4。在本章,仅涉及数值矩阵,即矩阵包含的仅是数字。包含字符文本的矩阵 (见命令集4 )和细胞矩阵,在5 . 5节中介绍,这些矩阵包含了不同类型的数据。 当矩阵仅由一行组成时,它是一个特例,就是一个行向量。如果矩阵仅有一列,就是一 个列向量。向量是矩阵的特例。向量中元素的数量是向量的长度。 如果矩阵的维数是1×1,它是一个标量,即是一个数。 在M AT L A B中,一个变量可以通过给它分配一个值来定义,如下所示: variable = e x p r e s s i o n 在e x p r e s s i o n之后按回车键。表达式可以是由数字、变量、操作符和函数等组成。 定义一个变量的另一个方法是输入 e x p r e s s i o n项,然后M AT L A B对预定义变量a n s( a n s w e r 的缩写)分配这个表达式值。 二维矩阵的分配可以有多种方法实现。最简单的方法是由方括号 [ ] (参见help paren)包围的 逐行给定元素。如果定义一个标量,则方括号就不需要了。 相同行中的元素是由一行或多个空格‘’或一个逗号‘,’分隔,列由分号‘; ’或回车键分 隔。没有结尾分号的每个命令在屏幕上显示出其结果。若结尾带分号,就执行计算,但计算结 果并不显示。在M AT L A B中使用的标点符号的一览表可以通过输入help punct得到。 一个变量的值可以通过输入它的名字和按回车键获得, M AT L A B以显示这个变量的名字 和值作为回答。如果这个变量并不存在,就显示一个错误信息。显示一个变量内容的另一个 方法可参见5 . 1 . 3节。 一个矩阵或一个向量的指定元素是由指定它的索引来决定。例如:二维矩阵: variable (rowIndex, columnIndex) 如果这个变量是一个向量,就只允许有一个索引。如何处理多维矩阵将在例 2 . 3中讨论。 1 2 M ATLAB 5 手册 下载下载 ■
China-bub.coM 第2章MATLAB启动 13 下载 ■例2.2 (a)一个标量的指定。如果写入x=7,则在屏幕上打印如下: X= 7 (b)如果仅写入7,则结果变为: ans= 7 (©)2×3维情况下一个矩阵的定义可以通过逐行给出其元素: A=[123 456] 还在屏幕上给出如下结果: A= 123 456 ()也可以在同一行上用分号来分隔行以给出所有的元素: A=[1234563 在命令后的一个分号禁止打印出结果。 (e)一个行向量和一个列向量的定义: rowvec:=【1.23.24]: co1vec=【2.7;3.4-9.2]: ()显示一个变量的值。输入colvec,MATLAB显示: colvec= 2.7000 3.4000 -9.2000 (g)逐个元素地分配矩阵: B(1,1)=1: B(1,2)=7: B(2,1)=-5: B(2,2)=0 得到的结果是: B= 17 -50 ■ 三维矩阵和其他数据结构在函数自变量中依次使用行、列和页维数次序。对于多维矩阵 有两个索引原理,最自然的就是矩阵索引,它给出了每个元素在每一维中的一个位置,例如, 在上例中的行和列的索引。图2-1给出了可视化的3×3×2的三维矩阵的不同元素的索引。 另一个索引原理是线性索引方法。一些命令把整个矩阵说明为一个长列元素,例子之一 是reshape(详见命令集37)。如果所有的元素被放在一行上,那么对各元素给定的一个线性索 引号说明了一个指定矩阵的索引给出的某个位置,如图2-2所示。 创建一个多维矩阵有多种方法
■ 例2 . 2 ( a )一个标量的指定。如果写入 x= 7,则在屏幕上打印如下: x = 7 (b) 如果仅写入7,则结果变为: a n s = 7 (c) 2×3维情况下一个矩阵的定义可以通过逐行给出其元素: A=[1 2 3 4 5 6] 还在屏幕上给出如下结果: A = 1 2 3 4 5 6 (d) 也可以在同一行上用分号来分隔行以给出所有的元素: A=[ 1 2 3;4 5 6]; 在命令后的一个分号禁止打印出结果。 ( e )一个行向量和一个列向量的定义: rowvec=[1.2 3.2 4]; colvec=[2.7; 3.4; -9 . 2 ] ; (f) 显示一个变量的值。输入c o l v e c,M AT L A B显示: c o l v e c= 2 . 7 0 0 0 3 . 4 0 0 0 -9 . 2 0 0 0 (g) 逐个元素地分配矩阵: B ( 1,1 ) = 1; B ( 1,2 ) = 7; B ( 2,1 ) =-5; B ( 2,2 ) = 0 得到的结果是: B= 1 7 -5 0 三维矩阵和其他数据结构在函数自变量中依次使用行、列和页维数次序。对于多维矩阵 有两个索引原理,最自然的就是矩阵索引,它给出了每个元素在每一维中的一个位置,例如, 在上例中的行和列的索引。图 2 - 1给出了可视化的3×3×2的三维矩阵的不同元素的索引。 另一个索引原理是线性索引方法。一些命令把整个矩阵说明为一个长列元素,例子之一 是r e s h a p e (详见命令集3 7 )。如果所有的元素被放在一行上,那么对各元素给定的一个线性索 引号说明了一个指定矩阵的索引给出的某个位置,如图 2 - 2所示。 创建一个多维矩阵有多种方法。 第2章 M AT L A B启动 1 3 下载下 ■
14 China-pub.Com MATLAB5手册 下载 1,12L2232 o国6 23J 2.1.22.2223,2 4 回47 2.1.d221230 3,123.2,233.2 2因8 31.d3213.3 3-6 图2-1一个3×3×2矩阵的元素索引 图2-2一个3×3×2矩阵的线性索引 ■例2.3 (a)有两个二维矩阵A和B A= 1 2 3 5 6 B= 11 12 13 1 15 16 可以很容易地构造一个三维矩阵C: C(:,:,1)=A: C(:,:,2)=B: 给出: C(:,:,1)= 12 5 6 C(:,:,2)= 1112 13 141516 b)为改变C中的一个元素,可以输入: C(1,1,1)=100: 得到: C(:,:,1)= 100 2 3 5 6 ■ MATLAB允许在同一命令行上定义多个变量,也可以在按回车键之前通过输入三个点 “……”以便在下一行继续输入。 ■例2.4 (a)在一行上的几个命令: x=7:y=4.6735567;z=x^y: (b)一个长的命令可以分成几行书写: mat1=[1.21.1-1.11.41,1-1.1-1.2. -1.1-1.31.7] ■ MATLAB记忆不同矩阵变量的维数。为了获得一个变量的维数,可以使用命令ize和length
■ 例2 . 3 (a) 有两个二维矩阵A和B 可以很容易地构造一个三维矩阵 C : C (:,:,1 ) = A; C (:,:,2 ) = B; 给出: (b) 为改变C中的一个元素,可以输入: C ( 1,1,1 ) = 1 0 0; 得到: M AT L A B允许在同一命令行上定义多个变量,也可以在按回车键之前通过输入三个点 “… …”以便在下一行继续输入。 ■ 例2 . 4 (a) 在一行上的几个命令: x = 7;y=4.6735567; z=x^y; (b) 一个长的命令可以分成几行书写: M AT L A B记忆不同矩阵变量的维数。为了获得一个变量的维数,可以使用命令s i z e和l e n g t h。 1 4 M ATLAB 5 手册 下载 图2-1 一个3×3×2矩阵的元素索引 图2-2 一个3×3×2矩阵的线性索引 ■ ■
China-pub.CoM 第2章MATLAB启动 15 下载 现在,令A是一个m×n×…×p矩阵,x是m×1矩阵(一个列向量)或是1×n矩阵(一个行向 量),MATLAB有如下的命令集: 命令集3 变量大小 size(A) 给出包含A的维数的一个行向量。在这个返回向量 中的第一个元素是行数,随后是列数、页数等。 [m,n,…,p]= 给出A的维数、m行数和n列数,即两个标量。如 size(A) 果给出的自变量少,则后边的维数加入最后一个 自变量。 size(A,dim) 在数组dim中给出A的维数。 size(x) 给出向量x的大小或长度的一个行向量。如果x是一 个列向量,则第1个元素是m,第2个元素是1。如果 x是一个行向量,则第1个元素是1,第2个元素是n。 length(x) 给出一个向量的长度,即如果x是一个行向量, 那么这个向量的长度就是:如果x是一个列向 量,那么这个向量的长度就是m。 length(A) 给出m,n,…,p的最大数。 ndims 返回多维矩阵A的维数。这个函数等价于 length(size(A)。 sub2ind(size,m,n,") 给出维数为ie的一个矩阵的线性索引寻m,m,)。 [m,n,…]=ind2sub 用线性索引ind对元素给出索引(m,n,…),要把 (size,ind) 图像矩阵说明为多维,其参数size必须是一个向 量。 注意有时用字dimemsion代替维数和长度,通常它可以表示与一个向量范数相关的 长度和与一个矩阵范数相关的矩阵的维数。可是,在本书中,维数和长度的使用与 size和length有相同的含义。当这个长度概念以其他意义使用时,就要说明。 ■例2.5 (a)命令thesize1=size(A),式中的A与例2.2(c)中的相同,结果为: thesizel= 23 命令thesize2=size(c),式中的C是例2.3中的三维矩阵,得到: thesize2= 2 33 (b)检查图2-2中的信息是否正确,可以使用: sub2ind([332],1,2,2) ans 13 ■
现在,令A是一个m×n×…×p矩阵,x是m×1矩阵(一个列向量)或是1×n矩阵(一个行向 量),M AT L A B有如下的命令集: 命令集3 变量大小 s i z e ( A ) 给出包含A的维数的一个行向量。在这个返回向量 中的第一个元素是行数,随后是列数、页数等。 [ m,n,…,p ]= 给出A的维数、m行数和n列数,即两个标量。如 s i z e ( A ) 果给出的自变量少,则后边的维数加入最后一个 自变量。 s i z e ( A,d i m ) 在数组d i m中给出A的维数。 s i z e ( x ) 给出向量x的大小或长度的一个行向量。如果x是一 个列向量,则第1个元素是m,第2个元素是1。如果 x是一个行向量,则第1个元素是1,第2个元素是n。 l e n g t h ( x ) 给出一个向量的长度,即如果 x是一个行向量, 那么这个向量的长度就是 n;如果 x是一个列向 量,那么这个向量的长度就是 m。 l e n g t h ( A ) 给出m,n,…,p的最大数。 n d i m s 返 回 多 维 矩 阵 A 的 维 数 。 这 个 函 数 等 价 于 l e n g t h ( s i z e ( A ) )。 s u b 2 i n d ( s i z e,m,n,…) 给出维数为s i z e的一个矩阵的线性索引号(m,n,…)。 [ m,n,…]= ind2sub 用线性索引i n d对元素给出索引(m,n,…),要把 ( s i z e,i n d ) 图像矩阵说明为多维,其参数 s i z e必须是一个向 量。 注意 有时用字d i m e m s i o n代替维数和长度,通常它可以表示与一个向量范数相关的 长度和与一个矩阵范数相关的矩阵的维数。可是,在本书中,维数和长度的使用与 s i z e和l e n g t h有相同的含义。当这个长度概念以其他意义使用时,就要说明。 ■ 例2 . 5 (a) 命令t h e s i z e 1 = s i z e ( A ),式中的A与例2.2(c) 中的相同,结果为: thesize1= 2 3 命令t h e s i z e 2 = s i z e ( C ),式中的C是例2 . 3中的三维矩阵,得到: t h e s i z e 2 = 2 3 3 ( b )检查图2 - 2中的信息是否正确,可以使用: 第2章 M AT L A B启动 1 5 下载 ■
16 China-pub.com MATLAB5手册 下载 2.3 MATLAB中的变量 在MATLAB中,变量名可以有19个字符。字母A~Z、a~z、数字和下划线‘_’可以作 为变量名,但第一个字符必须是一个字母。预定义函数名也可以像一个变量名那样使用,但 函数只有在变量由命令clear删除后才能使用,所以,不主张这样使用。 MATLAB是区分大小字母的,如矩阵a和A是不一样的。MATLAB命令通常是用小写字母 书写。例如,命令bs(A)给出了A的绝对值,但ABS(A)会导致在屏幕上显示如下错误信息: ??Undefined variable or function ABS;Caps Lock may be on 在变量使用之前,用户不需要指定一个变量的数据类型,也不必声明变量。MATLAB有 许多不同的数据类型,这对决定变量的大小和形式是有价值的,特别适合于混合数据类型、 矩阵、细胞矩阵、结构和对象。 对于每一种数据类型,有一个名字相同的、可以把变量转换到那种类型的函数。所用的 不同的基本数据类型如下所示。 命令集4 数据类型和转换函数 double 是一个双精度浮点数,每个存储的双精度数用64位。 char 用于存储字符,每个存储的字符用16位。 sparse 用于存储稀疏矩阵,由一个sparse使用的内存是4+(非零元素数*16)。 unit8 是一个无符号的8位整型数。数学函数并不对使用到的这种数据类型进行 定义,如存储图像。 混合数据类型在第5章和第12章中描述。 在MATLAB中,有许多功能可以帮助找出一个变量是否是一个特殊类型。也有一个特殊 的逻辑向量,它是由命令repmat生成(见第4.1节)。 命令集5 逻辑函数 iscell(x) 如果x是一个细胞矩阵,返回1:否则为0。可参见第5.5节。 isfield(x) 如果x在一个结构中是一个域,返回1:否则为0。可参见第12.5节。 isfinite(x) 返回一个与x相同大小的向量,这个x包含有限元的位置为1,其 他位置为0。 islogical(x) 如果x是一个逻辑向量,返回1:否则为0。 isnumeric(x) 如果x是一个数值向量,返回1:否则为0。 isstr(x) 如果x是一个字符串,返回1:否则为0。可参见第5.1节。 isstruct(x) 如果x是一个结构,返回1:否则为0。可参见第12.5节。 isobject(x) 如果x是一个对象,返回1:否则为0。可参见第12.6节。 logical(x) 返回一个可以使用的逻辑向量,例如逻辑索引或逻辑测试。 ■例2.6 如果一个函数是要应用到一个矩阵中的隔一个元素上,那么可以这样做:
2.3 MAT L A B中的变量 在M AT L A B中,变量名可以有 1 9个字符。字母 A~Z、a~z、数字和下划线‘ _’可以作 为变量名,但第一个字符必须是一个字母。预定义函数名也可以像一个变量名那样使用,但 函数只有在变量由命令c l e a r删除后才能使用,所以,不主张这样使用。 M AT L A B是区分大小字母的,如矩阵 a和A是不一样的。M AT L A B命令通常是用小写字母 书写。例如,命令a b s ( A )给出了A的绝对值,但A B S ( A )会导致在屏幕上显示如下错误信息: 在变量使用之前,用户不需要指定一个变量的数据类型,也不必声明变量。 M AT L A B有 许多不同的数据类型,这对决定变量的大小和形式是有价值的,特别适合于混合数据类型、 矩阵、细胞矩阵、结构和对象。 对于每一种数据类型,有一个名字相同的、可以把变量转换到那种类型的函数。所用的 不同的基本数据类型如下所示。 命令集4 数据类型和转换函数 d o u b l e 是一个双精度浮点数,每个存储的双精度数用 6 4位。 c h a r 用于存储字符,每个存储的字符用 1 6位。 s p a r s e 用于存储稀疏矩阵,由一个 s p a r s e使用的内存是4 + (非零元素数* 1 6 )。 u n i t 8 是一个无符号的8位整型数。数学函数并不对使用到的这种数据类型进行 定义,如存储图像。 混合数据类型在第5章和第1 2章中描述。 在M AT L A B中,有许多功能可以帮助找出一个变量是否是一个特殊类型。也有一个特殊 的逻辑向量,它是由命令r e p m a t生成(见第4 . 1节)。 命令集5 逻辑函数 i s c e l l ( x ) 如果x是一个细胞矩阵,返回1;否则为0。可参见第5 . 5节。 i s f i e l d ( x ) 如果x在一个结构中是一个域,返回1;否则为0。可参见第1 2 . 5节。 i s f i n i t e ( x ) 返回一个与x相同大小的向量,这个 x包含有限元的位置为 1,其 他位置为0。 i s l o g i c a l ( x ) 如果x是一个逻辑向量,返回1;否则为0。 i s n u m e r i c ( x ) 如果x是一个数值向量,返回1;否则为0。 i s s t r ( x ) 如果x是一个字符串,返回1;否则为0。可参见第5 . 1节。 i s s t r u c t ( x ) 如果x是一个结构,返回1;否则为0。可参见第1 2 . 5节。 i s o b j e c t ( x ) 如果x是一个对象,返回1;否则为0。可参见第1 2 . 6节。 l o g i c a l ( x ) 返回一个可以使用的逻辑向量,例如逻辑索引或逻辑测试。 ■ 例2.6 如果一个函数是要应用到一个矩阵中的隔一个元素上,那么可以这样做: 1 6 M ATLAB 5 手册 下载
China-pub.com 第2章MATLAB启动 下载 data rand(1,10) data 0.6700 0.2009 0.2731 0.6262 0.5369 0.0595 0.0890 0.2713 0.4091 0.4740 使用repmat创建x: x=repmat([10],1,5) X 0 1 01010 10 filter logical(x) filter 10101010+ 10 为使用滤波器,给出下面的命令 halfdata data(filter) halfdata 0.67000.27310.53690.08900.4091 为使用与函数round一起的过滤器,可输入: result round(data(filter)) result 0 10 0 命令repmat.产生块矩阵,第4.1节将进一步对此进行描述。 ■ 在MATLAB中有许多如下的预定义变量: 命令集6 MATLAB中预定义变量 ans 分配最新计算表达式的值,这个表达式并没有给定一个名字。 eps 返回机器精度,定义1与最接近可代表的浮点数之间的差。ps数 在一些命令中用作偏差。用户可以设定一个新的eps值,但要注意 这个eps值不能由命令clear恢复。 realmax 返回计算机能处理的最大浮点数。 realmin 返回计算机能处理的最小的非零浮点数。 pi 返回π,即3.141592653589793,如果eps足够小,那么用16位十进 制数来表示其精度。 inf 定义为1/0。当出现被零除时,MATLAB就返回imf,并不中断执行 而继续计算。 NaN 定义为“Not a Number”,这个非数值要么是%类型,要么是nf/inf
使用r e p m a t创建x: 为使用滤波器,给出下面的命令: 为使用与函数r o u n d一起的过滤器,可输入: 命令r e p m a t产生块矩阵,第 4.1 节将进一步对此进行描述。 在M AT L A B中有许多如下的预定义变量: 命令集6 M AT L A B中预定义变量 a n s 分配最新计算表达式的值,这个表达式并没有给定一个名字。 e p s 返回机器精度,定义 1与最接近可代表的浮点数之间的差。 e p s数 在一些命令中用作偏差。用户可以设定一个新的 e p s值,但要注意 这个e p s值不能由命令c l e a r恢复。 r e a l m a x 返回计算机能处理的最大浮点数。 r e a l m i n 返回计算机能处理的最小的非零浮点数。 p i 返回p,即3 . 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3,如果e p s足够小,那么用1 6位十进 制数来表示其精度。 i n f 定义为1 / 0。当出现被零除时, M AT L A B就返回i n f,并不中断执行 而继续计算。 N a N 定义为“Not a Number”,这个非数值要么是%类型,要么是i n f / i n f。 第2章 M AT L A B启动 1 7 下载 ■
18 China-pub.com MATLAB5手册 下载 i,j 定义为百,虚数单位。可以为和分配其他值,它们将不再是预 定义常数。可以由clear命令恢复。 nargin 给出在一个函数调用中输入自变量的个数,可参见第12.3节。 nargout 给出在一个函数调用中输出自变量的个数,可参见第12.3节。 为寻找哪个变量可以被定义,可以使用下列命令集: 命令集7 变量列表 who 列出已定义的变量。 Who global 与who相同,但仅列出全局变量。参见第12.3节。 who a 给出所有以a开头的变量的一个列表。 whos 给出比命令who更详细的列表,如显示矩阵的维数。 whos global 与whos相同,但仅列出全局变量,可参见第12.3节。 exist (namestr) 根据在字符串namestr中的变量的定义,返回不同的值。关于 字符串更多的信息可参见第5章。这里要注意的重要的一点是 变量名应在引号’之间给出。函数返回值的情况是: l)表示namestr是一个变量名: 2)表示namestr是一个M文件名(参见第2.9节): 3)表示namestr是一个MEX文件名(参见第15章): 4)表示namestr是一个编译的SIMULINK函数: S)表示namestr是一个预定义的MATLAB函数名。 inmem 返回一个带字符串的细胞向量,这个字符串包含目前在内存中 的函数、M文件。如果给出两个输出参数,则第二个包含了一 个目前在内存中的MEX文件的列表。 workspace 对由whos得到的信息给出一个图形界面。命令clear被集成在这 个环境中。由help workspace给出的信息,也在UNX下工作。 如果不被用户删除或重命名,每个被定义的变量将在整个过程中保留。要删除变量,系 统会劝告如要处理大矩阵可用命令clear。 命令集8 删除变量和合并 clear 删除所有变量并恢复除eps外的所有预定义变量。可参见 命令集111当运行文件时的c1ear。 clear name 仅删除变量name。 clear i name1name2别除变量namel、.name2、… … clear a 别除所有a开头的变量。 clear value 根据ahe给出不同的结果。键人d缸 可得到更多的细节
i,j 定义为 ,虚数单位。可以为 i和j分配其他值,它们将不再是预 定义常数。可以由c l e a r命令恢复。 n a r g i n 给出在一个函数调用中输入自变量的个数,可参见第 1 2 . 3节。 n a r g o u t 给出在一个函数调用中输出自变量的个数,可参见第 1 2 . 3节。 为寻找哪个变量可以被定义,可以使用下列命令集: 命令集7 变量列表 w h o 列出已定义的变量。 Who global 与w h o相同,但仅列出全局变量。参见第 1 2 . 3节。 who a* 给出所有以a开头的变量的一个列表。 w h o s 给出比命令w h o更详细的列表,如显示矩阵的维数。 whos global 与w h o s相同,但仅列出全局变量,可参见第 1 2 . 3节。 e x i s t ( n a m e s t r ) 根据在字符串 n a m e s t r中的变量的定义,返回不同的值。关于 字符串更多的信息可参见第 5章。这里要注意的重要的一点是 变量名应在引号‘’之间给出。函数返回值的情况是: 1) 表示n a m e s t r是一个变量名; 2) 表示n a m e s t r是一个M文件名(参见第2.9 节); 3) 表示n a m e s t r是一个M E X文件名(参见第1 5章); 4) 表示n a m e s t r是一个编译的S I M U L I N K函数; 5) 表示n a m e s t r是一个预定义的M AT L A B函数名。 i n m e m 返回一个带字符串的细胞向量,这个字符串包含目前在内存中 的函数、M文件。如果给出两个输出参数,则第二个包含了一 个目前在内存中的M E X文件的列表。 w o r k s p a c e 对由w h o s得到的信息给出一个图形界面。命令c l e a r被集成在这 个环境中。由help workspace 给出的信息,也在U N I X下工作。 如果不被用户删除或重命名,每个被定义的变量将在整个过程中保留。要删除变量,系 统会劝告如要处理大矩阵可用命令 c l e a r。 命令集8 删除变量和合并 c l e a r 删除所有变量并恢复除 e p s外的所有预定义变量。可参见 命令集111当运行文件时的c l e a r。 clear name 仅删除变量n a m e。 clear name1 name2 删除变量n a m e1、n a m e2、… … clear a* 删除所有a开头的变量。 clear value 根据v a l u e给出不同的结果。键入help clear 可得到更多的细节。 -1 1 8 M ATLAB 5 手册 下载
China-pub.com 第2章MATLAB启动 下载 pack 重组和压缩已分配的内存碎块。当MATLAB的内存满后,可以使用 命Pack而不是清除任何变量来得到更多的空间。将会产生如下情况: ·所有变量都会保存在磁盘上的一个临时文件pack.tmp中: ·删除主内存中的内容: ·所有变量将从pack.tmp加载到主内存中: ·删除文件pack.tmp。 pack filename用文件filename作临时文件,重组和压缩已分配内存。 键入中i位 、中y 和a政 可以获得更多的有关如何AAB节省内存的信息。 注意MATLAB中的命令实际上可以看作函数,把字符串看作自变量,这就意味着有 两种描述: command argument command('argument') 这两种描述是等价的。例如,clear name与clear('name')得到相同的结果,who g1oba1与who(‘g1oba1')等价。其他的例题可在本书的其他几个地方找到,例如axis spuare与axis(square')在第13.3节中可找到。由于命令自变量可以通过使用字符串控制 命令而产生,使用函数/字符串公式的可能性使得MATLAB编程语言十分灵活,参见第5章。 2.4算术表达式和数学函数 在MATLAB中通常的惯例是书写数字。对十进制数,使用科学记数法可以书写十分大和 十分小的数。例如3.14和1.23E一6,这里,后者代表1.23×10-6。 MATLAB有算术运算符的扩展集,它们是: 1)A 幂 2)* 乘 右除(正常除) 左除 3)+ 加 减 这是按序给出的运算,1是最高优先级。在带相同优先级的运算符表达式中,按从左到右 的顺序执行。圆括号O能够用于改变优先级次序。 在第3.3节中,将看到两种不同的除法是有用的。对于数量右除2/5得0.4与左除512是相同 的,斜线号“靠着”的表达式或数字是分母。 ■例2.7 如果书写a/b+c,MATLABi读作号+c,但表达式a/(b+c)被读作b十。· b+C。 如果使用左除a\(b+c),MATLAB把它译成 a ■ MATLAB包含了预定义数学函数,它们可以用于算术表达式中。如果自变量是复数,那么
p a c k 重组和压缩已分配的内存碎块。当M AT L A B的内存满后,可以使用 命令p a c k而不是清除任何变量来得到更多的空间。将会产生如下情况: • 所有变量都会保存在磁盘上的一个临时文件 p a c k . t m p中; • 删除主内存中的内容; • 所有变量将从p a c k . t m p加载到主内存中; • 删除文件p a c k . t m p。 pack filename 用文件f i l e n a m e作临时文件,重组和压缩已分配内存。 键入help clear 、help memory 和help pack 可以获得更多的有关如何在M AT L A B节省内存的信息。 注意 M AT L A B中的命令实际上可以看作函数,把字符串看作自变量,这就意味着有 两种描述: 这两种描述是等价的。例如, clear name与c l e a r (’n a m e’)得到相同的结果,w h o g l o b a l与w h o (‘g l o b a l’)等价。其他的例题可在本书的其他几个地方找到,例如 a x i s s p u a r e与a x i s (‘s q u a r e’)在第1 3 . 3节中可找到。由于命令自变量可以通过使用字符串控制 命令而产生,使用函数/字符串公式的可能性使得M AT L A B编程语言十分灵活,参见第 5章。 2.4 算术表达式和数学函数 在M AT L A B中通常的惯例是书写数字。对十进制数,使用科学记数法可以书写十分大和 十分小的数。例如3 . 1 4和1 . 2 3 E-6,这里,后者代表1 . 2 3×1 0-6。 M AT L A B有算术运算符的扩展集,它们是: 1) ^ 幂 2) * 乘 / 右除(正常除) \ 左除 3) + 加 - 减 这是按序给出的运算, 1是最高优先级。在带相同优先级的运算符表达式中,按从左到右 的顺序执行。圆括号( )能够用于改变优先级次序。 在第3 . 3节中,将看到两种不同的除法是有用的。对于数量右除 2 / 5得0 . 4与左除5 \ 2是相同 的,斜线号“靠着”的表达式或数字是分母。 ■ 例2 . 7 如果书写a / b + c,M AT L A B读作 ,但表达式a / ( b + c )被读作 。 如果使用左除a \ ( b + c ),M AT L A B把它译成 。 M AT L A B包含了预定义数学函数,它们可以用于算术表达式中。如果自变量是复数,那么, b + c a a b + c a b + c 第2章 M AT L A B启动 1 9 下载 ■
20 China-pub.com MATLAB5手册 下载 多数情况下是答案。 MATLAB也能计算含有预定义变量的表达式:例如,一个表达式可以用作一个函数的自变量。 预定义数学函数在命令集9中列出。即使这些函数是为数量自变量描述的,将在第3.6节看 到它们既能处理向量,也能处理矩阵。要注意的是所有三角函数都需要其自变量以弧度表示。 命令集9 数学函数 abs(x) 求x的绝对值,即x sign(x) 求x的符号,如果是正的得1:负的得一1:零得0。 sqrt(x) 求x的平方根,即F。 pow2 (x, f) 求x×2'。把f加到的浮点格式下的指数上计算是一种十分有效的运算。 exp(x) 求x的指数函数,即e。 log(x) 求x的自然对数,即lnr。 1og10(x) 求x以10为底的对数,即1ogox。 1og2(×) 求x以2为底的对数,即1logx。 sin(x) 求正弦x,x为弧度。 cos(x) 求余弦x,x为弧度。 tan(x) 求正切x,x为弧度。 cot(x) 求余切x,即1/(tanx),x为弧度。 asin(x) 求反正弦,即sinx。 acos(x) 求反余弦,即cos-x。 atan(x) 求反正切,即tan~x。 atan2(x,y) 求四象限反正切(xy),其结果在[一π,区间内。 acot(x) 求反余切x=四象限反正切(1x)。 sec(x) 求正割x,即1/(cosx)。 csc(x) 求余割x,即1/(sinx)。 asec(x) 求sec-x=arccos(l/x). acsc(x) csc-'x=arcsin(1/x) sinh(x) 求双曲正弦x。 cosh(x) 求双曲余弦x。 tanh(x) 求双曲正切x coth(x) 求双曲余切x,即l/(tanhx)。 asinh (x) 求sinh-x=ln(x++)。 acosh(x) 求cosh-=ln(x+-x)。 atanh(x) 求tanh-x=0.5ln(1+x)/1-x)。 acoth(x) 求coth-'x=0.5ln(x+1)/(x-1)。 sech(x) 求双曲正割x,即1/(coshx)。 csch(x) 求双曲余割x,即1/(sinhx)。 asech(x) 求sech-hx=ln(I+-x)/x)。 acsch(x) 求csch-x=ln(I+1+xyx)
多数情况下是答案。 M AT L A B也能计算含有预定义变量的表达式:例如,一个表达式可以用作一个函数的自变量。 预定义数学函数在命令集9中列出。即使这些函数是为数量自变量描述的,将在第 3 . 6节看 到它们既能处理向量,也能处理矩阵。要注意的是所有三角函数都需要其自变量以弧度表示。 命令集9 数学函数 a b s ( x ) 求x的绝对值,即 |x|。 s i g n ( x ) 求x的符号,如果是正的得1;负的得-1;零得0。 s q r t ( x ) 求x的平方根,即 。 pow2(x, f) 求x×2 f。把 f 加到x的浮点格式下的指数上计算是一种十分有效的运算。 e x p ( x ) 求x的指数函数,即e x。 l o g ( x ) 求x的自然对数,即l nx。 l o g 1 0 ( x ) 求x以1 0为底的对数,即l o g1 0x。 l o g 2 ( x ) 求x以2为底的对数,即l o g2x。 s i n ( x ) 求正弦x,x为弧度。 c o s ( x ) 求余弦x,x为弧度。 t a n ( x ) 求正切x,x为弧度。 c o t ( x ) 求余切x,即1 / ( t a nx),x为弧度。 a s i n ( x ) 求反正弦,即s i n-1 x。 a c o s ( x ) 求反余弦,即c o s-1 x。 a t a n ( x ) 求反正切,即t a n-1 x。 a t a n 2 ( x , y ) 求四象限反正切(x/y),其结果在[- , ]区间内。 a c o t ( x ) 求反余切x=四象限反正切( 1 /x)。 s e c ( x ) 求正割x,即1 / ( c o sx)。 c s c ( x ) 求余割x,即1 / ( s i nx)。 a s e c ( x ) 求s e c-1 x= a r c c o s ( 1 /x)。 a c s c ( x ) 求c s c-1 x= a r c s i n ( 1 /x)。 s i n h ( x ) 求双曲正弦x。 c o s h ( x ) 求双曲余弦x。 t a n h ( x ) 求双曲正切x c o t h ( x ) 求双曲余切x,即1 / ( t a n hx)。 a s i n h ( x ) 求s i n h-1 x= l n 。 a c o s h ( x ) 求c o s h-1 x= ln 。 a t a n h ( x ) 求t a n h-1 x= 0 . 5 l n ( ( 1 +x) / ( 1-x) )。 a c o t h ( x ) 求c o t h-1 x= 0 . 5 l n ( (x+ 1 ) / (x-1 ) )。 s e c h ( x ) 求双曲正割x,即1 / ( c o s hx)。 c s c h ( x ) 求双曲余割x,即1 / ( s i n hx)。 a s e c h ( x ) 求s e c h-1 x= l n 。 a c s c h ( x ) 求c s c h-1 x= l n ((1+ 1 + x 2 )/ x) 。 ((1+ 1 - x 2 ) / x) (x + 1 - x 2 ) (x + 1 + x 2 ) x 2 0 M ATLAB 5 手册 下载