2020年1月20日星期一1Matlab软件应用与开发四川理工学院数学系柏宏斌制作版权所有2008年3月2020年1月20日星期一2第2章MATLAB矩阵及其运算2.1变量和数据操作2.2MATLAB矩阵2.3MATLAB运算2.4矩阵分析2.5矩阵的超越函数2.6字符串2.7结构数据和单元数据2.8稀疏矩阵2020年1月20日星期一32.1变量和数据操作1.变量命名(1)字母开头,后接字母、数字或下划线的字符序列(2)最多63个字符(3)变量名区分字母的大小写2.赋值语句(1)变量=表达式(2)表达式:用运算符将有关运算量连接起来的式子,其结果是一个矩阵2.1.1变量与赋值2020年1月20日星期一4例2-1计算表达式的值,并显示计算结果。在MATLAB命令窗口输入命令:x=1+2i;y=3-sqrt(17);z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y))输出结果是:z=-0.3488+0.3286i2020年1月20日星期一52.1.2预定义变量MATLAB工作空间中,驻留几个由系统本身定义的变量•ans用于结果的缺省变量名•pi圆周率•eps计算机的最小数•inf无穷大•NaN不定量•i或ji=j=-1的开方•realmin最小可用正实数•realmax最大可用正实数预定义变量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。2020年1月20日星期一62.1.3内存变量的管理1.内存变量的删除与修改工作空间窗口:显示所有内存变量的属性。当选中某些变量后,再单击Delete按钮,就能删除这些变量。当选中某些变量后,再单击Open按钮或双击,将进入变量编辑器。通过变量编辑器可以直接观察变量中的具体元素,也可修改变量中的具体元素。2020年1月20日星期一7clear命令用于删除MATLAB工作空间中的变量。who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单。who命令只显示出驻留变量的名称。whos在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等信息。2020年1月20日星期一82.内存变量文件利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来,扩展名是.mat。MAT文件的生成和装入由save和load命令来完成。常用格式为:save文件名[变量名表][-append][-ascii]load文件名[变量名表][-ascii]2020年1月20日星期一9———命令行编辑入门———-MATLAB的变量管理•用who检查MATLAB内存变量•鍵入whos,获得驻留变量的详细情况:全部变量名,变量的数组维数,占用字节数,变量的类别(如双精度),是否复数等.•变量的存取savesaXYZ%选择内存中的变量X,Y,Z保存为sa.mat文件•清空内存,从sa.mat向内存装载变量Z.clear%清除内存中的全部变量loadsaZ%把sa.mat文件中的Z变量装入内存who%检查内存中有什么变量2020年1月20日星期一10其中,文件名可以带路径,但不需带扩展名.mat,命令隐含一定对.mat文件进行操作。变量名表中的变量个数不限,只要内存或文件中存在即可,变量名之间以空格分隔。当变量名表省略时,保存或装入全部变量。-ascii选项使文件以ASCII格式处理,省略该选项时文件将以二进制格式处理。save命令中的-append选项控制将变量追加到MAT文件中。2020年1月20日星期一11———命令行编辑入门———-MATLAB的文件管理what返回当前目录下M、MAT、MEX文件列表dir列出当前目录下的所有文件cd显示当前的工作目录type(文件名)在命令窗口下显示该文件的内容delete(文件名)删除M文件which(文件名)显示M文件所在的目录MATLAB文件管理命令2020年1月20日星期一12sin正弦函数asin反正弦函数cos余弦函数acos反余弦函数tan正切函数atan反正切函数cot余切函数acot反余切函数sec正割函数asec反正割函数csc余割函数acsc反余割函数sinh双曲正弦函数asinh反双曲正弦函数cosh双曲余弦函数acosh反双曲余弦函数tanh双曲正切函数atanh反双曲正切函数sech双曲正割函数asech反双曲正割函数csch双曲余割函数acsch反双曲余割函数coth双曲余切函数acoth反双曲余切函数MATLAB的函数————MATLAB常用函数————2020年1月20日星期一13abs(x)绝对值sqrt(x)开平方conj(z)共轭复数round(x)四舍五入floor(x)舍去正小数rat(x)化为分数表示gcd(x,y)最大公因数exp(x)自然指数log(x)e为底的对数Log10(x)10为底的对数angle(z)复数z的相角real(z)复数z的实部imag(z)复数z的虚部fix(x)舍去小数取整ceil(x)加入正小数取整sign(x)符号函数rem(x,y)求x除以y的余数lcm(x,y)最小公倍数pow2(x)以2为底的指数log2(x)以2为底的对数————MATLAB常用函数介绍————2020年1月20日星期一14who列出在MATLAB工作空间中已有的变量whos列出驻留变量的同时,还给出维数及性质clear删除内存中的变量(数据)clc删除命令窗口的内容(已使用过的命令)home光标移到命令窗口的左上角clf删除图形窗口的内容↑调出刚才使用过的命令quit退出MATLAB————MATLAB常用函数介绍————MATLAB命令窗口的部分通用命令2020年1月20日星期一15size(A,1)size(A,2)length(A)flipud(A)fliplr(A)diag(A)diag(v)返回一个二元向量,第一个元素为A的行数,第二个元素为A的列数返回A的行数返回A的列数返回max(size(A))矩阵作上下翻转矩阵作左右翻转提取A的对角元素,返回列向量以向量v作对角元素创建对角矩阵size(A)数组操作函数最大值max、最小值min、求和sum和求平均值mean等函数,一般作用于向量,作用于矩阵时,是函数作用于矩阵相应列向量的结果,返回行向量.2020年1月20日星期一162.1.4MATLAB常用数学函数MATLAB提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。函数使用说明:(1)三角函数以弧度为单位计算。(2)abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。(3)用于取整的函数有fix、floor、ceil、round,要注意它们的区别。(4)rem与mod函数的区别。rem(x,y)和mod(x,y)要求x,y必须为相同大小的实矩阵或为标量。2020年1月20日星期一172.1.5数据的输出格式MATLAB用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。在一般情况下,MATLAB内部每一个数据元素都是用双精度数来表示和存储的。数据输出时用户可以用format命令设置或改变数据输出格式。format命令的格式为:format格式符其中格式符决定数据的输出格式2020年1月20日星期一182.2MATLAB矩阵2.2.1矩阵的建立1.直接输入法最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。2020年1月20日星期一192.利用M文件建立矩阵对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。下面通过一个简单例子来说明如何利用M文件创建矩阵。2020年1月20日星期一20例2-2利用M文件建立MYMAT矩阵。(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵:(2)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。(3)在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。2020年1月20日星期一213.利用冒号表达式建立一个向量冒号表达式可以产生一个行向量,一般格式是:e1:e2:e3其中e1为初始值,e2为步长,e3为终止值。在MATLAB中,还可以用linspace函数产生行向量。其调用格式为:linspace(a,b,n)其中a和b是生成向量的第一个和最后一个元素,n是元素总数。显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。4.建立大矩阵大矩阵可由方括号中的小矩阵或向量建立起来。2020年1月20日星期一222.2.2矩阵的拆分1.矩阵元素通过下标引用矩阵的元素,例如A(3,2)=200采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。在MATLAB中,矩阵元素按列存储,先第一列,再第二列,依次类推。例如A=[1,2,3;4,5,6];A(3)ans=2显然,序号(Index)与下标(Subscript)是一一对应的,以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得。2020年1月20日星期一232.矩阵拆分(1)利用冒号表达式获得子矩阵①A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。②A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。此外,还可利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。2020年1月20日星期一24(2)利用空矩阵删除矩阵的元素在MATLAB中,定义[]为空矩阵。给变量X赋空矩阵的语句为X=[]。注意,X=[]与clearX不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。2020年1月20日星期一252.2.3特殊矩阵1.通用的特殊矩阵常用的产生通用特殊矩阵的函数有:zeros:产生全0矩阵(零矩阵)。ones:产生全1矩阵(幺矩阵)。eye:产生单位矩阵。rand:产生0~1间均匀分布的随机矩阵。randn:产生均值为0,方差为1的标准正态分布随机矩阵。2020年1月20日星期一26例2-3分别建立3×3、3×2和与矩阵A同样大小的零矩阵。(1)建立一个3×3零矩阵。zeros(3)(2)建立一个3×2零矩阵。zeros(3,2)(3)设A为2×3矩阵,则可以用zeros(size(A))建立一个与矩阵A同样大小零矩阵。A=[123;456];%产生一个2×3阶矩阵Azeros(size(A))%产生一个与矩阵A同样大小的零矩阵2020年1月20日星期一27例2-4建立随机矩阵:(1)在区间[20,50]内均匀分布的5阶随机矩阵。(2)均值为0.6、方差为0.1的5阶正态分布随机矩阵。命令如下:x=20+(50-20)*rand(5)y=0.6+sqrt(0.1)*randn(5)此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。2020年1月20日星期一282.用于专门学科的特殊矩阵(1)魔方矩阵魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。2020年1月20日星期一29例2-5将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为