MATLAB02矩阵与数组

上传人:wuxin****2020 文档编号:246228092 上传时间:2024-10-12 格式:PPT 页数:29 大小:230.99KB
返回 下载 相关 举报
MATLAB02矩阵与数组_第1页
第1页 / 共29页
MATLAB02矩阵与数组_第2页
第2页 / 共29页
MATLAB02矩阵与数组_第3页
第3页 / 共29页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第二章 矩阵与数组,MATLAB,的运算事实上是以矩阵,(matrix),及数组,(array),方式在做运算,而这二者在,MATLAB,中的基本运算性质不同,矩阵采用线性代数的运算方式,而数组强调元素对元素的运算。,矩阵和数组在,MATLAB,中的表达形式是同样的。当一个变量为矩阵或是数组时,如果是要个别键入元素,须用中括号,将元素置于其中。,MATLAB,以矩阵为基本的运算单位,向量和标量作为特殊的矩阵处理:向量看作只有一行或一列的矩阵;标量看作是只有一个元素的矩阵。,1,2.1 矩阵,1.矩阵的创建,(1)用直接输入法创建矩阵,当需要的矩阵维数比较小时,从键盘上直接输入一系列矩阵元素是最,直接、数值矩阵的创建方法。直接输入法需遵循以下基本规则:,整个矩阵应以“”为首尾,即整个输入矩阶必须包含在方括号中;,矩阵中,行与行之间必须用分号(;)或Enter键(按Enter键)符分隔;,每行中的元素用逗号(,)或空格分隔;,矩阵中的元素可以是数字或表达式,但表达式中不可包含未知的变量,,MATLAB用表达式的值为该位置的矩阵元素赋值。当矩阵中没有任何,元素时,该矩阵被称作“空阵”(Empty Matrix)。,2,例2-1,用直接输入法创建一个44的A矩阵。,只要在MATLAB上作窗口中直接输入下列矩阵元素即可:,A=2 3 4 5;3 4 5 6;4 5 6 7;7 8 9 10 键盘输入内容,元素之间用空格分开,A=2 3 4 5,3 4 5 6,4 5 6 7,7 8 9 10%键盘输入内容,行与行之间用Enter键分隔,3,注意:一旦创建了矩阵,它将被自动存储在MATLAB工作空间。,矩阵中的元素可以用它的行和列表示,如A(3,2)表示矩阵A的第三行,第二列的元素。可以用对矩阵元素直接赋值的方法对矩阵进行修改。,由于MATLAB的矩降定义在复数域上,因此矩阵元素可以是复数。通常,用书写复数的方法输入复数元素,或者用一个矩阵表示复数矩阵的实部,,用另一个矩阵表示复数矩阵的虚部,最后将两个矩阵相加,即可得到所,需的复数矩阵。,(2)由矩阵编辑器创建和修改矩阵,当需要建立的矩阵很大,不适合手工自接输入时,可以使用矩阵编辑器(Matrix Editor)来创建和修改。其操作步骤如下。,预先定义变量,调用矩阵编辑器之前,需要预先定义一个变量,数值变量和矩阵变量均可。,A=5,6,7;8,9,10;2,3,4 定义并创建一个矩阵变量,4,打开工作空间窗口,打开矩阵编辑器,选中变量A,双击或利用快捷菜单,启动矩阵编辑器(Array Editor)。,链接,改变矩阵元素值,用户可以通过鼠称选中上图左上方文本框中的矩阵元素,输入要改变的值,即可。,改变矩阵的维数,左上角的两个文本框分别表示矩阵的行和列,用户可以通过输入数值来改,变距的行和列。,此项功能可以方便地创建和修改矩阵,既可以将原来的矩阵扩展为更大的,矩阵,又可以将原来的矩阵裁剪为它的左上方的子矩阵。,确认所有元素符合要求后,关闭该对话框,这时,便创建了一个新矩阵。,在工作窗口中重新键入矩阵名,可以发现原来的矩阵已经改变。,5,(3)由函数创建和修改矩阵,MATLAB提供了大量的函数用于创建一些特殊的矩阵及其派生矩阵。,zeros生成全部元素为0的零距阵(Zeros Array),A=zeros(n)生成nn零矩阵。,A=zeros(m,n)或者A=zeros(m,n)生成mn的零矩阵。,A=zeros(m,n,p,)或者A=zeros(m n p)生成mnp的零矩阵。,B=zeros(size(A)生成和矩阵A大小相等的全零矩阵。,ones生成全部元素为1的距阵,A=ones(n)生成nn全1矩阵。,A=ones(m,n)或者A=ones(m,n)生成mn的全1矩阵。,A=ones(m,n,p,)或者A=ones(m n p)生成mnp的全1矩阵。,B=ones(size(A)生成和矩阵A大小相等的全1矩阵。,eye生成单位距阵,A=eye(n)生成nn单位矩阵。,A=eye(m,n)或者A=eye(m,n)生成mn的单位矩阵。,B=eye(size(A)生成和矩阵A大小相等的单位矩阵。,6,rand生成均匀分布的随机矩阵,A=rand(n)生成nn随机矩阵。,A=rand(m,n)或者A=rand(m,n)生成mn的随机矩阵。,A=rand(m,n,p,)或者A=rand(m n p)生成mnp的随机矩阵。,B=rand(size(A)生成和矩阵A大小相等的随机矩阵。,A=rand 不带任何参数将产生一个随机数。,提示:rand函数产生一个矩阵元素在0和1之间均匀分布的随机数的随机矩阵。,diag 生成一个对角阵或由对角线元素组成的向量,Adiag(V)当V为n维向量时,产生一个以向量V的元素为对角线的n维数组。,Adiag(V)当V为n维矩阵时,产生 一个以V矩阵的主对角线元素为元素的n 维数组。,注意:在MATLAB中,不需要事先定义矩阵的维数,MATLAB自动为矩阵分配存 储空间。但如果在程序运行过程中采用零矩阵为矩阵生成的全部元素,或某一行、某一列的元素预先分配内存空间,将会大大加快MATLAB程序的运算速度。,7,例22,利用diag产生对角阵及对角线向量。,链接,A=rand(4,4);%创建个4阶随机矩阵,B=diag(A),C=diag(B),提示,:,MATLAB程序中的所有内容均需用英文输入,并且变量区分大小写。否,则MATLAB会给出出错信息。,(,4)从外部数据文件调入矩阵,在MATLAB中还可以从外部数据文件中度读入数据生成矩阵。数据文件可以是以前MATLAB生成的矩阵存储的二进制文件,也可以是包含数值数据的文本文件。文本文件中的数据在调入之前要预先排列成矩阵的形式。,调入方法:,load filename.dat 或filename.txt%将数据文件filename的数据内容调入工,作空间,例23,由外部数据文件直接读入数据生成一个矩阵。,链接,提示:需要调入的文件必须在MATLAB搜索路径范围内,否则找不到文件。,8,另外,使用Import Wizard功能,可从外部数据文件中直接读取数据。,使用方法如下:,选择FileImport Data 命令选项,将出现如下图所示对话框,选择将要读取数据的数据文件。,链接,选中文件,单击打开按钮,然后打开“Import Wizard”窗口。,单击“FINISH”按钮,即可输入打开的数据文件中数据,。,链接,2.矩阵的保存和提取,MATLAB用Mat文件保存二进制的数据。如果有大量的矩阵或较为重要的数据需要用矩阵的形式保存和再次使用时,就需要进行矩阵的保存和提取。,用save命令保存已经存在的矩阵A和B。其调用格式为:,save filename A B,filename是用户定义的文件名,MATLAB系统将会自动在文件名后加上后缀.MAT。,9,用load命令将保存在文件中的矩阵读到MATLAB工作空间的内存中来。共调用格式为:,load filename,3.矩阵元素的标识,矩阵是MATLAB的基本运算单元,向量和标量都作为特殊的矩阵处理:向量看作只有一行或一列的矩阵;标量看作只有一个元素的矩阵。,(1)向量的生成,MATLAB有多种方法生成向量,除了在命令窗口中直接输入之外,还有三种常用的自动创建向量的方法,即利用冒号、linspace函数和logspace函数生成向量。,利用冒号生成向量,冒号具有多种功能,在用于生成向量时,使用以下格式:,x=i:j,如果ij,则生成x空向量。,x=i:j:k,如果j0,且ik,则生成向量x=i,i+j,i+2j,.,k;,如果j0,且ik或j0且i4;%列出矩阵A中所有绝对值大于4的元素位置,产生与A向,维数的“0-l”逻辑矩阵L,X=A(L);%将A中被矩阵L标识的所有元素赋给向量X,链接,15,4.,矩阵变换函数,在MATLAB中可以通过己知矩阵的旋转、截取等变换来得到用户所需的新矩阵,MATLAB提供的矩阵变换命令和函数如下表所示。,矩阵旋转函数:,Bfliplr(A)%将矩阵A左右翻转得到矩阵B,Bflipud(A)%将矩阵A上下翻转得到矩阵B,Bflipdim(A,dim)%将矩阵A按给定维数翻转得到矩阵B,dim=1时,按行翻,转;dim=0时,按列翻转。,Brot90(A,k)%将矩阵A逆时针旋转90度得到矩阵B,k为倍数,当k=1,时,可省略。,矩阵提取函数:,B=tril(A)%取矩阵A主对角线及以下元素得到矩阵B,其余元素取0。,B=tril(A,k)%取矩阵A第k条对角线及以下元素得到矩阵B,其余元素,取0。,B=triu(A)%取矩阵A主对角线及以上元素得到矩阵B,其余元素取0。,B=triu(A,k)%取矩阵A第k条对角线及以上元素得到矩阵B,其余元素,取0。,16,5.矩阵的加、减、乘、除和乘方运算,矩阵的加、减、乘、除利乘方运算是最基本的矩阵运算,矩阵运算按照线性代数中基本的运算法则进行。,加 A+B,减 A-B,乘 A*B (.*是矩阵对应元素之间的乘积),除 AB,转置 A,notes:对于复矩阵Z,Z表示Z的复共轭转置,对于非共轭转置用Z.或conj(Z)实现。,例27 已知z=1+i 3-2i,求:z,z.,conj(z),链接,6.,矩阵函数,17,(1)线性方程组,最初开发MATLAB是为了简化矩阵和线性代数计算,这些计算出现于多种应用场合。其中最常见的线性代数问题是线性方程组的求解。,线性方程组的求解问题可表述为:给定两个矩阵A和B,求解满足方程AXB或XAB的矩阵X。,在线性方程的求解中,正斜杠/和反斜杠是两个不同的算符。方程AX=B的解用xAB表示,称为左除,方程XAB的解用XB/A表示,称为右除。平时常用的形式为前者。,MATLAB常用的基本矩阵运算函数如下:,det(A)求方阵A的行列式值,dot(A,B)求矩阵A和B的点积,eig(A)求矩阵A的特征值和特征向量,norm(A,1)求矩阵1_范数,norm(A)或norm(A,2)求矩阵A的2_范数,norm(A,inf)求矩阵A的无穷大_范数,norm(A,fro)求矩阵A的F_范数,Rank(A)求矩阵A的秩,18,(,2)稀疏矩阵,矩阵中只包含少量的非零元素,这样的矩阵被称为稀疏矩阵。,如果矩阵很大,并且零元素又占了很大的比例,则无论对存储零元素所需的计算机存贮空间还是对零元素进行代数运算所需的计算量,都是很大的浪费。为了避免浪费,通常只存非零元素以及表示这些元素行和列位置的两个下标数组。为了避免对零矩阵的代数运算,开发了特殊的算法来求解典型的矩阵问题,如求解线性方程组等,使针对零的运算很少。,例28,函数sparse创建稀疏矩阵,As=sparse(1:10,1:10,ones(1,10),其中sparse(i,j,s)创建了一个稀疏矩阵,其中第k个非零元素是s(k),s(k)位于i(k)行j(k)列,并要求i,j,s具有相同的长度。,再看:,As=sparse(eye(10),链接,19,.,稀疏矩阵的转换:,链接,A=full(As),稀疏矩阵和满阵的存储方式,链接,B=eye(200);,Bs=sparse(B);,(3)矩阵的逆和伪逆,如果矩阵A为方阵且非奇异,方程AX=I和XA=I的解称为矩阵A的逆,用 表示。,函数inv可求矩阵的逆。,如果忽略舍入误差,命令X=inv(A)*B和命令XAB应该得到相同的结果。但计算时,应尽量使用后者,因为斜杠和反斜杠运算符的数值计算更准确,占用内存更小,算得更快。,当矩阵A为长方阵时,方程AX=I和XA=I至少有一个无解。这时矩阵的伪逆(广义逆)pinv(A)能在某种程度上代表矩阵的逆。,例29,链接,C=8,6;2,5;1,7;,X=pinv(C),Q=X*C,P=C*X,20,(,4)矩阵的Ch
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!