《1第四讲MATLAB矩阵》由会员分享,可在线阅读,更多相关《1第四讲MATLAB矩阵(105页珍藏版)》请在金锄头文库上搜索。
1、友情提示友情提示第四讲第四讲 MATLABMATLAB矩阵运算矩阵运算 MATLAB MATLAB 具有出色的矩阵运算能具有出色的矩阵运算能力,可以解决线性代数中关于矩阵的力,可以解决线性代数中关于矩阵的一切运算!一切运算!引例:一个实际问题引例:一个实际问题 某食品厂收到某种食品的订单,要求这某食品厂收到某种食品的订单,要求这种食品由甲、乙、丙、丁四种原料做成,种食品由甲、乙、丙、丁四种原料做成,且该食品中含蛋白质、脂肪和碳水化合且该食品中含蛋白质、脂肪和碳水化合物的比例分别为物的比例分别为1515、5 5和和1212。而甲、。而甲、乙、丙、丁原料中含蛋白质、脂肪和碳乙、丙、丁原料中含蛋白质
2、、脂肪和碳水化合物的百分比由下表给出。水化合物的百分比由下表给出。一个实际问题一个实际问题甲甲乙乙丙丙丁丁蛋白蛋白质质()()2020161610101515脂肪()脂肪()3 38 82 25 5碳水化合物碳水化合物1010252520205 5问:如何用这四种原料配置出满问:如何用这四种原料配置出满足要求的食品?足要求的食品?方程的建立方程的建立分析方程组的解分析方程组的解u需要研究线性方程组的下列几个问题:需要研究线性方程组的下列几个问题:u方程组是否有解?有解时,解的个数是多少方程组是否有解?有解时,解的个数是多少?如何解?也就是解的存在性和唯一性问题。?如何解?也就是解的存在性和唯一
3、性问题。u有多解时,这些解之间的关系如何?所得的有多解时,这些解之间的关系如何?所得的解针对实际问题是否合理?解针对实际问题是否合理?u无解时,如何找出最接近实际问题的近似解无解时,如何找出最接近实际问题的近似解?线性方程组解的情况线性方程组解的情况学习内容学习内容1变量和数据操作变量和数据操作2数组和矩阵的创建数组和矩阵的创建3数组和矩阵的寻访和操作数组和矩阵的寻访和操作4数组和矩阵运算数组和矩阵运算一、变量和数据操作一、变量和数据操作1.变量命名变量命名u在在MATLAB MATLAB 中中, ,变量名是以变量名是以字母开头字母开头, ,后接后接字母、数字或下划线字母、数字或下划线的字符序
4、列,但的字符序列,但不得不得使用空格和标点符号使用空格和标点符号, ,最多最多6363个字符。如个字符。如my_var_201my_var_201是合法的变量而是合法的变量而my,var201my,var201就就不是变量名不是变量名变量命名命名规则(续)变量命名命名规则(续)u在在MATLAB中中,变量名区分字母的大小变量名区分字母的大小写写,如变量如变量myvar和和MyVar表示两个不同表示两个不同的变量的变量,sin是是MATLAB定义的正弦函数定义的正弦函数名名,但但SIN,Sin等都不是。等都不是。2 2赋值语句赋值语句格式:格式:变量变量= =表达式表达式 其中表达式是用运算符将
5、有关运算量连接其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。起来的式子,其结果是一个矩阵。 如如:X=3;X=1 2;3 4;Z=:X=3;X=1 2;3 4;Z=a+Xa+X2 2赋值语句(续)赋值语句(续)注注: :只要是赋过值的变量只要是赋过值的变量, ,不管是否在屏幕上不管是否在屏幕上显示过显示过, ,都存储在工作空间中,以后可随时都存储在工作空间中,以后可随时显示或调用。变量名尽可能不要重复显示或调用。变量名尽可能不要重复, ,否则否则会覆盖会覆盖 。注注: :当一个指令或矩阵太长时,可用当一个指令或矩阵太长时,可用, ,续行续行3.预定义常量预定义常量u在在MA
6、TLABMATLAB工作空间中,还驻留几个由系统本工作空间中,还驻留几个由系统本身定义的常量。例如,用身定义的常量。例如,用pipi表示圆周率表示圆周率的的近似值,用近似值,用i i,j j表示虚数单位。表示虚数单位。u预定义常量有特定的含义,在使用时,应尽预定义常量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。量避免对这些变量重新赋值。uMATLABMATLAB预定义的变量还有预定义的变量还有ans,epsans,eps( (机器零阀机器零阀值值),),Inf/inf,NaN/nan,realmax,realminInf/inf,NaN/nan,realmax,realmin附:附:
7、MATLABMATLAB中常见的预定义变量表中常见的预定义变量表实例演示实例演示例例: :计算下列表达式的值计算下列表达式的值, ,并显示计算结果。并显示计算结果。x=1+2i;x=1+2i;y=3-sqrt(17);y=3-sqrt(17);z=(cos(abs(x+y)-z=(cos(abs(x+y)-sin(78*pi/180)/(x+abs(y)sin(78*pi/180)/(x+abs(y)其中其中pipi和和i i都是都是MATLABMATLAB预先定义的变量预先定义的变量, ,表表示圆周率示圆周率和虚数单位。和虚数单位。输出结果是:输出结果是:z =-0.3488 + 0.328
8、6iz =-0.3488 + 0.3286i4.4.内存变量的管理内存变量的管理1) 1) 内存变量的删除与修改内存变量的删除与修改 MATLABMATLAB工作空间窗口专门用于内存变量的管理。工作空间窗口专门用于内存变量的管理。在在工作空间窗口中可以显示所有内存变量的属工作空间窗口中可以显示所有内存变量的属性。性。当选中某些变量后,再单击当选中某些变量后,再单击DeleteDelete按钮,按钮,就能删除这些变量。当选中某些变量后,再单就能删除这些变量。当选中某些变量后,再单击击OpenOpen按钮,将进入变量编辑器。通过变量编按钮,将进入变量编辑器。通过变量编辑器可以直接观察变量中的具体元
9、素,也可修辑器可以直接观察变量中的具体元素,也可修改变量中的具体元素。改变量中的具体元素。4.内存变量的管理内存变量的管理u2)clear2)clear命令命令-用于删除用于删除MATLABMATLAB工作工作空间中的变量。(注意与空间中的变量。(注意与clcclc命令的区别)命令的区别)u3)who3)who和和whoswhos命令命令-用于显示在用于显示在MATLABMATLAB工作空间中已经驻留的变量名清工作空间中已经驻留的变量名清单。单。uwhowho命令只显示出驻留变量的名称命令只显示出驻留变量的名称uwhoswhos在给出变量名的同时,还给出它们在给出变量名的同时,还给出它们的大小
10、、所占字节数及数据类型等信息。的大小、所占字节数及数据类型等信息。4.内存变量的管理内存变量的管理u4)4)保存和加载内存变量文件保存和加载内存变量文件u常用格式为:常用格式为:save save 文件名文件名 变量名表变量名表 load load 文件名文件名 变量名表变量名表 4.内存变量的管理内存变量的管理u注注1 1:变量名表中的变量个数不限,只要内变量名表中的变量个数不限,只要内存或文件中存在即可,变量名之间以空格分存或文件中存在即可,变量名之间以空格分隔。当变量名表省略时,保存或装入全部变隔。当变量名表省略时,保存或装入全部变量。量。u注注2 2:内存变量文件的扩展名为内存变量文件
11、的扩展名为.mat.mat。MATMAT文文件的生成和装入由件的生成和装入由savesave和和loadload命令来完成。命令来完成。5.5.数据的输出格式数据的输出格式uMATLABMATLAB用十进制数表示一个常数,具体用十进制数表示一个常数,具体可采用日常记数法和科学记数法可采用日常记数法和科学记数法( (如如3.5e5)3.5e5)两种表示方法。两种表示方法。u 在一般情况下,在一般情况下,MATLABMATLAB内部每一个数据内部每一个数据元素都是用双精度数来表示和存储的。元素都是用双精度数来表示和存储的。5.5.数据的输出格式数据的输出格式u数据输出时用户可以用数据输出时用户可以
12、用formatformat命令设置或命令设置或改变数据输出格式改变数据输出格式, , uformatformat命令的格式为命令的格式为:format+:format+格式符格式符注注: :格式符决定数据的输出格式格式符决定数据的输出格式, ,格式符的格式符的形式可以为形式可以为 compact; compact; losse;banklosse;bank; ; short;long;shortshort;long;short e;longe;long e e等。等。u实例:实例:以不同的格式显示以不同的格式显示pipi的值的值学习内容学习内容1变量和数据操作变量和数据操作2数组和矩阵的创建数
13、组和矩阵的创建3数组和矩阵的寻访和操作数组和矩阵的寻访和操作4数组和矩阵运算数组和矩阵运算MATLABMATLAB矩阵简介矩阵简介u从结构上讲,矩阵(数组)是从结构上讲,矩阵(数组)是MATLABMATLAB数数据存储的基本单元。据存储的基本单元。u从运算角度讲,矩阵形式的数据有多种从运算角度讲,矩阵形式的数据有多种运算形式,例如向量运算,矩阵运算,运算形式,例如向量运算,矩阵运算,数组运算等。数组运算等。二、矩阵的创建二、矩阵的创建1.1.直接输入法直接输入法u最简单的建立矩阵的方法是从键盘直接输最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。入矩阵的元素。将矩阵的元素用将矩阵的元素用方括
14、方括号号括起来,按矩阵行的顺序输入各元素,括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用同一行的各元素之间用空格或逗号空格或逗号分隔,分隔,不同行的元素之间用不同行的元素之间用分号分号分隔。如果只输分隔。如果只输入一行则就形成一个入一行则就形成一个数组数组(又称作向量)(又称作向量)ua=1 2 3;4 5 6 b=1 2 3 4 5 6a=1 2 3;4 5 6 b=1 2 3 4 5 6二、二、矩阵的创建矩阵的创建u注:注:矩阵或数组中的元素可以是任何矩阵或数组中的元素可以是任何MATLABMATLAB表达式表达式 , ,可以是实数可以是实数 , ,也可以是也可以是复数。复数。u例
15、如例如 x=2 pi/2;sqrt(3) 3+5ix=2 pi/2;sqrt(3) 3+5i二、二、矩阵的创建矩阵的创建2.2.利用利用M M文件建立矩阵文件建立矩阵 对于比较大且比较复杂的矩阵,可以为它专对于比较大且比较复杂的矩阵,可以为它专门建立一个门建立一个M M文件。文件。例例 mymatrix1.mmymatrix1.m 利用利用M M文件建立矩阵(续)文件建立矩阵(续) 对以文本格式存储的数据对以文本格式存储的数据MATLABMATLAB也可以也可以使用相关命令读取数据。详细信息同学使用相关命令读取数据。详细信息同学们可以参阅们可以参阅MATLABMATLAB帮助信息!相关命令帮助
16、信息!相关命令有有 dlmread;textread;fopendlmread;textread;fopen等命令等命令二、矩阵(二、矩阵(数组数组)的创建)的创建3.3.利用冒号表达式建立一个数组(向量)注意利用冒号表达式建立一个数组(向量)注意向量也是特殊的矩阵向量也是特殊的矩阵 一般格式是:一般格式是:e1:e2:e3e1:e2:e3其中其中e1e1为初始值,为初始值,e2e2为步长,为步长,e3e3为终止值为终止值冒号表达式创建矩阵(续)冒号表达式创建矩阵(续)u注:注:e3e3为尾元素数值限,而非元素值。为尾元素数值限,而非元素值。u 如如x=1x=1:2 2:7 7u 若步长若步长
17、e2e2为为1 1,则可省略此项输入。,则可省略此项输入。u 如如x=1:5x=1:5u 若若e1e1小于小于e3e3则则e2e2必须大于必须大于0 0,如,如x=1:2:12x=1:2:12u 若若e1e1大于大于e3e3则则e2e2必须小于必须小于0,0,如如x=12:-2:1x=12:-2:1u 若若e1e1等于等于e3e3则只有一个元素则只有一个元素, ,u 如如x=1:2:1x=1:2:1则只输出则只输出1 1二、创建矩阵二、创建矩阵u4.4.采用定数线性采样函数产生向量采用定数线性采样函数产生向量u调用格式为:调用格式为:x=x=linspace(a,b,nlinspace(a,b
18、,n) )u其中其中a a和和b b是生成向量的第一个和最后一个元素是生成向量的第一个和最后一个元素,n,n是元素总数。是元素总数。u作用:作用:a a和和b b之间产生一个等分的之间产生一个等分的n n维向量维向量, ,如果省如果省略略n,n,则系统默认则系统默认n n等于等于100.100.u如:如:x=linspace(1,100,6);x=linspace(1,100,6); x=linspace(1,100) x=linspace(1,100)定数线性采样函数产生向量(续)定数线性采样函数产生向量(续)注:注:它与冒号表达式的区别是:它与冒号表达式的区别是: linspacelins
19、pace是维数已知的情况下产生向量,是维数已知的情况下产生向量,冒号表达式冒号表达式是维数未知,间隔已知。是维数未知,间隔已知。二、二、创建矩阵创建矩阵u5.5.采用定数对数采样函数产生向量采用定数对数采样函数产生向量u调用格式为:调用格式为: y=y=logspace(a,b,nlogspace(a,b,n););u其中其中a a和和b b是生成向量的第一个和最后一个元是生成向量的第一个和最后一个元素素,n,n是元素总数。是元素总数。u作用作用: :是是10a10a和和10b10b之间产生一等分的之间产生一等分的n n维向维向量量, ,如果省略如果省略n,n,则系统默认则系统默认n n等于等
20、于50.50.定数对数采样函数产生向量(续)定数对数采样函数产生向量(续)u如如x=logspace(0,5,6);x=logspace(0,5)x=logspace(0,5,6);x=logspace(0,5)u注:注:此命令主要用在数字信号处理中,此命令主要用在数字信号处理中,在其中又时需要产生对数刻度坐标在其中又时需要产生对数刻度坐标 5.5.用用MATLABMATLAB函数创建矩阵函数创建矩阵u空阵空阵 MATLAB MATLAB允许输入空阵,当一项允许输入空阵,当一项操作无结果时,返回空阵。操作无结果时,返回空阵。urand()rand() 随机矩阵随机矩阵 , ,元素值在(元素值在
21、(0 0,1 1)内)内u思考:如何创建一个在任意区间(思考:如何创建一个在任意区间(a,ba,b)上取值)上取值的随机矩阵的随机矩阵ua+(ba+(b-a)*rand()-a)*rand()ueye()eye() 单位矩阵单位矩阵?5.用用MATLAB函数创建矩阵函数创建矩阵uzeros ()zeros ()全部元素都为全部元素都为0 0的矩阵;的矩阵;uones() ones() 全部元素都为全部元素都为1 1的矩阵;的矩阵;urandnrandn() () 产生均值为产生均值为0 0,方差为,方差为1 1的标的标准正态分布随机矩阵。准正态分布随机矩阵。u注:注:randn(randn(s
22、tatestate,0),0)表示将正态随机表示将正态随机数发生器置数发生器置0 05.用用MATLAB函数创建矩阵函数创建矩阵u注注: :()()中如果输入中如果输入(m m,n n)则说明产生一个则说明产生一个m m行行n n列列的矩阵(的矩阵(eye()eye()函数除外函数除外) u如果输入如果输入(m m)则产生一个则产生一个m m行行m m列列的方阵的方阵u如果输入(如果输入(m,n,pm,n,p, ,)则产生)则产生m*n*p*m*n*p*阶的阶的矩阵(此项用在产生高维矩阵)矩阵(此项用在产生高维矩阵)u如果输入如果输入(size(Asize(A) ))则产生一个与则产生一个与A
23、 A大小相大小相同的矩阵同的矩阵4.用用MATLAB函数创建矩阵函数创建矩阵 注:注:还有还有伴随矩阵、稀疏矩阵、魔方矩阵、伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵、范德蒙等矩阵对角矩阵、范德蒙等矩阵的创建,这些特殊的创建,这些特殊矩阵在矩阵在MATLABMATLAB中有专门的函数可以建立,在中有专门的函数可以建立,在此就不一一介绍了。特殊矩阵的建立见相关此就不一一介绍了。特殊矩阵的建立见相关MATLABMATLAB参考书或帮助文件。参考书或帮助文件。实例演示实例演示例例: :建立与矩阵建立与矩阵A A同样大小的零矩阵。设矩阵同样大小的零矩阵。设矩阵A A为为2 23 3矩阵。矩阵。 具体命令如
24、下:具体命令如下:A=1 2 3;4 5 6; A=1 2 3;4 5 6; % %产生一个产生一个2 23 3阶矩阵阶矩阵A Azeros(size(Azeros(size(A) ) % %产生一个与矩阵产生一个与矩阵A A同样大小的零矩阵同样大小的零矩阵学习内容学习内容1变量和数据操作变量和数据操作2数组和矩阵的创建数组和矩阵的创建3数组和矩阵的寻访和操作数组和矩阵的寻访和操作4数组和矩阵运算数组和矩阵运算1.1.矩阵和数组拆分矩阵和数组拆分u1.1.利用冒号表达式可获得一矩阵的子矩阵利用冒号表达式可获得一矩阵的子矩阵uA(iA(i) )表示取数组或者矩阵的第表示取数组或者矩阵的第i i个
25、元素(矩阵个元素(矩阵的元素是的元素是按列排序按列排序)uA(i,jA(i,j) )表示取表示取A A矩阵第矩阵第i i行、第行、第j j列的元素列的元素uA(e1:e2:e3)A(e1:e2:e3)表示取数组或矩阵表示取数组或矩阵A A的第的第e1e1元素开元素开始每隔始每隔e2e2步长一直到步长一直到e3e3的所有元素的所有元素1.1.矩阵和数组拆分矩阵和数组拆分uA(mA(m n l) n l)表示取数组或矩阵表示取数组或矩阵A A中的第中的第m, n, m, n, l l个元素个元素uA(:,jA(:,j) )表示取表示取A A矩阵的第矩阵的第j j列全部元素;列全部元素;uA(iA(
26、i,:),:)表示表示A A矩阵第矩阵第i i行的全部元素;行的全部元素;uA(i:i+mA(i:i+m,:),:)表示取表示取A A矩阵第矩阵第i ii+mi+m行的全部行的全部元素;元素;1.1.矩阵和数组拆分矩阵和数组拆分uA(:,k:k+mA(:,k:k+m) )表示取表示取A A矩阵第矩阵第k kk+mk+m列的全列的全部元素部元素; ;uA(i:i+m,k:k+mA(i:i+m,k:k+m) )表示取表示取A A矩阵第矩阵第i ii+mi+m行行内内, ,并在第并在第k kk+mk+m列中的所有元素列中的所有元素; ;u例:例:建立一个建立一个5 5阶的魔方矩阵,完成有关阶的魔方矩
27、阵,完成有关矩阵的寻访操作矩阵的寻访操作1.1.矩阵和数组拆分矩阵和数组拆分u注:注:还可利用一般向量和还可利用一般向量和endend运算符来表示运算符来表示矩阵下标矩阵下标, ,从而获得子矩阵。从而获得子矩阵。endend表示某一表示某一维的末尾元素下标。维的末尾元素下标。uA(i,endA(i,end) )表示取表示取A A矩阵矩阵i i行的最后一个元素行的最后一个元素uA(end,jA(end,j) )表示取表示取A A矩阵矩阵j j列的最后一个元素列的最后一个元素uA(i:endA(i:end) )表示取矩阵第表示取矩阵第i i个元素到最后一个个元素到最后一个元素元素1.矩阵和数组拆分
28、矩阵和数组拆分u2.2.对角元素抽取函数对角元素抽取函数diagdiagudiag(X,kdiag(X,k)-)-抽取矩阵抽取矩阵X X的第的第k k条对角线的元素条对角线的元素, ,uk=0k=0时即为抽取主对角线时即为抽取主对角线, , k0 k0时为上方第时为上方第k k条对角线条对角线, , k0 k0时为下方第时为下方第k k条对角线条对角线 (注意矩阵对角线的计数方法)(注意矩阵对角线的计数方法)udiag(Xdiag(X)-)-相当于相当于diag(X,0)diag(X,0)diagdiag命令(续)命令(续)u注:注:diag命令还可以用来建立对角矩阵命令还可以用来建立对角矩阵
29、(先要给出主对角线上(先要给出主对角线上 的元素)的元素)udiga(v,k)-使向量使向量v为所得矩阵的第为所得矩阵的第k条条对角线元素对角线元素udiag(v)-使得使得v为矩阵的主对角元素为矩阵的主对角元素实例演示实例演示u利用初等变化求矩阵的秩利用初等变化求矩阵的秩步骤详解步骤详解uA=1 -2 -1 0 2;-2 4 2 6 -6;2 -1 0 A=1 -2 -1 0 2;-2 4 2 6 -6;2 -1 0 2 3;3 3 3 3 4;%2 3;3 3 3 3 4;%输入矩阵数据输入矩阵数据uA(2,:)=A(2,:)+2*A(1,:);A(2,:)=A(2,:)+2*A(1,:)
30、;% %将第一行乘将第一行乘2 2加到第加到第2 2行上行上uA(3,:)=A(3,:)-2*A(1,:);A(3,:)=A(3,:)-2*A(1,:);% %将第一行乘将第一行乘-2-2加到第加到第3 3行上行上uA(4,:)=A(4,:)-3*A(1,:);A(4,:)=A(4,:)-3*A(1,:);% %将第一行乘将第一行乘-3-3加到第加到第4 4行上行上步骤详解步骤详解uA(2 3,:)=A(3 2,:);A(2 3,:)=A(3 2,:);% %交换第二行和第三行的数据交换第二行和第三行的数据uA(3 4,:)=A(4 3,:);A(3 4,:)=A(4 3,:);% %交换第三
31、行和第四行的数据交换第三行和第四行的数据uA(3,:)=A(3,:)-3*A(2,:);A(3,:)=A(3,:)-3*A(2,:);% %将第二行乘以将第二行乘以-3-3加到第三行上加到第三行上uA(4,:)=A(4,:)+2*A(3,:);A(4,:)=A(4,:)+2*A(3,:);% %将第三行乘以将第三行乘以2 2加到第四行上加到第四行上实例演示实例演示u对角元素抽取函数对角元素抽取函数diagdiag实例实例ua=pascal(4) %a=pascal(4) %产生一个产生一个4 4阶阶pascalpascal矩阵矩阵uV=V=diag(adiag(a) %) %抽取矩阵抽取矩阵a
32、 a的主对角元素的主对角元素uV=diag(a,2) %V=diag(a,2) %抽取矩阵抽取矩阵a a的第二条对角线的第二条对角线上的元素上的元素uV=V=diag(diag(adiag(diag(a) %) %使的使的diag(adiag(a) )为矩阵的为矩阵的主对角元素,其余元素为主对角元素,其余元素为0 02.2.矩阵的修改矩阵的修改1 1)直接修改)直接修改: :可用可用 键找到所要修改的矩阵,键找到所要修改的矩阵,用用键移动到要修改的矩阵元素上即可修键移动到要修改的矩阵元素上即可修改改。2 2)指令修改)指令修改: :可以用可以用A(A( , , )= )= 来修改。来修改。2.
33、矩阵的修改矩阵的修改3 3) 利用空矩阵删除矩阵的元素利用空矩阵删除矩阵的元素在在MATLABMATLAB中,定义中,定义为空矩阵。给变量为空矩阵。给变量X X赋空矩阵的语句为赋空矩阵的语句为X=X=。 注:注:X=X=与与clear Xclear X不同,不同,clearclear是将是将X X从工作空间中删除,而空矩阵则存在于从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为工作空间中,只是维数为0 0。实例演示实例演示例如:例如:a=1 2 0;3 0 5;7 8 9a=1 2 0;3 0 5;7 8 9a = 1 2 0a = 1 2 0 3 0 5 3 0 5 7 8 9 7
34、8 9a(3,3)=0a(3,3)=0a = 1 2 0a = 1 2 0 3 0 5 3 0 5 7 8 0 7 8 0学习内容学习内容1变量和数据操作变量和数据操作2数组和矩阵的创建数组和矩阵的创建3数组和矩阵的寻访和操作数组和矩阵的寻访和操作4数组和矩阵运算数组和矩阵运算1.矩阵加、减(矩阵加、减(,)运算)运算规则:规则:u两个矩阵相加或减是指有相同的行和两个矩阵相加或减是指有相同的行和列两矩阵的对应元素相加减。列两矩阵的对应元素相加减。u 允许参与运算的两矩阵之一是标量允许参与运算的两矩阵之一是标量(常量)。标量与矩阵的所有元素分别(常量)。标量与矩阵的所有元素分别进行加减操作。进行
35、加减操作。2.矩阵乘(矩阵乘( )运算运算uA A矩阵的列数必须等于矩阵的列数必须等于B B矩阵的行数矩阵的行数, ,若若A A为为m mn n矩阵,矩阵,B B为为n np p矩阵,则矩阵,则C=A*BC=A*B为为m mp p矩阵。矩阵。u标量可与任何矩阵相乘。即矩阵的所有标量可与任何矩阵相乘。即矩阵的所有元素都与标量相乘元素都与标量相乘, ,u例如例如:a=1 2 3;4 5 6;7 8;b=1;2;3;:a=1 2 3;4 5 6;7 8;b=1;2;3;uc=a*b d=3*ac=a*b d=3*a3.3.矩阵除法矩阵除法u在在MATLABMATLAB中,有两种矩阵除法运算:中,有两
36、种矩阵除法运算: 和和/ /,分别表示左除和右除。,分别表示左除和右除。u如果如果A A矩阵是非奇异方阵(矩阵是非奇异方阵(det(Adet(A) )不为不为0 0),),则则ABAB和和B/AB/A运算可以实现。运算可以实现。u对于矩阵来说,左除和右除表示两种不同对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般阵运算,一般ABB/AABB/A3.矩阵除法矩阵除法u左除:左除:ABAB等效于等效于A A的逆左乘的逆左乘B B矩阵矩阵, ,也就是也就是inv(Ainv(A)*B)*B注:注:左除用来求解线性方程组左除用来求解
37、线性方程组A*X=BA*X=BuA/BA/B等效于等效于A A左乘左乘B B的逆矩阵的逆矩阵, ,也就是也就是inv(Ainv(A)*B)*B注:注:右除用来求解线性方程组右除用来求解线性方程组X*A=BX*A=BuB/AB/A等效于等效于A A矩阵的逆右乘矩阵的逆右乘B B矩阵矩阵, ,也就是也就是B*B*inv(Ainv(A) )3.矩阵除法矩阵除法u对于含有标量的运算,两种除法运算的结果对于含有标量的运算,两种除法运算的结果相同,如相同,如3/4=433/4=43有相同的值,都等于有相同的值,都等于0.75.0.75.u设设a=10.5,25a=10.5,25, 则则a/5=5a=2.1
38、000 5.0000a/5=5a=2.1000 5.0000u注:注:3/43/4不等于不等于34344.4.矩阵其他常见的运算矩阵其他常见的运算4.4.矩阵的乘方矩阵的乘方: :一个矩阵的乘方运算可以表一个矩阵的乘方运算可以表示成示成AxAx,要求,要求A A为方阵,为方阵,x x为标量。为标量。5.5.矩阵的逆矩阵的逆: :矩阵矩阵A A的逆为的逆为inv(Ainv(A) )6.6.矩阵的秩矩阵的秩: :矩阵矩阵A A的秩为的秩为rank(Arank(A) )4.4.矩阵其他常见的运算矩阵其他常见的运算7.7.矩阵矩阵A A的行列式为:的行列式为:det(Adet(A) )8.8.矩阵矩阵
39、A A的基础解系为的基础解系为null(Anull(A) )9.9.伴随矩阵:引入伴随矩阵的概念,为了求伴随矩阵:引入伴随矩阵的概念,为了求逆阵,一般数学软件都有求逆阵的函数。逆阵,一般数学软件都有求逆阵的函数。 如果如果A A可逆,则可逆,则A*=|A|A(-1)A*=|A|A(-1) 4.矩阵其他常见的运算矩阵其他常见的运算10.10.方阵的迹方阵的迹: :方阵方阵A A的迹为的迹为trace(Atrace(A) )注:注:矩阵的迹指矩阵主对角线上所有元素之和。矩阵的迹指矩阵主对角线上所有元素之和。11.11.化矩阵为最简阶梯型矩阵:化矩阵为最简阶梯型矩阵:rref(Arref(A) )1
40、2.12.求矩阵求矩阵A A的特征多项式:的特征多项式:poly(Apoly(A) )13.13.求矩阵求矩阵A A的正交化矩阵:的正交化矩阵:orth(Aorth(A) )例:例:写出一个写出一个5 5阶阶pascalpascal矩阵矩阵, ,完成上述运算完成上述运算5.5.矩阵的特征值与特征向量矩阵的特征值与特征向量 在在MATLABMATLAB中中, ,计算矩阵计算矩阵A A的特征值和特征向量的特征值和特征向量的函数是的函数是eig(Aeig(A),),常用的调用格式有常用的调用格式有3 3种:种:(1) E=(1) E=eig(Aeig(A) ) 求矩阵求矩阵A A的全部特征值的全部特
41、征值, ,构成向量构成向量E E。(2) V,D=(2) V,D=eig(Aeig(A) ) 求出矩阵求出矩阵A A的全部特征值,构成对角阵的全部特征值,构成对角阵D D,并,并求求A A的特征向量构成的特征向量构成V V的列向量。的列向量。5.5.矩阵的特征值与特征向量矩阵的特征值与特征向量 (3)V,D=(3)V,D=eig(A,eig(A,nobalancenobalance) ) 注:注:与第与第2 2种格式用法类似种格式用法类似 但第但第2 2种格式中先对种格式中先对A A作相似变换后求矩阵作相似变换后求矩阵 A A的特征值和特征向量,的特征值和特征向量, 格式格式3 3是直接求矩阵
42、是直接求矩阵A A的特征值和特征向量的特征值和特征向量实例演示实例演示例例: :用求特征值的方法解方程。用求特征值的方法解方程。3x3x5 5-7x-7x4 4+5x+5x2 2+2x-18=0+2x-18=0命令如下:命令如下:p=3,-7,0,5,2,-18;p=3,-7,0,5,2,-18;A=A=compan(pcompan(p); %A); %A的伴随矩阵的伴随矩阵x1=x1=eig(Aeig(A) %) %求求A A的特征值的特征值x2=x2=roots(proots(p) %) %直接求多项式直接求多项式p p的零点的零点实例演示实例演示u讨论向量组讨论向量组a1=(1 3 3
43、2,);a2=(2 6 9 5);a3=a1=(1 3 3 2,);a2=(2 6 9 5);a3=(-1 -3 3 0)(-1 -3 3 0)的线性相关性的线性相关性uA=1 3 3 2;2 6 9 5;-1 -3 3 0A=1 3 3 2;2 6 9 5;-1 -3 3 0 % %将向量按列排成矩阵将向量按列排成矩阵uRank(ARank(A)%)%结果结果=2=2所以向量线性相关所以向量线性相关注:注:或用或用rref(Arref(A) )化为阶梯型求出秩再判断。化为阶梯型求出秩再判断。还可从最简阶梯型看出向量组的极大无关组。还可从最简阶梯型看出向量组的极大无关组。附:附:Compan命
44、令的使用命令的使用ucompan(ucompan(u) )用来求多项式用来求多项式u u对应的伴随矩阵对应的伴随矩阵uu = 1 0 -7 6%u = 1 0 -7 6%对应多项式对应多项式x3-7*x+6x3-7*x+6uA = A = compan(ucompan(u)%)%求多项式求多项式u u对应的伴随矩阵对应的伴随矩阵ueig(compan(ueig(compan(u) ) u% %求多项式求多项式u u对应的伴随矩阵的特征向量对应的伴随矩阵的特征向量uThis is also This is also roots(uroots(u).).讨论线性方程组是否有解的讨论线性方程组是否有
45、解的MATLABMATLAB方法方法u对线性方程组对线性方程组AX=bAX=b,在,在MATLABMATLAB软件里先给软件里先给系数矩阵系数矩阵A A和常数列矩阵和常数列矩阵b b赋值,赋值,u利用命令利用命令rank(Arank(A) ),rank(Arank(A,b)b)求出系数求出系数矩阵和增广矩的秩。矩阵和增广矩的秩。u再根据下属定理进行判断线性方程组解的再根据下属定理进行判断线性方程组解的情况情况. .讨论线性方程组是否有解的讨论线性方程组是否有解的MATLABMATLAB方法方法u定理定理l:l:u(1)(1)若若r(A)r(A|br(A)r(A|b) ),则线性方程组无解,则线
46、性方程组无解; ;u(2)(2)若若r(Ar(A)=)=r(A|br(A|b)=n)=n,则线性方程组存在,则线性方程组存在唯一解唯一解: :u(3)(3)若若r(Ar(A)=)=r(A|br(A|b)n)n,则线性方程组有无,则线性方程组有无穷多个解。穷多个解。利用左除命令给出线性方程组的利用左除命令给出线性方程组的特解特解u对线性方程组对线性方程组AX=bAX=b,“AbAb”给出该线性方给出该线性方程组的一个特解。程组的一个特解。注注1 1:若若A A为方阵,则为方阵,则AbAb和和inv(Ainv(A)*b)*b基本一致基本一致; ; 若若A A不为方阵,不为方阵,AbAb命令使命令使
47、MatlabMatlab软件自软件自动选择适当的方法来求解。动选择适当的方法来求解。利用左除命令给出线性方程组的利用左除命令给出线性方程组的特解特解u 若若AX=bAX=b无解,命令无解,命令“AbAb”将给出一个最将给出一个最小二乘意义上的近似解,即使小二乘意义上的近似解,即使AX-bAX-b的长度的长度达到最小。达到最小。u AX=bAX=b有无穷解,命令有无穷解,命令“AbAb”将给出一个将给出一个具有最多零元素的特解。具有最多零元素的特解。u 若若AX=bAX=b有唯一解,则命令有唯一解,则命令“AbAb”给出这给出这个唯一解。个唯一解。线性方程组求解的步骤线性方程组求解的步骤u为求线
48、性方程组为求线性方程组AX=bAX=b的通解的通解, ,需先判断方需先判断方程组是否有解。程组是否有解。u若有解则用若有解则用“AbAb”求出一个特解求出一个特解u再用命令再用命令“null(Anull(A) )”求出导出组求出导出组AX=0AX=0的的一个基础解系得出其通解,然后利用定理一个基础解系得出其通解,然后利用定理的结论给出的结论给出AX=bAX=b的通解的通解. .附:线性方程组解的基本定理附:线性方程组解的基本定理u定理:对线性方程组的导出组定理:对线性方程组的导出组AX=bAX=b,若,若r(Ar(A)=rn)=rn,则导出组的基础解系含有则导出组的基础解系含有n n一一r r
49、个解向量个解向量u(1)(1)若若1,1,2 ,2 ,n-rn-r为导出组的基础解系,则为导出组的基础解系,则k1k11,+k21,+k22 +2 + +kn-rkn-rn-rn-r就是导出组就是导出组AX=0AX=0的全的全部解,也称为通解部解,也称为通解; ;u(2)(2)若若0 0是是Ax=bAx=b的一个特解,则的一个特解,则0 0 +k1+k11,+k21,+k22 +2 + +kn-rkn-rn-rn-r就是就是AX=BAX=B的通解的通解实例演示实例演示l例:求下面线性方程组的解例:求下面线性方程组的解实例演示实例演示u(l)(l)先判断线性方程组解的情况。先判断线性方程组解的情
50、况。u输入并运行输入并运行:a=;b=:a=;b=urlrl= =rank(arank(a) ),r2=r2=rank(a,brank(a,b)u运行结果为运行结果为rlrl=r2=35=r2=35,说明该线性方程,说明该线性方程组有无穷多个解。组有无穷多个解。实例演示实例演示u(2)(2)先求出线性方程组的一个特解先求出线性方程组的一个特解x0=abx0=abu(3)(3)再求出导出组再求出导出组ax=0ax=0的一个基础解系的一个基础解系 xx=xx=null(anull(a) )u(4)(4)由定理写出该线性方程组的通解由定理写出该线性方程组的通解6.6.对角阵与三角阵介绍对角阵与三角阵
51、介绍u对角阵对角阵: :只有对角线上有非只有对角线上有非0 0元素的矩阵元素的矩阵称为对角矩阵称为对角矩阵u对角线上的元素相等的对角矩阵称为对角线上的元素相等的对角矩阵称为数数量矩阵量矩阵u对角线上的元素都为对角线上的元素都为1 1的对角矩阵称为的对角矩阵称为单单位矩阵位矩阵6.6.对角阵与三角阵介绍对角阵与三角阵介绍u三角阵三角阵: :三角阵又进一步分为上三角阵和三角阵又进一步分为上三角阵和下三角阵,下三角阵,u所谓上三角阵,即矩阵的主对角线所谓上三角阵,即矩阵的主对角线以下以下的元素全为的元素全为0 0的一种矩阵,的一种矩阵,u下三角阵则是主对角线下三角阵则是主对角线以上以上的元素全为的元
52、素全为0 0的一种矩阵。的一种矩阵。6.6.对角阵的构造对角阵的构造u(1)(1)构造对角矩阵构造对角矩阵: :设设V V为具有为具有m m个元素的向量个元素的向量udiag(Vdiag(V)-)-将产生一个对角矩阵将产生一个对角矩阵, ,其主对角其主对角线元素为向量线元素为向量V V的元素。的元素。udiag(V,kdiag(V,k)-)-产生一个对角阵,其第产生一个对角阵,其第k k条对条对角线的元素即为向量角线的元素即为向量V V的元素。的元素。6. 6. 三角阵的构造三角阵的构造(2)(2)上三角矩阵上三角矩阵-triu(Atriu(A) )triu(A,ktriu(A,k) )是求矩
53、阵是求矩阵A A的第的第k k条对角线以上的条对角线以上的 元素。元素。(3)(3)下三角矩阵下三角矩阵-tril(Atril(A) ) tril(A,ktril(A,k) ),用法,用法triu(A,ktriu(A,k) )完全相同。完全相同。实例演示实例演示ua=pascal(4) %a=pascal(4) %产生一个产生一个4 4阶阶pascalpascal矩阵矩阵u解释下列命令的结果解释下列命令的结果ux=x=triu(atriu(a) )uy=triu(a,2)y=triu(a,2)uz=z=tril(atril(a) )um=tril(a,-1)m=tril(a,-1)实例演示实例
54、演示例例 建立建立5 55 5矩阵矩阵A A,然后将,然后将A A的第一行元素乘的第一行元素乘以以1 1,第二行乘以,第二行乘以2 2,第五行乘以,第五行乘以5 5。分析:分析: 相当于乘了一个主对角元素分别为相当于乘了一个主对角元素分别为1 1到到5 5的的方阵方阵实例演示实例演示 具体命令:具体命令:A=17,0,1,0,15;23,5,7,14,16;4,0,13,A=17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19;0,22;10,12,19,21,3;11,18,25,2,19;D=diag(1:5);D
55、=diag(1:5);D*A %D*A %用用D D左乘左乘A A,对,对A A的每行乘以一个指的每行乘以一个指定常数定常数7.7.点运算点运算u 在在MATLABMATLAB中,有一种特殊的运算,因为中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,其运算符是在有关算术运算符前面加点,所以叫点运算。所以叫点运算。u点运算符有点运算符有.*.*、././、.和和.。u两矩阵或数组进行点运算是指它们的两矩阵或数组进行点运算是指它们的对应对应元素进行相关运算元素进行相关运算,要求两矩阵的维参数,要求两矩阵的维参数相同。相同。实例演示实例演示u比较下列运算的结果说出他们的异同比较下列运算
56、的结果说出他们的异同ua=1 2 3;2 3 4;3 4 5;b=1 1 1;2 2 a=1 2 3;2 3 4;3 4 5;b=1 1 1;2 2 2;3 3 3;c=82;3 3 3;c=8ua+ba+b; ; a.+ba.+b; ; c+ac+a; ; c.+ac.+a; ; a.+ca.+cuaab;a.b;a/b;a./b;ac;a.cb;a.b;a/b;a./b;ac;a.cua*a*b;ab;a.*.*b;cb;c.*.*a;ca;c*a*auac;a.3ac;a.38.8.关系运算关系运算uMATLABMATLAB提供了提供了6 6种关系运算符:种关系运算符:u(小于小于) )
57、、=(大于大于) )、=(=(大于或等于大于或等于) )、=(=(等于等于) )、=(=(不等不等于于) )。u它们的含义不难理解,但要它们的含义不难理解,但要注意其书写注意其书写方法方法与数学中的不等式符号不尽相同。与数学中的不等式符号不尽相同。8.8.关系运算的法则关系运算的法则关系运算符的关系运算符的运算法则运算法则为:为:(1)(1)当两个比较量是标量时,若关系成立当两个比较量是标量时,若关系成立, ,关系表达式结果为关系表达式结果为1,1,否则为否则为0 0(2)(2)当参与比较的量是两个维数相同的矩当参与比较的量是两个维数相同的矩阵时,最终的关系运算的结果是一个维阵时,最终的关系运
58、算的结果是一个维数与原矩阵相同的矩阵,它的元素由数与原矩阵相同的矩阵,它的元素由0 0或或1 1组成。组成。8.8.关系运算的法则关系运算的法则(3)(3)当参与比较的一个是标量,而另一个是矩当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由数与原矩阵相同的矩阵,它的元素由0 0或或1 1组成。组成。实例演示实例演示u演示下列关系运算的结果演示下列关系运算的结果u
59、a=1:3;4:6;7:9;a=1:3;4:6;7:9;ux=5;y=ones(3)*5;z=8x=5;y=ones(3)*5;z=8ux1=xa;x2=x=a;x3=x=b;x1=xa;x2=xy ;x4=a=y ;x4=a=yx4=ay ;x4=a=y ;x4=a=yuxzxz实例演示实例演示例:例:产生产生5 5阶随机方阵阶随机方阵A A,其元素为,其元素为10,9010,90区间的随机整数,然后判断区间的随机整数,然后判断A A的元素是否能被的元素是否能被3 3整除。整除。程序如下程序如下 (1) (1) 生成生成5 5阶随机方阵阶随机方阵A A。A=fix(10+(90-10)*ra
60、nd(5)A=fix(10+(90-10)*rand(5)(2 2)判断)判断A A的元素是否可以被的元素是否可以被3 3整除。整除。 P=rem(A,3)=0P=rem(A,3)=0实例演示实例演示注:注:rem(A,3)rem(A,3)是矩阵是矩阵A A的每个元素除以的每个元素除以3 3的的余数矩阵。此时,余数矩阵。此时,0 0被扩展为与被扩展为与A A同维数同维数的零矩阵,的零矩阵, P P是进行等于是进行等于(=)(=)比较的结果矩阵比较的结果矩阵9. .逻辑运算逻辑运算MATLABMATLAB提供了提供了3 3种逻辑运算符种逻辑运算符: : &(&(与与);|();|(或或) )和和
61、( (非非) )运算法则为运算法则为: :(1) (1) 在逻辑运算中,确认非零元素为真,用在逻辑运算中,确认非零元素为真,用1 1表示,零元素为假,用表示,零元素为假,用0 0表示。表示。逻辑运算规则逻辑运算规则(2)(2)设参与逻辑运算的是两个标量设参与逻辑运算的是两个标量a a和和b,b, a&ba&b-a,b-a,b全为非零时全为非零时, ,运算结果为运算结果为1,1,否则为否则为0.0. a|ba|b-a,b-a,b中只要有一个非零中只要有一个非零, ,运算结运算结果为果为1.1. a-a-当当a a是零时是零时, ,运算结果为运算结果为1;1;当当a a非零时非零时, ,运算结果为
62、运算结果为0 0。逻辑运算规则逻辑运算规则(3) (3) 若参与逻辑运算的是两个同维矩阵,若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按那么运算将对矩阵相同位置上的元素按标量规则逐个进行标量规则逐个进行. .最终运算结果是一最终运算结果是一个与原矩阵同维的矩阵个与原矩阵同维的矩阵, ,其元素由其元素由1 1或或0 0组成。组成。逻辑运算规则逻辑运算规则(4) (4) 若参与逻辑运算的一个是标量,一个若参与逻辑运算的一个是标量,一个是矩阵是矩阵, ,那么运算将在标量与矩阵中的每那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终个元素之间按标量规则逐个进行。最终运算
63、结果是一个与矩阵同维的矩阵,其运算结果是一个与矩阵同维的矩阵,其元素由元素由1 1或或0 0组成。组成。逻辑运算规则逻辑运算规则(5) (5) 逻辑非是单目运算符逻辑非是单目运算符, ,也服从矩阵运也服从矩阵运算规则。算规则。(6) (6) 在算术、关系、逻辑运算中,算术运在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低算优先级最高,逻辑运算优先级最低实例演示实例演示u演示下列关系运算的结果演示下列关系运算的结果ua=1:3;4:6;7:9;a=1:3;4:6;7:9;ux=5;y=ones(3)*5;z=8x=5;y=ones(3)*5;z=8ux1=x&z;x2=x|z;x
64、3=x;x4=ax1=x&z;x2=x|z;x3=x;x4=aux1=a&x;x2=a&y;x3=a|x;x4=x1=a&x;x2=a&y;x3=a|x;x4=a|ya|y;附:两个常见的逻辑关系函数的附:两个常见的逻辑关系函数的使用使用uallall和和anyany的使用的使用uallall 若向量的任意元素不为若向量的任意元素不为0,0,则则返回返回1 1uanyany若向量的所有元素不为若向量的所有元素不为0,0,则返则返回回1 1ufind-find-寻找非寻找非0 0元素坐标元素坐标附:逻辑关系函数运算表附:逻辑关系函数运算表实例演示实例演示演示下面的运算结果演示下面的运算结果a=m
65、agic(5)a=magic(5)a(:,3)=zeros(5,1)a(:,3)=zeros(5,1)a1=all(a(:,1)10)a1=all(a(:,1)10)all=any(a(:,1)10)all=all=any(aany(a10)10)实例演示实例演示例例: :建立矩阵建立矩阵A,A,然后演算并解释下列结果。然后演算并解释下列结果。(1) (1) 建立矩阵建立矩阵A, A, A=4,-65,-54,0,6;56,0,67,-45,0 A=4,-65,-54,0,6;56,0,67,-45,0 (2)x1=(2)x1=find(Afind(A)%)%找出找出A A的非零元素的非零元素
66、(3)x2=(3)x2=find(Afind(A4)% 4)% 找出大于找出大于4 4的元素的位置。的元素的位置。(4)x3=(4)x3=find(abs(Afind(abs(A)55)|abs(A)55)|abs(A)5)作作 业业l输入下面的矩阵并完成相应的运算输入下面的矩阵并完成相应的运算.作作 业业1. 求出矩阵求出矩阵A A的逆矩阵、矩阵的逆矩阵、矩阵A A的秩、矩的秩、矩阵阵A A所对应的行列式的值、矩阵所对应的行列式的值、矩阵A A的伴随的伴随矩阵、矩阵矩阵、矩阵A A的特征值及特征向量、矩的特征值及特征向量、矩阵阵A A对应的上三角矩阵和下三角矩阵对应的上三角矩阵和下三角矩阵(请将每个问题的答案分条列出请将每个问题的答案分条列出)作作 业业2.2.做出下面的矩阵运算的结果做出下面的矩阵运算的结果作作 业业3.3.利用利用MATLABMATLAB矩阵访问命令对下面的矩阵矩阵访问命令对下面的矩阵做初等行变换使其成为一个上三角矩阵做初等行变换使其成为一个上三角矩阵 谢谢聆听!