第一章 MATLAB系统与语言简介 1x2 struct array with field name score 用结构名加上域名可以提出结构数组中所有元素相应域的值。例如: score 这样就将S结构中的 score域的值提出来创建一个向量。 1.2.2 MATLAB的基本管理命令 为了方便用户使用 MATLAB,在 MATLAB50版中,系统提供了强大的在线帮助功 能。根据HTML技术编写的帮助文件使用起来十分方便。另外,在 MATLAB命令窗口的 工作环境下,也可以使用help命令,直接向系统寻求帮助。这里不打算作详细介绍读者只 要启动 MATLAB,就会发现HELP功能使用起来十分得心应手。这一节仅扼要地介绍几个 常用的系统管理命令。 1查询变量信息的命令who和whos 有时用户需要知道在 MATLAB的工作环境中有哪些变量,这时可以使用 MATLAB 命令who和whos来查看。这两个命令的区别在于,前一个命令只是简单地列出在工作环境 中的变量名字;而后一个命令除了列出变量的名字外,还报告每个变量更详细的信息,通过 一张表格向用户报告系统工作环境中存在的每个变量它们的维数sie),变量所对应矩阵 的元素个数,在内存中占用的空间及其矩阵属性(如是否为稀疏矩阵是否为复矩阵,等 等) 2装人和存储变量与数据的命令load和save MATLAB提供了两个命令,用于装入和保存数据与变量之值,下面分别进行介绍。 (1)load命令 该命令有两种调用形式其一用于装入 MATLAB格式的数据文件,即MAT文件, 般以mat为扩展名装入的数据变量的名字等信息都包含在该文件中。例如: > load clown 表示在当前目录或搜素路径下寻找 MATLAB数据文件 clown.mat,并把它装入 MATLAB 的工作环境中,创建的变量名是根据该文件的内容确定的(注: clown,mat是随图像处理工 具箱一起安装的一个图像数据文件);另一种形式用于装入ASCⅡ码文件形式的矩阵数据 这种数据文件可以用普通的文本编辑器编辑其中每一行的数据恰为矩阵的每一行数据数 据元素之间用空格隔开,每行以回车符结尾,且每行的数据个数必须相同。装入 MATLAB 的工作环境后,这个矩阵以该文件的名字为变量名。例如 > load mydata. dat 表示在当前目录下寻找 MATLAB数据文件 mydata,dat,并将其装入到 MATLAB的工作
12 MATLAB语言话法要素 13 环境空间中,创建的变量是 mydata (2)save命令 与load命令相对应的是save命令,它也有两种调用形式。例如,为了将当前变量或某些 指定的变量存入 MATLAB数据文件temp.mat,可以用下列的调用方 save tem 或 》 save tempXY Z 另一种调用方式可以根据要求将当前变量或指定变量的数据按ASCI格式存储,例如 >a= rand (3, 4) 》 save temp.datA-asc 表示生成一个名字为temp.dat的ASC文件,其内容是由第一条语句创建的3行4列的随 机矩阵 0.21130.80960,48420.0824 0.82170.82340.23540.3212 0.23450.67140.65280.2985 这两种命令都可以不带任何参数地调用,此时,save的作用是将当前工作环境中的所 有变量存入到文件 marlab.mat中,而load则是将 matlab, mat的内容重新装入,恢复到用 save存入 matlab,mat时的状态 3.滴除变量与数据的命令 clear 该命令用于清除工作环境中的全部或部分指定的变量。具体的调用方式如下所列: 除所有的变量 cleary 清除名为X,Y和Z的变量 》 clear functions从内存中清除所有已编译的函数 clear variables 除所有的变量 clear mex 从内存中清除所有的MEX文件 clear global 清除所有的全程变量 清除所有的变量、函数MEX文件等 4退出 MATLAB系统的命令qu和exit 为了退出 MATLAB系统,既可以用命令窗口中FLE菜单下的exit命令退出,也可以 在命令行下键入命令quit或exit退出。 1.2.3 MATLAB的基本运算符 L.矩阵(算术)运算符 MATLAB的主要矩阵(算术)运算符如下所列 矩阵A的转置,如果A是复矩阵,则其运算的结果是共轭转置 A±B 矩阵A和B的和与差其中的一个矩阵可以是数量,表示另一个矩阵 的元素加减该数量
第一章 MATLAB系统与语言简介 A B 矩阵A和B的乘法,A与B均可以是向量或数量,只要符合矩阵乘法 的定义 A/B 方程X*A=B的解X A\B 方程A*X=B的解Ⅹ a B A和B都为数量时,表示数量A的B次方幂; A为阵B为整数时,表矩阵A的B次乘积;B为整时,表示A的逆 阵的B次乘积而当B为非整数时A^B=V V,其中 B λ1,…,λ为矩阵A的特待征值ⅴ为的特征向量矩阵。当A为数量,B为方阵 时,AB=V暑 其中λ,…,λ为矩阵B的待征值V 为对的特征呵量矩阵。当A与B都为矩阵时,无定义 矩阵A和B的对应元素相乘,A和B为同维数的矩阵,除非其中之 为数量 A/B 矩阵A的元素除以矩阵B的对应元素即等于[A(i,)/B(i,j)],A和 B为同维数的矩阵除非其中之一为数量 A. B 矩阵B的元素除以矩阵A的对应元素,即等于[B(i,/A(i,j),A和 B为同维数的矩阵除非其中之一为数量 等于[A(i,j)^B(i,],A和B为同维数的矩阵除非其中之一为数量 也表示矩阵A的转置,但当A为复矩阵时,不求共轭 2关系运算符 MATLAB提供了6种关系运算符,用于比较两个同维数的矩阵,即 小于 小于或等于 大于 大于或等于 等 不等于 MATLAB比较两矩阵的对应元素例如C=A<B的结果C是与A或B同维数的01 矩阵,1表示比较的结果为真,0表示比较的结果为假。特别地,A与B之一可以是数量。例 》2+2~= ans 关系运算符可以用于检查矩阵的元素是否满足某些条件。例如设矩阵A是一个6阶 幻方短阵
.2 MATLAR语言语法要素 A magic(6) A 2720 82833171015 必为阶幻方矩阵是一个nxn的矩阵,其元素由1到n2的个整数组成,每行每列元素 相同。下面的语句可以用来检验矩阵A的元素是否可以被3整除: P=(rem(A,3)==0) 在上面的语句中rem(A,3)是矩阵A的每个元素除以3的余数矩阵,此时,0被扩展为与 A同维数的零矩阵,P是进行==比较的结果矩阵: P 001001 100100 010010 1001 0100 0 常与关系运算符一起使用的 MATLAB函数是fnd,该函数能在0-1矩阵中找出非零 元素,并返回非零元素在矩阵中的位置指标向量。例如如果Y是一个向量那么find(Y< 30)的结果是一个向量,其值为向量Y中小于3.0的元素的位置指标 3逻辑运算符 MATLAB提供了3种逻辑运算符,即“与”运算符&、“或”运算符|和“非”运算符~。它 们的定义如下: A&B结果是0-1矩阵,其元素为1时,表示矩阵A和B的对应元素都为非零值;否 则该元素为0.矩阵A和B是同维数的除非其中之一为数量 A|B结果是0-1矩阵,其元素为1时,表示矩阵A和B的对应元素中至少有一个 为非零值;其元素为0时,表示矩阵A和B的对应元素都为0。矩阵A和B是 同维数的,除非其中之一为数量 A结果是0-1矩阵,矩阵A的元素为零,则该矩阵对应的元素为1;矩阵A的元 素非零时,对应的元素为0 常与逻辑运算符一起使用的 MATLAB函数有any和ll如果向量x的某一个元素为 非零,则any(x)的返回值为!(真),否则返回值为0(假)。如果向量x的每一个元素都为非 零,则ll(x)的返回值为1(真),否则返回值为0(假)。这些函数都将返回一个条件值,因此, 在条件语句中特别有用。例如: ll(A<.5)
第一章 MATLAB系统与语言简介 do something 对于矩阵变量,这些函数的返回值是一个行向量,其值为矩阵的每列进行any和all运 算的结果。这样,两次迭代使用这些函数可以得到一个数量的条件值,例如:any(any(A) MATLAB提供的关系运算和逻辑运算函数主要有 逻辑条件 逻辑条件 提取逻辑值的行列指标 检测某个变量的存在性 检测NaN 检测无穷大 检测有限值 empty检测空矩阵 sstr 检测字符串 检测全程变量 Issparse检测稀疏矩阵 例如,exst(x)可检测变量x在工作环境中是否存在如果存在该变量,函数的返回值 为1,否则返回值为0。 4.特殊运算符 除了常用的数学运算符外, MATLAB还提供了几种特殊运算符,下面分别加以介绍。 在 MATLAB的M文件中,可以加入解释行。解释行的标识符为“%”该标识符后的内 容将被作为注解内容。程序执行时,注解被忽略。 方括号“[]运算符用于生成矩阵。特别地,语句A=[]生成空矩阵A。空矩阵是 MATLAB提供的一种理想元其维数为零,无任何元素但其行列式为1。空矩阵的作用在 本书后续章节还要作介绍 行分隔符“;"用在 MATLAB语句后时,表示该语句的执行结果不被回显出来,这可避 免显示一些不感兴趣的结果。 冒号运算符“:”最主要的作用是生成向量从下面的例子中可以看出其使用方法: k 生成向量[j,j+1,j+2,…,k] k生成向量,j+i,j+2i,…,k 如果j>k,则生成空矩阵 A(;,j矩阵A的第j列 A(,:)矩阵A的第i行 AG:k)向量A(j),A(+1),,A(k) A(:,j:k)从第j列到第k列的矩阵子块 换行连接符“…”,有时一条 MATLAB语句会很长,在命令窗口的一行内很可能写不 下,此时只要在该行语句中加入三连点,再回车即可在下一行接着写该语句。例如: A +b^2+