




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Sept.9th 2014,Matlab Programming Language,李 娜 E-mail: Tel:QQ: 281840941,电子装备结构设计教育部重点实验室 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.1数据,矩阵是MATLAB最基本、最重要的数据对象。 向量可以看成是仅有一行或一列的矩阵。 标量 (单个数据)可以看成是矩阵的特例。 一般情况下,矩阵的每个元素必须具有相同的 数据类型,在实际应用中,有时需要将不同类型的数据构成矩阵的元素,也就是结构体(Structure)和元胞(Cell)数据类型。,数据特点,2.1数据-类型,MATLAB 7.3定义了15种基本的数据类型,包括整型、浮点型、字符型和逻辑型等,用户甚至可以定义自己的数据类型。,数据类型,MATLAB的变量命名规则如下: 变量名区分字母的大小写。例如,“a”和“A”是不同的变量。 变量名不能超过63个字符,第63个字符后的字符被忽略。 变量名必须以字母开头,变量名的组成可以是任意字母、 数字 或者下划线,但不能含有空格和标点符号(如,。%等)。 关键字(如if、while等)不能作为变量名。 MATLAB提供的标准函数名以及命令名必须用小写字母。,2.2.1变量的命名,MATLAB语言与其他高级语言不同,变量使用时无需事先定义,其名称就是第一次合法出现时的名称,因此使用起来很便捷。,变量命名,2.2.2赋值语句,(1) 变量=表达式 (2) 表达式 一般地,运算结果在命令窗口中显示出来。如果在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。 在MATLAB语句后面可以加上注释,注释以%开头,后面是注释的内容。 例2.1 计算表达式的值,并将结果赋给变量x,然后显示结果 在MATLAB命令窗口输入命令: x=(5+cos(47*pi/180)/(1+sqrt(7)-2*i) %计算表达式的值,练习,2.2.3 数据的输出格式,MATLAB用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。 在命令窗口中,默认情况下 (1)当数值为整数时,数值计算的结果以整数显示; (2)当数值为实数时,以小数点后四位的精度近似显示, 即以短(short)格式显示; (3)如果数值超过这一范围,则以科学技术法显示结果。,例1:a=1 b=3.141678 c=0.00005,设置显示格式,数据输出时用户可以用format命令设置或改变数据输出格式。format命令的格式为: format 格式符 注意,format命令只影响数据输出格式,而不影响数据的计算和存储。,2.2.3 数据的输出格式,例: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/113,2.2.3 数据的输出格式,2.2.4 预定义变量,在MATLAB工作空间中,还驻留几个由系统本身定义的变量。它们有特定的含义,在使用时,应尽量避免对这些变量重新赋值。,2.2.5 内存变量的管理,1. 内存变量的显示与删除 who和whos这两个命令用于显示在Matlab工作空间中已经驻留的变量名清单。 clear命令用于删除MATLAB工作空间中的变量。 注意: (1)预定义变量不能被删除; (2)clear 与clc 两个命令的不同之处。,2. 工作空间浏览器 (1) 工作空间浏览器的启动 (2) 工作空间浏览器的操作 通常对于较大矩阵的输入,可采用数组编辑器。操作方法: 1)在命令窗口向一个新变量赋空阵 2)在工作空间浏览器中打开该变量 3)在数组编辑器中填写元素值,2.2.5 内存变量的管理,3. 内存变量文件 利用MAT文件(.mat)可以把当前MATLAB工作空间中的一些有用变量长久地保留下来。MAT文件是MATLAB保存数据的一种标准格式二进制文件,扩展名一定是.mat MAT文件的生成和装入由save和load命令来完成。常用格式为: save 文件名 变量名表 -append-ascii load 文件名 变量名表 -ascii 假定系统存在am D两个变量,可以将其存放到mydata.mat save mydata am D load mydata am D save d:lxmmydata am D load d:lxmmydata am D,2.2.5 内存变量的管理,2.3 Matlab矩阵,Matlab中的数组可以说是无处不在,任何变量都是以数组型式存储和运算的,在Matlab运算中,经常要用到标量、向量、矩阵和数组,关于名称的定义如下: 空数组(empty array):没有元素的数组; 标量(scalar): 指11的矩阵,即为只含一个数的矩阵; 向量(vector):指1n或n1的矩阵,即只有一行或者一列 的矩阵; 矩阵(matrix):是一个矩形的mn数组,即二维数组; 数组(array): 指多维数组mnk,其中矩阵和向量都 是数组的特例。,2.3.1 矩阵的建立,MATLAB中矩阵的创建应遵循以下基本常规: 矩阵元素应用方括号()括住 每行内的元素间用逗号(,)或空格隔开 行与行之间用分号(;)或回车键隔开; 元素可以是数值或表达式。,(一)直接输入法,将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。 例如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) 复数矩阵还可以采用另一种输入方式 R=1,2,3;4,5,6;Q=2,3,4;7,8,9; z=R+i*Q,2.3.1 矩阵的建立,(二)利用M文件建立矩阵,对于比较大且比较复杂的矩阵,可以专门建立一个M文件。 例2.2 利用M文件建立MYMAT矩阵。 (1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵. (2)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。 (3)输入文件名,运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。,2.3.1 矩阵的建立,(三)建立大矩阵,大矩阵可由方括号中的小矩阵建立起来。 例如: A=1 2 3;4 5 6;7 8 9; C=A,eye(size(A);ones(size(A),A,2.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之间线性分布的n个元素的行向量,n如果省略则默认值为100; linspace(a,b,n)与a:(b-a)/(n-1):b等价。 logspace函数生成从10a到10b之间按对数等分的n个元素的行向量,n如果省略则默认值为50。,(2)使用linspace和logspace函数生成向量,2.3.2 冒号表达式,2.3.3 矩阵的操作,MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。而不影响其它元素的值。例如 A=ones(4);A(3,2)=200 只改变该元素的值,而不影响其他元素的值。如果给出的行下标或列下标大于原来矩阵的行数和列数,则MATLAB将自动扩展原来的矩阵,并将扩展后未赋值得矩阵元素置为0 A(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)利用冒号表达式获得子矩阵,1. A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。 2. A(i:i+m,:)表示取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) 3. 利用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行中第3列到最后一列元素 4. A(:) 将矩阵A的每一列元素堆叠起来,成为一个行向量。,(2)利用空矩阵删除矩阵的元素,在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为X=。 注意:X= 与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。 将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。 A=1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35; A(:,2,4)= %删除A的第2列和第4列元素,矩阵的合并就是把两个以上的矩阵连接起来得到一个新矩阵,“”符号可以作为矩阵合并操作符,命令格式如下: c=a b %将矩阵a和b水平方向合并为c c=a;b %将矩阵a和b垂直方向合并为c,2.矩阵的合并,2.3.3 矩阵的操作,第2章 MATLAB数据及运算,2.4 Matlab矩阵 2.4.1 算术运算 2.4.2 关系运算 2.4.3 逻辑运算 2.5 字符串 2.6 结构体和元胞数组 2.7 数组的信息获取,2.4.1 算术运算,矩阵的基本运算是+、-、和乘方()等 (1)矩阵的加、减运算 A和B矩阵必须大小相同才可以进行加减运算。如果A和B中有一个是标量,则该标量与矩阵的每一个元素进行运算, A+B 和A-B。 (2)矩阵的乘法运算: A的列数必须和B的行数相等,除非其中有一个是标量,A*B 。 例:A=1 2 3;4 5 6 B=eye(2,3)计算: c=A+B,d=A*B,d=B*A,(3)矩阵的除法运算 矩阵的除法运算表达式有两种: AB %左除, A*X=B的解 A/B %右除,X*B=A的解 注:A/B=A*B-1 ,B-1是B的逆矩阵,也可用inv(b)来表示。 (4)矩阵的乘方 B为正整数时,表示矩阵A自乘B次; B为负整数时,表示先将矩阵A求逆,再自乘B次,仅对非奇异矩阵成立;B为矩阵时不能运算,会出错。 AB (5)矩阵的转置 A %矩阵A的转置,2.4.1 算术运算,点运算符号为矩阵的相应运算符前面加“.” ,两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。 格式如下: A.*B %数组A和数组B对应元素相乘 A./B %数组A除以数组B的对应元素 A.B %数组B除以数组A的对应元素 A.B %数组A和数组B对应元素的乘方,练习,2点运算,2.4.1 算术运算,Tips: 1)若A、B两矩阵具有相同的维数,则A.B表示两矩阵对应元素进行乘方运算。 2)指数可以是标量,底也可以是标量。,2.4.1 算术运算,常用的数学函数,2.4.1 算术运算,2.4.2 关系运算,关系操作符有、=、 = =(等于)、 =(不等于) 关系运算规则: 如果比较的两个变量都是标量,则结果为1(true)或0(false); 如果比较的两个变量都是矩阵,则必须尺寸大小相同,比较的是 两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元 素比较结果,结果也是同样大小的矩阵,它的元素由0、1组成; 如果比较的是一个矩阵和一个标量,则把矩阵的每个元素分别与 标量比较,结果为与矩阵大小相同的矩阵它的元素由0、1组成。 注意:两个浮点数比较是否相等时,由于浮点数存储的相对误差的存在,因此直接比较是不合适的,而应使用两数差小于一定范围来表示相等。,练习,2.4.3 逻辑运算,MATLAB 中逻辑型(logical)数据只有“1”和“0”,分别表示true和false两种状态,逻辑型变量只占1个字节 函数logical可以用来将数值型转换为逻辑型,任何非零的数值都转换为逻辑1,数值0转换为逻辑0。 例:将矩阵转换成逻辑变量。 a=0:5; b=logical(a);,运算法则: (1)在逻辑运算中,非0元素表示true,0元素表示false。 (2)设参与逻辑运算的是两个标量a和b,那么 a当a非零时,运算结果为0。 (3)若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同 位置上的元素按标量规则逐个进行。最终运算结果是一个与 原矩阵同维的矩阵,其元素由1和0组成。 (4)若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在 标量与矩阵中的每个元素之间按标量规则逐个进行。最终运 算结果是一个与矩阵同维的矩阵,其元素由1或0组成。 (5)逻辑非是单目运算符,也服从矩阵运算规则。 (6)在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最 低。,元素的逻辑运算是将数组中的元素一一进行逻辑运算,常用的逻辑运算符:&(与)、|(或)、(非)和xor(异或)。,2.4.3 逻辑运算,各类运算符的优先级为:括号算术运算符关系运算符逻辑运算符 各符号优先顺序为: 括号() 转置 . 幂 . 一元加减+ - 逻辑非 乘*. * 除/ ./ . 加减+ - 冒号: 关系运算 = = = = 元素逻辑运算与& 元素逻辑运算或|,2.4.3 逻辑运算,例:使用关系运算和元素的逻辑运算找出大于60小于100的数的位置。,num=round(rand(1,10)*100);%生成60)&(num100) n=n.*num result=find(n)%查找非0位置,按索引方式 as=n(result)%显示这些数字,练习,2.4.3逻辑运算,2.5 字符串,字符串由多个字符组成,是1n的字符数组,每一个字符都是字符数组的一个元素,以ASCII码的形式存放并区分大小,而显示的形式则是可读的字符。 MATLAB在存储字符串时,每一个字符以ASCII码的形式存放,占用两个字节。,创建字符串 用单引号( )括起字符来直接赋值创建字符串。 使用两个单引号()输入字符串中的单引号 s3=显示matlab s3 =显示matlab,2.5 字符串,2.5 字符串,2. 字符串合并 strcat函数用于将字符串水平连接合并成一个新字符串,合并的同时会将字符串尾的空格删除。语法格式如下: strcat(s1,s2,) %将s1,s2合并成一个长字符串 char(s1,s2,) %将s1,s2合并成一个字符数组 strvcat(s1,s2,) %将s1,s2合并成一个字符数组,3. 字符串与数值的转换 abs为ASCII将字符串转换码数值 str2num将字符串转换为数值 str2double将元胞字符串数组转换为数值 4. 字符串的其他操作 MATLAB 7. x还可以对字符串进行比较、查找、运行等操作。,2.5 字符串,例 使用字符串函数进行运算。 str=a+b,c+d, str = a+b,c+d, str1=a+b, str1=strrep(str1,*2) %将,用*2替换 str1 = a+b*2 a=5 b=2 eval(str1) %执行字符串str1 ans = 9 str2=c+d, str2=upper(str2) %将字符串转换为大写字母 str2 = C+D,练习,2.6 结构体和元胞数组,元胞数组是常规数值数组的扩展,其基本元素是元胞,每一个元胞可以看成是一个单元(Cell),用来存放各种不同类型不同尺寸的数据,如矩阵、多维数组、字符串、元胞数组和结构体。 元胞数组可以是一维、二维或多维,使用大括号()表示,每一个元胞以下标区分,下标的编码方式也与矩阵相同,分为单下标方式和全下标方式。,1 元胞数组,1. 创建元胞数组 (1)直接创建 A=cell1,1 2;3 4;1 2,matlab,0:1:5 (2)使用元胞创建 A(1,1)=cell1; A(1,2)=1 2;3 4; A(2,1)=1 2,matlab; A(2,2)=0:1:5 (3)由各元胞内容创建 A1,1=cell1; A1,2=1 2;3 4; A2,1=1 2,matlab; A2,2=0:1:5,2.6 结构体和元胞数组,(4)使用cell函数创建 cell函数创建元胞数组的语法格式: A=cell(m,n) %创建mn元胞数组 例:使用cell函数创建元胞数组。 A=cell(2,2) %创建空的元胞数组 A1,1=cell1,2.6 结构体和元胞数组,2. 元胞数组的操作 (1)用取元胞数组的元素内容 s=C2,1 %全下标方式 s=C2 %单下标方式 (2)用()取元胞数组的元素 n=C(2,1) %全下标方式 n = 1x4 double,2.6 结构体和元胞数组,2 结构体,MATLAB通过使用结构(structure)数据类型把一组不同类型的数据同时又是在逻辑上相关的数据组成一个有机的整体,以便于管理和引用。 结构体中的元素可以是不同的数据类型,它能将一组不同属性的数据纳入到一个统一点变量名下进行管理。建立一个结构矩阵可采用给结构成员赋值得办法。,2.6 结构体和元胞数组,2. 创建结构体 (1)直接创建 直接使用赋值语句创建结构体,用“结构体名.字 段名”的格式赋值。 例:直接创建结构数组存放图形对象,结构体ps的结构如图所示,程序分析,2.6 结构体和元胞数组,(2)利用struct函数创建 struct(field1,值1,filed2,值2,) %创建结构体将值赋给各字段 上图中的ps(1)使用该函数创建的命令为: ps(1)=struct( name , 曲线, color , red , position , 0,0,300,300 ),2.6 结构体和元胞数组,2. 获取结构体内部数据 (1)使用“.”符号获取 Ps(1).position Ps(1).position.(1,3) (2)用getfield函数获取 getfield(A,A_index,fieldname,field_index) getfield(ps,1,position) getfield(ps,1,position,3) (3)使用fieldnames函数获取结构体的所有字段 fieldnames (array) %获取结构体的所有字段 (4)使用“”合并相同字段的数据 X=,2.6 结构体和元胞数组,3. 结构体的操作函数 (1)删除结构体的字段 rmfield(A,fieldname) %删除字段 (2)修改结构体的数据 setfield(A,A_index,fieldname,field_index,值) setfield(ps,1,color,green) (3)增加结构体的字段 ps(1).length=700,2.6 结构体和元胞数组,2.7数组的信息获取,1. 数组的尺寸 2. 数组的检测函数 以“i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年零售行业无人商店发展前景分析研究报告
- 2025年科技行业人工智能应用前景分析报告
- 2025年生物技术行业市场前景预测研究报告
- 2025年医疗科技行业健康科技应用前景研究报告
- 2025年零售连锁行业无人超市发展前景研究报告
- 商场保洁员培训课件
- 威海市2025山东威海市文登区招考劳务派遣制书记员12人笔试历年参考题库附带答案详解
- 国家事业单位招聘2025中国疾病预防控制中心(中国预防医学科学院)教育培训处(研究生院)招笔试历年参考题库附带答案详解
- 国家事业单位招聘2025中国东盟博览会秘书处招聘4人笔试历年参考题库附带答案详解
- 哈尔滨市2025中共黑龙江省委党校(黑龙江省行政学院)招聘专业技术人员19人笔试历年参考题库附带答案详解
- 中学物理实验室安全管理制度
- 沂沭泗河洪水东调南下续建工程南四湖湖东堤工程施工组织设计
- 制鞋工艺流程
- 土石方工程运输合同
- 国际伤口治疗师汇报
- 《电工基础(第2版)》中职全套教学课件
- 河道清淤与水生态恢复方案
- 2024-2025大学英语考试六级汉译英中英对照
- 铂类化疗药物配置
- 2024-2025学年广东省深圳实验学校高中园高一(上)第一次段考数学试卷(含答案)
- 2024-2025学年天津市和平区双菱中学七年级(上)第一次月考数学试卷
评论
0/150
提交评论