您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > 《《MATLAB教程及实训》(教程全集)2
第2章MATLAB基本运算2.1数据类型2.2矩阵和数组的算术运算2.3字符串2.4日期和时间2.5结构体和元胞数组2.6多维数组2.7关系运算和逻辑运算2.8数组的信息获取2.9多项式2.1数据类型MATLAB7.3定义了15种基本的数据类型,包括整型、浮点型、字符型和逻辑型等,用户甚至可以定义自己的数据类型。数组Char字符型Numeric数值型cell元胞型structure结构体型JavaclassesJava类Functionhandle函数句柄int8、int16、int32、int64uint8、uint16、uint32、uint64single单精度型double双精度型Userclasses用户类型2.1.1常数和变量1.常数2.变量MATLAB的变量命名规则如下:•变量名区分字母的大小写。例如,“a”和“A”是不同的变量。•变量名不能超过63个字符,第63个字符后的字符被忽略。•变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号(如,。%等)。•关键字(如if、while等)不能作为变量名。练习(2)特殊变量特殊变量名取值特殊变量名取值ans运算结果的默认变量名i或ji=j=,虚数单位pi圆周率πnargin函数的输入变量数目eps浮点数的相对误差nargout函数的输出变量数目inf或INF无穷大,如1/0realmin最小的可用正实数NaN或nan不定值,如0/0、∞/∞、0×∞realmax最大的可用正实数2.1.2整数和浮点数1.整数数据类型表示范围类型转换函数无符号8位整数uint80~28-1uint8()无符号16位整数uint160~216-1uint16()无符号32位整数uint320~232-1uint32()无符号64位整数uint640~264-1uint64()有符号8位整数int82-7~27-1int8()有符号16位整数int162-15~215-1int16()有符号32位整数int322-31~231-1int32()有符号64位整数int642-63~263-1int64()练习2.浮点数数据类型存储空间表示范围类型转换函数单精度型single4字节-3.40282×1038~+3.40282×1038single()双精度型double8字节-1.79769×10308~+1.79769×10308double()2.1.3复数MATLAB用特殊变量“i”或“j”表示虚数的单位。复数的产生可以有几种方式:z=a+b*i或z=a+b*jz=a+bi或z=a+bj(当b为常数时)z=r*exp(i*theta)z=complex(a,b)2.2矩阵和数组的算术运算•空数组(emptyarray):没有元素的数组;•标量(scalar):是指1×1的矩阵,即为只含一个数的矩阵;•向量(vector):是指1×n或n×1的矩阵,即只有一行或者一列的矩阵;•矩阵(matrix):是一个矩形的m×n数组,即二维数组;•数组(array):是指多维数组m×n×k×…,其中矩阵和向量都是数组的特例。2.2.1数组的创建在MATLAB中矩阵的创建应遵循以下基本常规:•矩阵元素应用方括号([])括住;•每行内的元素间用逗号(,)或空格隔开;•行与行之间用分号(;)或回车键隔开;•元素可以是数值或表达式。1.空数组2.向量向量包括行向量(rowvector)和列向量(columnvector),即1×n或n×1的矩阵。(1)使用from:step:to方式生成向量如果是等差的行向量,可以使用“from:step:to”方式生成:from:step:to说明:from、step和to分别表示开始值、步长和结束值;当step省略时则默认为step=1;当step省略或step0而fromto时为空矩阵,当step0而fromto时也为空矩阵。练习(2)使用linspace和logspace函数生成向量linspace(a,b,n)%生成线性等分向量logspace(a,b,n)%生成对数等分向量说明:a、b、n三个参数分别表示开始值、结束值和元素个数;linspace函数生成从a到b之间线性分布的n个元素的行向量,n如果省略则默认值为100;logspace函数生成从10a到10b之间按对数等分的n个元素的行向量,n如果省略则默认值为50。3.矩阵矩阵是m行n列(m×n)的二维数组,需要使用“[]”、“,”、“;”、空格等符号创建。例2-7创建矩阵。a=[1:4;linspace(2,5,4);9:-1:6]a=123423459876b=[123456]%使用回车分隔行b=1234562.2.2数组的操作1.数组的元素(1)全下标方式全下标方式是指n维数组中元素通过n个下标来引用:a(d1,d2,d3….)(2)单下标方式数组元素用单下标引用,就是先把数组的所有列按先左后右的次序连接成“一维长列”,然后对元素位置进行编号。以m×n的矩阵a为例,元素a(i,j)对应的单下标=(j-1)×m+i。a(1,3)a(7)a(2,4)a(11)图2.4矩阵的元素2.子矩阵的产生图2-5数组a的子矩阵(1)用全下标方式注意:下标为“:”表示向量的所有元素,下标为“end”表示某一维中的最后一个元素。(2)用单下标方式a([10;11;12])a(10:12)'a(10:end)'a([10;11;end])练习(3)逻辑索引方式逻辑索引方式是通过一个元素值为0或1的逻辑数组为下标,其大小和对应数组相同。例2-8使用逻辑索引方式产生图2-6中的第四列子矩阵。a=[1234;2345;9876];l1=logical([111])l1=111l2=logical([0001])l2=0001a(l1,l2)ans=4563.数组的赋值数组的赋值包括全下标方式、单下标方式和全元素方式。•全下标方式:a(i,j,k…)=b,给a数组的部分元素赋值,则b数组的行列数必须等于a数组的行列数。•单下标方式:a(n)=b,b为向量,元素个数必须等于a矩阵的元素个数。•全元素方式:a=b,给a数组的所有元素赋值,则b数组的元素总数必须等于a矩阵的元素总数,但行列数不一定相等。4.矩阵的合并矩阵的合并就是把两个以上的矩阵连接起来得到一个新矩阵,“[]”符号可以作为矩阵合并操作符,命令格式如下:c=[ab]%将矩阵a和b水平方向合并为cc=[a;b]%将矩阵a和b垂直方向合并为c5.数组元素的删除在MATLAB中可以对数组中的单个元素、子矩阵和所有元素进行删除操作,删除就是将其赋值为空矩阵(用[]表示)。2.2.3矩阵和数组函数1.矩阵的常用函数det(x)、rank(x)、inv(x)、[v,d]=eig(x)、diag(x)、[q,r]=qr(x)、triu(x)和tril(x)2.数组翻转常用数组翻转函数:flipud(x)、fliplr(x)、flipdim(x,dim)、rot90(x,k)3.数组查找一般用于在比较命令后面,查找非零元素。其命令格式如下:[a,b,…]=find(x)n=find(x)4.数据统计MATLAB的数据统计分析是按列进行的,包括得出各列的最大值、最小值等统计。2.2.4矩阵和数组的算术运算1.矩阵运算矩阵的基本运算是+、-、×、÷和乘方(^)等。(1)矩阵的加、减运算A+B和A-B(2)矩阵的乘法运算A*B(3)矩阵的除法运算矩阵的除法运算表达式有两种:A\B%左除A/B%右除(4)矩阵的乘方A^B(5)矩阵的转置A'%矩阵A的转置2.数组运算数组的乘、除、乘方和转置运算符号为矩阵的相应运算符前面加“.”,数组的乘、除、乘方和转置运算格式如下:A.*B%数组A和数组B对应元素相乘A./B%数组A除以数组B的对应元素A.\B%数组B除以数组A的对应元素A.^B%数组A和数组B对应元素的乘方A.'%数组A的转置练习例2-14使用数组算术运算法则进行向量的运算。t=0:pi/3:2*pi;%t为行向量x=sin(t)*cos(t)???Errorusing==mtimesInnermatrixdimensionsmustagree.x=sin(t).*cos(t)x=00.4330-0.4330-0.00000.4330-0.4330-0.0000y=sin(t)./cos(t)y=01.7321-1.7321-0.00001.7321-1.7321-0.00002.2.5稀疏矩阵一个矩阵中如果包含很多元素值为0,则此矩阵可以只存储少量的非0元素,这个矩阵称为稀疏矩阵(SparseMatrix)。1.创建稀疏矩阵sparse函数的语法格式如下:sparse(i,j,s,m,n)%直接创建稀疏矩阵sparse(p)%由全元素矩阵p转换为稀疏矩阵2.稀疏矩阵的存储空间3.稀疏矩阵的运算稀疏矩阵的标准数学运算按照以下原则:如果二元运算的两个操作数中有一个是全元素矩阵一个是稀疏矩阵,则对于“+”、“-”、“*”、“\”运算结果为全元素矩阵,而“&”、“.*”等运算结果为稀疏矩阵;如果函数的输入参数是矩阵,输出的参数为矩阵,则输出参数以输入矩阵的方式来表示,即当输入参数为稀疏矩阵时,输出参数也是稀疏矩阵。2.3字符串2.3.1创建字符串字符串由多个字符组成,是1×n的字符数组;每一个字符都是字符数组的一个元素,以ASCII码的形式存放并区分大小,而显示的形式则是可读的字符。1.创建字符串s1='matlab7.3's1=matlab7.3(1)直接赋值用单引号('')括起字符来直接赋值创建字符串。使用两个单引号('')输入字符串中的单引号s3='显示''matlab'''s3=显示‘matlab’(2)多个字符串组合str2=[s1;s2,'';s3]str2=matlab7.3字符串显示'matlab'2.字符数组的存储空间MATLAB在存储字符串时,每一个字符以ASCII码的形式存放,占用两个字节。练习2.3.2字符串函数1.字符串合并strcat函数用于将字符串水平连接合并成一个新字符串,合并的同时会将字符串尾的空格删除。语法格式如下:strcat(s1,s2,…)%将s1,s2…合并成一个长字符串char(s1,s2,…)%将s1,s2…合并成一个字符数组strvcat(s1,s2,…)%将s1,s2…合并成一个字符数组2.字符串与数值的转换abs将字符串转换为ASCII码数值str2num将字符串转换为数值str2double将元胞字符串数组转换为数值3.字符串的其他操作MATLAB7.3还可以对字符串进行比较、查找、运行等操作。例2-19使用字符串函数进行运算。str='a+b,c+d,'str=a+b,c+d,str1=strrep(str1,',','*2')%将,用*2替换str1=a+b*2a=5b=2eval(str1)%执行字符串str1ans=9str2=upper(str2)%将字符串转换为大写字母str2=C+D,练习2.4日期和时间2.4.1日期时间的表示格式MATLAB7.3以三种格式表示:日期字符串、连续的日期数值和日期向量,不同的日期格式可以相互转换。1.日期格式(1)日期字符串日期字符串是最常用的,有多种输出格式。例,“2007年1月1日”可以表示为:‘01-Jan-200708:50:10’、‘01-Jan-2007’、‘01/01/2007’、等。(2)连续的日期数值733043(3)日期向量[yearmonthdayhourminutesecond]2.4.2日期时间函数1.获取系统时间date:按照日期字符串格式获取当前系统时间;now:按照连续的日期数值格式获取当前系统时间;clock:按照日期向量格式获取当前系统时间。2.提取日期时间信息分别使用year、month、day、hour、mi
本文标题:《《MATLAB教程及实训》(教程全集)2
链接地址:https://www.777doc.com/doc-2865203 .html