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