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 下载 ■