第三节矩阵基本函数运算与矩阵元素的提取(第二章).doc_第1页
第三节矩阵基本函数运算与矩阵元素的提取(第二章).doc_第2页
第三节矩阵基本函数运算与矩阵元素的提取(第二章).doc_第3页
第三节矩阵基本函数运算与矩阵元素的提取(第二章).doc_第4页
第三节矩阵基本函数运算与矩阵元素的提取(第二章).doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三第三节 矩阵基本函数运算与矩阵元素的提取(第二章)一、 矩阵基本函数运算此运算是矩阵运算中最实用的部分,其基本命令如下:命令集9 矩阵的大小、行列式、逆、特征值、秩、迹、范数size(A) 给出包含A的维数的一个行向量.在这个返回向量中的第一个元素是行数,随后是列数 . m,n =size(A) 给出A的维数、m行数和n列数,即两个标量.length(x) 给出一个向量的长度,即x分量个数.sum(A) 若A是矩阵,给出一个行向量,其每个分量表示A相应的列和;若A是向量,给出此向量的分量和.det(A) 求矩阵A的行列式.eig(A) 求包含矩阵A的特征值的向量.X,D=eig(A) 求包含矩阵A的特征值对应的对角阵D和以相应特征向量为列的矩阵.inv(A)或A (-1) 求矩阵A的逆矩阵.rank(A) 求矩阵A的秩.trace(A) 求矩阵A的迹(对角线元素之和).norm(A,1) 矩阵A的1范数或列和范数,定义如下.norm(A,2) 矩阵A的2范数.norm(A,inf) 矩阵A的范数.norm(x,1) 向量x的1范数或列和范数,定义如下.norm(x,2) 向量x的2范数.norm(x,inf) 向量x的范数.范数定义如下:设,则相应范数定义如下 ; ;,二、矩阵元素的提取在MATLAB中还有利用已存在的矩阵建立新矩阵的命令.以下假设矩阵 A是mn的矩阵,x是个有n个元素的向量.1. 对角阵与三角阵的生成命令集10 diag(A) 生成一个由矩阵A主对角线元素组成的列向量.主对角线总是从矩阵左上角开始.对于方阵来说它结束于矩阵的右下角.diag(x) 生成一个n维的方阵,它的主对角线元素值取自向量 x,其余元素的值都为0.diag(A , k) 生成一个由矩阵A第k条对角线的元素组成的列向量. k= 0为主对角线;k 0为上第k对角线.diag(x , k) 生成一个(n+ a b s (k) )(n+ a b s (k) )维的矩阵,该矩阵的第k条对角线元素取自向量x,其余元素都为零.关于参数k可参考上个命令.triu(A) 生成一个和A大小相同的上三角矩阵.该矩阵的主对角线及以上元素取自A中相应元素,其余元素都为零.triu(A , k) 生成一个和A大小相同的上三角矩阵.该矩阵的第k条对角线及以上元素取自A中相应元素,其余元素都为零.命令t r i u ( A , 0 )等同于命令t r i u ( A ).tril(A) 生成一个和A大小相同的下三角矩阵.该矩阵的主对角线及以下元素取自A中相应元素,其余元素都为零.tril(A , k) 生成一个和A大小相同的下三角矩阵.该矩阵的第 k条对角线及以下元素取自A中相应元素,负数k表示主对角线下的对角线.其余元素都为零.命令t r i l ( A , 0 )等同于命令t r i l ( A ).2. 向量和子矩阵的生成在MATLAB中可以使用冒号:来代表一系列数值.有时也使用它来定义一个子矩阵.命令集11i : k 创建从i开始、步长为1、到k结束的数字序列,即i ,i+1, i+2, . . . , k .如果ik,MATLAB则返回一个空矩阵,也就是 .数字i和k不必是整数,该序列的最后一个数是小于或等于k.i : j : k 创建从i开始、步长为j、到k结束的数字序列,即i, i+j, i+ 2j, . . ., k .对于j= 0,则返回一个空矩阵.数字i、j和k不必是整数,该序列的最后一个数是小于或等于k.linspace(a , b) 在区间a, b上创建一个有1 0 0个元素的向量,这1 0 0个数把整个区间线性分隔.其中a是第一个元素,b是最后一个.linspace(a, b, n) 在区间a, b上创建一个有n个元素的向量.这个命令和冒号表示形式相近,但是它直接定义了数据的个数,其步长为(b-a)/(n-1) .命令集12 定义子阵A ( i , j ) 返回矩阵A中第ij元素的值.A ( : , j ) 返回矩阵A中第j列列向量.A ( i , : ) 返回矩阵A中第i行行向量.A ( : , j : k ) 返回由矩阵A中的第j列,第j+ 1列,直到第k列列向量组成的子阵.A ( i : k , : ) 返回由矩阵A中的第i行,第i+ 1行,直到第k行行向量组成的子阵.A ( i : k , j : l ) 返回由二维矩阵A中的第i行到第k行行向量和第j列到第l 列列向量组成的子阵.A ( : ) 将矩阵A中的每列合并成一个长的列向量.A(j:k) 返回一个行向量,其中的元素为A ( : )中的从第j个元素到第k个元素.A(j1 j2 . . . ) 返回一个行向量,其中的元素为A ( : )中的第j1、j2 元素.A(:,j1 j2 . . . ) 返回矩阵A的第j1列、第j2列等的列向量.A(i1 i2. . . : , ) 返回矩阵A的第i1行、第i2行等的行向量.A(i1 i2. . . , j1 j2. . . ) 返回矩阵第i1行、第i2行等和第j1列、第j2列等的元素.二、矩阵元素的增减在MATLAB中可以通过增加元素、行和列将一个矩阵或者向量进行扩展.由于MATLAB可以自动地改变矩阵的大小,所以使用已存在的矩阵的一部分来创建一个新矩阵是很容易的这在许多应用中都很有用.从已存在的矩阵中建立一个矩阵就和定义一个新矩阵一样.元素用空格或逗号分隔,行用分号或回车分隔. 例1 假设下列矩阵已经定义为:(a) 有几种方式可以将向量x扩展成14.假设想要的新向量是:xnew=(9 10 0 5)下列的三种方法都可以给出想要的结果: xnew=x; xnew(3)=0;xnew(4)=5; xnew=x 0 5; t=0 5; xnew=x t;(b) 以下两种方法可以对矩阵A扩展一个新行,如向量z: Anew1=A ; z , Anew1=A ; 13 14 .它们在屏幕上显示的结果如下:Anew1=1 22 413 14有时还可以对矩阵添加多个新行: Anew2=A;x;z;0 0(c) 对矩阵A扩展一个新列,如y,可以这样做: Anew3=A y 或者 Anew3=A 11;12 (d) 对矩阵A扩展一个矩阵的操作是相似的,输入命令: Anew4=A; B , Anew5=A B 对于Anew4来说,它的列数一定等于矩阵 A和B的列数;而对于Anew5来说,它的行数一定等于矩阵A和B的行数.(e) 改变矩阵的元素 A(3,3)=15 矩阵A的(3,3)元素变为15 A(2,:)=1 0 矩阵A的第2行变为1 0 A(2,:)= 矩阵A变为一个行向量(f) 为了生成规则的矩阵块可以下列的方式使用命令 repmat. 例2 repmat(1 0; 0 1,3,3) 返回一个由1 0; 0 1组成的6阶矩阵 repmat(1 0,1,5)得到:返回一个由1 0组成的10维行向量 如果要创建一个所有元素都是同一个值的矩阵,可以使用命repmat(42,2 2) 返回一个由42组成的2阶矩阵第四节 字符串(第二章)在M AT L A B中可能会遇到对字符和字符串的操作.字符串能够显示在屏幕上,也可以用来构成一些命令,这些命令在其他的命令中用于求值或者被执行.一个字符串是存储在一个行向量中的文本,这个行向量中的每一个元素代表一个字符.实际上,元素中存放的是字符的内部代码,也就是ASCII码.当在屏幕上显示字符变量的值时,显示出来的是文本,而不是ASCII数字.由于字符串是以向量的形式来存储的,所以可以通过它的下标对字符串中的任何一个元素进行访问.字符矩阵也可以这样,但是它的每行字符数必须相同.一、 输入格式MATLAB中的字符串用单引号来定义:Name Of Variable = text这里的text 可以是字母、数字和特殊字符(a) 简单的分配方法,如name = John Smith ,在屏幕上就会有如下显示:name = John Smith(b) 分配一个字符.如果(a)中变量name已存在,令name (3)= a ,则会给出:name = Joan Smith(c) 将上例中的字符串name的元素前后互换位置,可以输入:for i=length(name):-1:1enam(i)=name(length(name)+1-i);endenam下面显示出字符串eman的值:eman =htimS naoJ(d) 在字符串中用两个单引号来表示一个单引号:whoscat=Joans cat显示结果为:whoscat =Joans cat(e) 字符串的组成可以象数字矩阵一样: name1= Joan ; name2= John ;heart= is in love with ;sentence=name1, ,heart, , name2显示的结果为:sentence= Joan is in love with John(f) 冒号表达式的使用和在数字矩阵中的使用情况一样:name=Charles Johnson;firstname= name(1:7)firstname =Charles二、 字符串求值MATLAB命令可以以字符串的形式进行输入和存储.这些命令字符串通过eval命令来求值.命令集13 字符串求值eval (str) 执行st 中包含的MATLAB命令并返回结果.eval(str1, str2) 执行str1中的MATLAB命令,如果没有错误就和执行eval(str1)一样;如果在对str1求值中第一个字符串是一个错误,则对字符串str2进行求值,给出一个错误信息或者其他内容.g = inline (str ,arg1, arg2) 从字符串str中建立一个叫内联的函数g,如存储在工作内存中的函数,可以用g (val1 ,val2 )来调用.函数中参数的名字可以在字符串 arg1,arg2, 中给出,如果没有给出,MATLAB将从str中找出小写字母作为参数的名字. 例3b=1 2 3;k=2 2 2 ;x=1.2 1.5 1.2;str1= b.* sin(k.*x) ;y=eval(str1) y=0.6755 0.2822 2.0264g=inline(3*sin(x)+5*cos(y) , x , y );g(pi,2*pi) ans= 5练习题1. 建立新矩阵 已知 ,求 2. 计算下列各题,已知, 的行和、列和,的迹、秩,的大小 的特征值、特征向量及 3 已知,建立下列矩阵: 在的左边增加一列y,的右边增加一列y; 在的上面增加一行x,的下面增加一行x; 在的左边增加矩阵B变为矩阵C,的下面增加矩阵B变为矩阵D; 由矩阵D的第1、2、5、8行组成矩阵F;由矩阵C的第1、3、5、7列组成矩阵G; 由矩阵D的第1、2、5、8行及C第1、3、5、7列组成矩阵H; 删除的第二行,删除的第三列 ;第3章 MATLAB程序设计Matlab 作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算能力和丰富的绘图功能;可以人机交互式的命令行的方式工作;作为一种高级语言,同时也可以与 C、FORTRAN 等高级语言一样进行程序设计.利用 Matlab 的程序控制功能,将相关 Matlab 命令编成程序存储在一个文件中(M 文件),然后在命令窗口中运行该文件,Matlab 就会自动依次执行文件中的命令,直到全部命令执行完毕. 例1 用 mesh 绘制半径为 3 的球 命令行方式: 编程方式:新建一个M 文件 qiu.m如下: u=0:pi/60:2*pi; v=0:pi/60:pi; U,V=meshgrid(u,v); R=3; X=R*sin(V).*cos(U); Y=R*sin(V).*sin(U); Z=R*cos(V); mesh(X,Y,Z); axis equal;u=0:pi/60:2*pi; v=0:pi/60:pi; U,V=meshgrid(u,v);R=3; X=R*sin(V).*cos(U);Y=R*sin(V).*sin(U); Z=R*cos(V); mesh(X,Y,Z); axis equal;保存后,在命令窗口输入 qiu,即可执行该 M 文件.第一节 M 文件一、 M文件介绍l 用 Matlab 语言编写的程序称为 M 文件l M 文件以 .m 为扩展名l M 文件是由若干 Matlab 命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法l 文件的命名规则与变量相同!文件名应尽量与程序要表达的意义相符合,以方便今后调用.(如例1)二、 M文件的建立、打开与保存 M文件是文本文件,可以用任何文本编辑器来建立和编辑,通常使用Matlab自带的M文件编辑器. 新建一个M文件l 菜单操作 ( File New M-File )l 命令操作 ( edit M 文件名 )l 命令按钮 ( 快捷键 ) 打开已有的 M 文件l 菜单操作 ( File Open )l 命令操作 ( edit M 文件名 )l 命令按钮 ( 快捷键 )l 双击M文件 (在当前目录窗口) 保存M 文件l 菜单操作 ( File Save )l 命令按钮 ( 快捷键 )三、 M 文件分类(根据调用方式的不同)l Script:脚本文件/命令文件(可以直接运行的M文件)命令文件就是命令行的简单叠加,matlab会自动按顺序执行文件中的命令.这样就解决了用户在命令窗口中运行许多命令的麻烦,还可以避免用户做许多重复性的工作.(如例1)l Function:函数文件 函数文件主要用以解决参数传递和函数调用的问题.(1) 第一行必须指定函数名、输入变量 (参数)和输出变量(参数).输入参数是从MATLAB的工作空间复制到函数工作空间的变量.第一行举例如下:function 输出形参表 = name(输入形参表)(2) 一个函数可以有0个、一个或几个输入参数和返回值.当输出形参表的参数个数大于2时, 不可缺省!(3) 建议函数名和文件名一样.调用时所用的变量并不需要与函数文件中定义的变量有相同的名字. 例2 比较下列两个程序,注意命令文件(以dd1命名)与函数文件(以dd2命名)的区别与联系.function y=dd2(x,n)y(1)=x ; for k=1:n x=1/(x+1); y(k)=x;endx=input(输入初值x=);n=input(输入迭代次数=);y(1)=x ; for k=1:n x=1/(x+1); y(k)=x;endy四、 两类文件的区别l 函数文件的第一行必须包含字 function,命令文件没有这种要求.因此,没有这样第一行的M文件是命令文件.l 命令文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可以返回输出参数;l 命令文件对matlab工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除.l 命令文件可以直接运行.在MATLAB命令窗口输入命令文件的名字,就会顺序执行命令文件中的命令,而函数文件不能直接运行,而要以函数调用的方式运行.五、M文件的调用对已存在的M文件l 命令文件在命令窗口直接输入该文件名即可;如例1qiul 函数文件调用的一般格式输出实参数表=函数名(输入实参数表) 函数调用时各实参数出现的顺序、个数应与函数定义时形式参数的顺序、个数一致,否则出错; 函数调用时,先将实参数传递给形式参数,从而实现参数的传递,然后再执行函数的功能.如例2y=dd2(1,10) 当输出实参数表的参数个数大于2时, 不可缺省!第二节 程序控制结构程序控制结构有三种:顺序结构、选择结构、循环结构.任何复杂的程序都可以由这三种基本结构构成.Matlab提供了实现控制结构的语句,利用这些语句可以编写解决实际问题的程序.一、顺序结构顺序结构是指按照程序中语句的排列顺序从上到下依次执行,直到程序的最后一个语句如例1的qiu文件和例2的dd1文件.这是最简单的一种程序结构.一般涉及数据的输入、计算或处理、数据的输出等内容.1. 数据的输入 通过input命令来接收从终端输入的内容,它也可以显示文本和提示.命令集14 输入命令input(out ,in) 在屏幕上显示出字符串out的文本并等待终端的输入.如果变量in是s,则输入的内容以字符串的形式进行保存,通常MATL AB在保存前要尽可能地求出表达式的值.如果使用格式控制符号如n,字符串out可以是若干行. 例3 xm=input(Whats your name?,s)Whats your name?syxxm =syx xm=input(Whats your name?)Whats your name?syx? Error using = inputUndefined function or variable syx.Whats your name?syxxm =syx2. 数据的输出可以通过简单地输入变量的名字来显示数字矩阵或者字符串向量的内容,结果将显示出变量的名字和内容.另一种显示变量的值就是使用命令disp.使用它只显示出变量的内容,这是有用的,特别是在字符串的应用中.命令集15 显示命令disp(A) 显示矩阵A的内容,如果A是字符串,则显示出它的文本.练习题:将例1、例2的程序在matlab中建立、保存、运行.练习题: A=magic(5); diag(A),diag(diag(A),diag(diag(A),2),diag(A,2),diag(A,-2)ans = 17 5 13 21 9ans = 17 0 0 0 0 0 5 0 0 0 0 0 13 0 0 0 0 0 21 0 0 0 0 0 9ans = 0 0 17 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0ans = 1 14 22ans = 4 1225 triu(A),tril(A),triu(A,1),triu(A,-2),tril(A,-2)ans = 17 24 1 8 15 0 5 7 14 16 0 0 13 20 22 0 0 0 21 3 0 0 0 0 9ans = 17 0 0 0 0 23 5 0 0 0 4 6 13 0 0 10 12 19 21 0 11 18 25 2 9ans = 0 24 1 8 15 0 0 7 14 16 0 0 0 20 22 0 0 0 0 3 0 0 0 0 0ans = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 0 12 19 21 3 0 0 25 2 9ans = 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 10 12 0 0 0 11 18 25 0 0 A(3,2),A(:,2),A(4,:)ans = 6ans = 24 5 6 12 18ans = 10 12 19 21 3 A(2:3,3:4),A(:),A(:,:)ans = 7 14 13 20ans = 17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9ans = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 A=magic(4); x=1 2 3 4; sum(A),sum(A),trace(A),rank(A),det(A)ans = 34 34 34 34ans = 34 34 34 34ans = 34ans = 3ans =4 4 x,y=eig(A),inv(A),det(A)x = 0.5000 0.8236 0.3764 -0.2236 0.5000 -0.4236 0.0236 -0.6708 0.5000 -0.0236 0.4236 0.6708 0.5000 -0.3764 -0.8236 0.2236y = 34.0000 0 0 0 0 8.9443 0 0 0 0 -8.9443 0 0 0 0 -0.0000Warning: Matrix is close to singular or badly scaled.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论