《MATLAB语言-周数据3》由会员分享,可在线阅读,更多相关《MATLAB语言-周数据3(44页珍藏版)》请在金锄头文库上搜索。
1、20 Aug 2010Matlab Programming Language周金柱E-mail: xidian_Tel: 13891824426电子装备结构设计教育部重点实验室Key Laboratory of Electronic Equipment Structures of Ministry of Education第2章 MATLAB矩阵及运算2.1 Matlab数据 2.2 变量和赋值2.2.1 变量的命名2.2.2 赋值语句2.2.3 数据的输出格式2.2.4 预定义变量2.2.5 内存变量的管理 2.3 Matlab矩阵2.3.1 矩阵的建立2.3.2 冒号表达式2.3.3 矩阵
2、的操作2.3.4 特殊的矩阵2.1数据-特点矩阵是MATLAB最基本、最重要的数据对象。向量可以看成是仅有一行或一列的矩阵。单个数据(标量)可以看成是矩阵的特例。一般情况下,矩阵的每个元素必须具有相同的 数据类型,在实际应用中,有时需要将不同类型的 数据构成矩阵的元素,也就是结构体(Structure) 和元胞(Cell)数据类型。2.1数据-类型MATLAB 7.3定义了15种基本的数据类型,包括整型、浮点型、 字符型和逻辑型等,用户甚至可以定义自己的数据类型。 变量是数值计算的基本单元。MATlab语言与其他高级语言不同, 变量使用时无需事先定义,其名称就 是第一次合法出现时的名称,因此使
3、 用起来很便捷。练习2.2变量和赋值MATLAB的变量命名规则如下: n 变量名区分字母的大小写。例如,“a”和“A” 是不同的变量。 n 变量名不能超过63个字符,第63个字符后的字符被忽略。 n 变量名必须以字母开头,变量名的组成可以是任意字母、 数字或者下划线,但不能含有空格和标点符号(如,。% 等)。 n 不合法例子:1 1 a/b a-1 变量1 n 关键字(如if、while等)不能作为变量名。 n MATLAB提供的标准函数名以及命令名必须用小写字母。练习2.2.1变量的命名2.2.2赋值语句(1) 变量=表达式 (2) 表达式 一般地,运算结果在命令窗口中显示出来。如果在语句的
4、最后 加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结 果。 在MATLAB语句后面可以加上注释,注释以%开头,后面是注 释的内容。例2.1 计算表达式的值,并将结果赋给变量x,然后显示出结 果。在MATLAB命令窗口输入命令:x=(5+cos(47*pi/180)/(1+sqrt(7)-2*i) %计算表达式的值练习2.2.3 数据的输出格式MATLAB用十进制数表示一个常数,具体可 采用日常记数法和科学记数法两种表示方法。 在命令窗口中,默认情况下当数值为整数时 ,数值计算的结果以整数显示;当数值为实数 时,以小数点后四位的精度近似显示,即以短 (short)格式显示;如果数值
5、超过这一范围, 则以科学技术法显示结果。例:a=1a=1 b=3.1416 b=3.1416 c=0.00005 c=5.0000e-005 数值计算结果的显示格式 :数据输出时用户可以用format命令设置或改变数据输出格式。 format命令的格式为: format 格式符注意,format命令只影响数据输出格式,而不影响数据的计算 和存储。例:1.format short 314.159 表示为 314.1590 3141.59 表示为 3.1416e+003 2.format short e pi 表示为 3.1416e+000 3.format rat pi 表示为 355/1132
6、.2.4 预定义变量在MATLAB工作空间中,还驻留几个由系统本 身定义的变量。它们有特定的含义,在使用时, 应尽量避免对这些变量重新赋值。2.2.5 内存变量的管理1. 内存变量的显示与删除who和whos这两个命令用于显示在Matlab 工作空间中已经驻留的变量名清单。 clear命令用于删除MATLAB工作空间中的 变量。 注意,预定义变量不能被删除。2. 工作空间浏览器 (1) 工作空间浏览器的启动 (2) 工作空间浏览器的操作通常对于较大矩阵的输入,可采用数 组编辑器。操作方法:1)在命令窗口向一个新变量赋空阵2)在工作空间浏览器中打开该变量3)在数组编辑器中填写元素值3. 内存变量
7、文件 利用MAT文件(.mat)可以把当前MATLAB工作空间中的 一些有用变量长久地保留下来。MAT文件是MATLAB保 存数据的一种标准格式二进制文件,扩展名一定是.mat MAT文件的生成和装入由save和load命令来完成。常用 格式为:save 文件名 变量名表 -append-asciiload 文件名 变量名表 -ascii 假定系统存在am D两个变量,可以将其存放到 mydata.mat save mydata am D load mydata am D save d:lxmmydata am D load d:lxmmydata am D2.3 Matlab矩阵Matlab
8、中的数组可以说是无处不在,任何变量都是以数 组型式存储和运算的,在Matlab运算中,经常要用到标量 、向量、矩阵和数组,关于名称的定义如下: 空数组(empty array):没有元素的数组; 标量(scalar):是指11的矩阵,即为只含一个数的 矩阵; 向量(vector):是指1n或n1的矩阵,即只有一行 或者一列的矩阵; 矩阵(matrix):是一个矩形的mn数组,即二维数 组; 数组(array):是指多维数组mnk,其中矩阵 和向量都是数组的特例。2.3.1 矩阵的建立在MATLAB中矩阵的创建应遵循以下基 本常规: 矩阵元素应用方括号()括住 每行内的元素间用逗号(,)或空格隔
9、开 行与行之间用分号(;)或回车键隔开; 元素可以是数值或表达式。(一)直接输入法将矩阵的元素用方括号括起来,按矩阵 行的顺序输入各元素,同一行的各元素之 间用空格或逗号分隔,不同行的元素之间 用分号分隔。 例如A=1 2 3;4 5 6;7 8 9 也可以用回车键代替分号。2.3.1 矩阵的建立MATLAB提供对复数的操作与管理功能,虚数单位用i 或j表示,例如:6+5*i与6+5*j表示同一个复数。 复数的产生可以有几种方式: z=a+b*i或z=a+b*j z=a+bi或z=a+bj(当b为常数时) z=r*exp(i*theta) z=complex(a,b) 复数矩阵还可以采用另一种
10、输入方式R=1,2,3;4,5,6;Q=2,3,4;7,8,9;z=R+i*Q2.3.1 矩阵的建立(二)利用M文件建立矩阵对于比较大且比较复杂的矩阵,可以为它专门 建立一个M文件。例2.2 利用M文件建立MYMAT矩阵。(1)启动有关编辑程序或MATLAB文本编辑器, 并输入待建矩阵.(2)把输入的内容以纯文本方式存盘(设文件名 为mymatrix.m)。(3)输入文件名,运行该M文件,就会自动建立 一个名为MYMAT的矩阵,可供以后使用。2.3.1 矩阵的建立(三)利用MATLAB函数建立矩阵 几个产生特殊矩阵的函数: zeros 产生全0矩阵(零矩阵) ones 产生全1矩阵 (么矩阵)
11、 eye 产生单位矩阵 rand 产生01间均匀分布的随机矩阵 randn 产生01间正态分布的随机矩阵2.3.1 矩阵的建立这几个函数的调用格式相似,下面以产生零矩阵的 zeros函数为例进行说明。其调用格式是:zeros(m) 产生mm零矩阵zeros(m,n) 产生mn零矩阵。 zeros(size(A) 产生与矩阵A同样大小的零矩阵 相关的函数有:size(A) 返回包含2个元素的向量,分别是A的行数、 列数length(A) 给出行数和列数中的较大者,即 length(A)=max(size(A);ndims(A) 给出A的维数。reshape(A,m,n) 它在矩阵总元素保持不变的
12、前提下, 将矩阵A重新排成mn的二维矩阵。2.3.1 矩阵的建立例2.3 分别建立33、32和与矩阵A同样大小 的零矩阵。 (1)建立一个33零矩阵:zeros(3) (2)建立一个32零矩阵:zeros(3,2) (3)建立与矩阵A同样大小零矩阵:zeros(size(A) (4)将矩阵xv重新排成25、52矩阵 xv=23,34,65,67,54,38,78,76,32,56;ym=reshape(xv,2,5)newym=reshape(xv,5,2) 2.3.1 矩阵的建立(四)建立大矩阵 大矩阵可由方括号中的小矩阵建立起来。 例如: A=1 2 3;4 5 6;7 8 9; C=A,
13、eye(size(A);ones(size(A),A2.3.1 矩阵的建立2.3.2 冒号表达式冒号表达式的一般格式:e1:e2:e3 其中e1为初始值, e2为步长, e3为终止 值。冒号表达式可产生一个由e1开始到e3 结束,以步长e2自增的行向量。 在冒号表达式中如果省略e2不写,则步 长为1。 当e2省略或e20,e1e3; e20, e1e3都为 空矩阵。(1)使用冒号表达式生成向量linspace(a,b,n)%生成线性等分向量 logspace(a,b,n)%生成对数等分向量 说明: a、b、n三个参数分别表示开始值、结束值和 元素个数; linspace函数生成从a到b之间线性
14、分布的n个元 素的行向量,n如果省略则默认值为100; linspace(a,b,n)与a:(b-a)/(n-1):b等价。 logspace函数生成从10a到10b之间按对数等分的 n个元素的行向量,n如果省略则默认值为50。(2)使用linspace和logspace函数生成向量2.3.3 矩阵的操作MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。而不影响 其它元素的值。例如 A=ones(4);A(3,2)=200 只改变该元素的值,而不影响其他元素的值。如果给出的行下标或列 下标大于原来矩阵的行数和列数,则MATLAB将自动扩展原来的矩阵,并 将扩展后未赋值得矩阵元素置为0 A
15、(4,6)=10 也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先 第一列,再第二列,依次类推。 A(6) 显然,下标(subscrip)与序号(index)是一一对应的。以mn矩阵A为 例,矩阵元素A(i,j)的序号为 (j-1)*m+i。其相互转换关系也可利用 sub2ind和ind2sub函数求得 sub2ind(size(A),2,3) c,d=ind2sub(size(A),6)1. 矩阵元素(1)利用冒号表达式获得子矩阵A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i 行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。 A(i:i+m,:)
16、表示取A矩阵第ii+m行的全部元素; A(:,k:k+m)表示取A矩阵第kk+m列的全部元素, A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m 列中的所有元素。 A=1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35; A(2:3,4:5) A(2:3,1:2:5) 此外,还可利用一般向量和end运算符等来表示矩阵下标 ,从而获得子矩阵。end表示某一维的末尾元素下标。 A=1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35; A(end,:)%取A最后一行元素 A(1,4,3:end)%取A第1、4行中