matlab7教程课件第2章数值运算.ppt
《matlab7教程课件第2章数值运算.ppt》由会员分享,可在线阅读,更多相关《matlab7教程课件第2章数值运算.ppt(153页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、MATLAB 7.0从入门到精通主要讲述内容第1章 MATLAB简介第2章 数值运算第3章 单元数组和结构第4章 字符串第5章 符号运算第6章 MATLAB绘图基础第7章 程序设计第8章 计算方法的MATLAB实现第9章 优化设计第10章 Simulink仿真初探第第2章章 数值运算数值运算首先matlab中支持复数,表示方法为a=m+ni(j),当n是表达式时,n与i(j)之间必须要加乘号。另外也可以用complex(x,y)来产生复数。i,j不要作为变量名称,以免生成数据时发生误解。2.1MATLAB中的变量中的变量 a=1+2ia=1.0000+2.0000i a=1+2*ia=1.00
2、00+2.0000i b=sin(2)+cos(2)i?b=sin(2)+cos(2)i|Error:Unexpected MATLAB expression.b=sin(2)+cos(2)*ib=0.9093-0.4161i x=sin(2);y=cos(3);z=complex(x,y)z=0.9093-0.9900i z=complex(x)z=0.9093 i+2ians=0+3.0000i i+2*ians=0+3.0000i i=10;i+2ians=10.0000+2.0000i i+2*ians=30 5+2ians=5.0000+2.0000i 5+2*ians=25MATL
3、AB中的变量必须以字母打头,之后可以是任意字母、数字或下划线,变量名区分字母大小写,变量名不超过19个字符,默认变量名为ans。除此之外还包含一些特殊的变量。Whos命令能够显示变量的信息。2.2 MATLAB的数值运算基础的数值运算基础A/B相当于B*inv(A)AB相当于inv(A)*B2.3数组及向量运算数组及向量运算1、数组构造数组及向量的生成可直接在方括号内输入数据,也可以不加括号,同样生成数组。(1)利用first:increment:last来创建等差数组,a=(first:increment:last),increment为增量。a=(0:0.5:2)a=0 0.5000 1.
4、0000 1.5000 2.0000(2)利用MATLAB函数linspace来创建数组,形成一个等差数列关系的数组,number为数组个数linspace(firstvalue,lastvalue,number)。a=linspace(0,2,5)a=0 0.5000 1.0000 1.5000 2.0000(3)利用logspace函数来创建一个对数分隔的数组,形成一个等比数列关系的数组,logspace(firstvalue,lastvalue,number)。数值从10的firstvalue次幂到10的lastvalue次幂结束。a=logspace(0,2,5)a=1.0000 3.
5、1623 10.0000 31.6228 100.00002、数组运算(1)数组与标量的四则运算是指数组中的每个元素与标量进行加、减、乘、除运算。数组的指数运算exp,以2为底的指数运算pow2,自然对数运算log,常用对数运算log10,以2为底的对数运算log2,开方运算sqrt。是数组中每个元素进行相对应的运算。(2)数组与数组之间进行运算时,每个数组必须具有相同的维数,且必须用点乘或点除。查询x数组的第n个元素,x(n);查询x数组的第2到4个元素,x(2:4);查询x数组的第4到最后1个元素,x(4:end);查询x数组的第3、2、1个元素,x(3:-1:1);查询x数组的小于n元素
6、,x(find(x x=1 2;3 4;x=1 2;3 4;l,u=lu(x)l,u=lu(x)l=l=0.3333 1.0000 0.3333 1.0000 1.0000 0 1.0000 0 u=u=3.0000 4.0000 3.0000 4.0000 0 0.6667 0 0.6667 l,u,p=lu(x)l,u,p=lu(x)l=l=1.0000 0 1.0000 0 0.3333 1.0000 0.3333 1.0000 u=u=3.0000 4.0000 3.0000 4.0000 0 0.6667 0 0.6667 p=p=0 1 0 1 1 0 1 0正交分解(qr)q,r
7、=qr(a)产生一个与a维数相同的上三角矩阵r和一个正交矩阵q(q*q=单位矩阵),使它们满足a=q*r。q,r,e=qr(a)产生一个交换矩阵e、一个上三角矩阵r和正交矩阵q,使它们满足a*e=q*r。q,r=qr(a,0)对矩阵a进行有选择的qr分解。当矩阵a为m*n并且mn,则只产生具有前n列的正交矩阵q。R=qr(a)只产生矩阵r,且满足r=chol(a*a)。特征值分解(eig)v,d=eig(x)命令生成两个矩阵v和d,其中v是以矩阵x的特征向量作为列向量组成的矩阵,d是由矩阵x的特征值作为主对角线元素构成的对角矩阵,它们满足x*v=v*d。v,d=eig(a,b)命令对矩阵a、b
8、作广义特征值分解,它们满足a*v=b*v*d。Chollesky分解(chol)当矩阵a(n*n)对称正定时,则存在唯一的对角元素为正的上三角矩阵r,使得a=r*r,这既是Chollesky分解。奇异值分解(svd)u,s,v=svd(x)命令产生一个与矩阵x维数相同的对角矩阵s、正交矩阵u和正交矩阵v,使它们满足x=u*s*v。u,s,v=svd(x,0)命令进行奇异值的最佳分解。X为m*n阶矩阵,当mn时,生成的矩阵u只有前n列元素被计算出来,且s为n*n阶矩阵。6、矩阵的一些特殊处理函数矩阵的变维reshape(x,m,n)命令将矩阵x的所有元素分配到一个m*n的新矩阵,当矩阵x的元素数
9、不是m*n时,返回错误信息。原则按列优先。reshape(x,m,n,p)和reshape(x,m,n,p)命令一样返回由矩阵x的元素组成的m*n*p*多维矩阵,元素个数必须相等。矩阵的变向rot90(a)命令返回矩阵a按逆时针旋转90度所得的矩阵。rot90(a,k)命令返回矩阵a按逆时针旋转90*k度所得的矩阵。flipud(x)命令将矩阵x上下翻转。fliplr(x)命令将矩阵x左右翻转。flipdim(x,dim)命令将矩阵x的dim维翻转。选取数组上三角或下三角矩阵tril(a,k)命令的功能是提取矩阵的下三角矩阵,k为正数时,非零元素向右上角错k行,k为负数时,非零元素向左下角错k
10、行。triu(a,k)命令的功能是提取矩阵的上三角矩阵,k为正数时,非零元素向右上角错k行,k为负数时,非零元素向左下角错k行。a=1 2 3 4;2 3 4 5;3 4 5 6;4 5 6 7;tril(a)ans=1 0 0 0 2 3 0 0 3 4 5 0 4 5 6 7 a=1 2 3 4;2 3 4 5;3 4 5 6;4 5 6 7;triu(a,1)ans=0 2 3 4 0 0 4 5 0 0 0 6 0 0 0 0 triu(a,-1)ans=1 2 3 4 2 3 4 5 0 4 5 6 0 0 6 7 a=1 2 3 4;2 3 4 5;3 4 5 6;4 5 6 7;
11、triu(a)ans=1 2 3 4 0 3 4 5 0 0 5 6 0 0 0 7 a=1 2 3 4;2 3 4 5;3 4 5 6;4 5 6 7;triu(a,1)ans=0 2 3 4 0 0 4 5 0 0 0 6 0 0 0 0 triu(a,-1)ans=1 2 3 4 2 3 4 5 0 4 5 6 0 0 6 77、特殊矩阵的生成空矩阵:空矩阵用表示,空矩阵大小为零,但变量名存在于工作空间。零矩阵:a=zeros(m,n),a=zeros(size(b)其中b是已存在的矩阵,若a是方阵也可a=zeros(n)。全1矩阵:a=ones(m,n),a=ones(size(b)其
12、中b是已存在的矩阵,若a是方阵也可a=ones(n)。单位矩阵:a=eye(m,n),a=eye(size(b)其中b是已存在的矩阵,若a是方阵也可a=eye(n)。对角矩阵:对角矩阵指的是对角线上的元素为任意数,其它元素为零的矩阵。a=diag(v,k)中,v是向量,k为向量v偏离主对角线的列数,k等于零时表示v为主对角线,k大于零时表示v在主对角线以上,k小于零时表示v在主对角线以下。a=diag(v)相当于a=diag(v,0)。v=1 2 3;a=diag(v)a=1 0 0 0 2 0 0 0 3 v=1 2 3;a=diag(v,1)a=0 1 0 0 0 0 2 0 0 0 0
13、3 0 0 0 0 v=1 2 3;a=diag(v,2)a=0 0 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 v=1 2 3;a=diag(v,-1)a=0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 v=1 2 3;a=diag(v,-2)a=0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0随机矩阵:随机矩阵是指矩阵元素由随机数构成的矩阵。rand(n)命令生成n*n阶随机矩阵,生成矩阵的元素值在区间(0.0,1.0)之间。rand(m,n)命令生成m*n阶随机矩阵,生成矩阵
14、的元素值在区间(0.0,1.0)之间。randn(n)命令生成n*n阶随机矩阵,生成矩阵的元素值在服从正态分布N(0,1)。randn(m,n)命令生成m*n阶随机矩阵,生成矩阵的元素值在服从正态分布N(0,1)。魔方矩阵:魔方矩阵是个方阵,其每一行,每一列,每条主对角线的和都相等(2阶除外)。A=magic(n)范德蒙德矩阵:a=vender(v),其中a(i,j)=v(i)n-j。矩阵重组用新的行或列取代原有矩阵的行或列。a=1 2 3;4 5 6;5 4 3;b=1 1 1;2 2 2;3 3 3;b(1,:)=a(1,:)b=1 2 3 2 2 2 3 3 3 b(:,2)=a(:,1
15、)b=1 1 3 2 4 2 3 5 3从矩阵中选取子矩阵 a=1 2 3;4 5 6;5 4 3a=1 2 3 4 5 6 5 4 3 b=a(1:2,2:3)b=2 3 5 6将矩阵改成行向量或列向量 a=1 2 3;4 5 6;5 4 3a=1 2 3 4 5 6 5 4 3 b=a(:)b=1 4 5 2 5 4 3 6 3矩阵的水平连接用horzcat(a,b)或a,b。a=1 2;3 4;b=5 6;7 8;a,bans=1 2 5 6 3 4 7 8 horzcat(a,b)ans=1 2 5 6 3 4 7 8矩阵的垂直连接用vertcat(a,b)或a;b。a=1 2;b=3
16、 4;a;bans=1 2 3 4 vertcat(a,b)ans=1 2 3 4矩阵的尺寸信息length命令是获取矩阵最长方向的长度;ndims命令是获取矩阵的维数;numel命令是获取矩阵的元素个数;size命令是获取矩阵大小信息,及几行几列。2.5 稀疏矩阵在MATLAB中用两种方式来存储矩阵,即满矩阵存储方式和稀疏矩阵存储方式,简称满矩阵和稀疏矩阵。满矩阵中所有的数值都要存储,会造成存储空间的浪费和计算速度的降低,而稀疏矩阵是以非零元素行标和列标来表示的,可以节省空间,也可以提高计算速度。1、稀疏矩阵的生成speye(n)生成n阶单位稀疏矩阵,speye(m,n)也生成一个单位稀疏矩
17、阵,其维数是m和n中较小的,注意:它所生成的矩阵仍然是m*n的矩阵,它只是在显示主对角线上的元素。speye(size(a)生成与a大小相等的稀疏矩阵,主对角线上元素为1,其它为0。spones(a)创建矩阵a中非零元素为1的稀疏矩阵。speye(3)ans=(1,1)1 (2,2)1 (3,3)1 speye(3)+1ans=2 1 1 1 2 1 1 1 2 speye(3,4)ans=(1,1)1 (2,2)1 (3,3)1 speye(3,4)+1ans=2 1 1 1 1 2 1 1 1 1 2 1 speye(4,3)ans=(1,1)1 (2,2)1 (3,3)1 speye(4
18、,3)+1ans=2 1 1 1 2 1 1 1 2 1 1 1 a=1 2 3;4 5 6a=1 2 3 4 5 6 speye(size(a)ans=(1,1)1 (2,2)1 speye(size(a)+1ans=2 1 1 1 2 12、稀疏矩阵与满矩阵的转换a=sparse(x)将满矩阵x转化为稀疏矩阵a。a=sparse(i,j,s,m,n,nzm)生成m*n阶的稀疏矩阵a,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,nzm为给出的矩阵存储的非零元素的个数,不能小于s的长度,此时nzmax是返回用于存储非零值的空间长度。a=sparse(i,j,s,m,n)生
19、成m*n阶的稀疏矩阵a,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,其中nzmax=length(s)。x=1 2;3 4x=1 2 3 4 a=sparse(x)a=(1,1)1 (2,1)3 (1,2)2 (2,2)4 x=1 0;3 0 x=1 0 3 0 a=sparse(x)a=(1,1)1 (2,1)3 s=sparse(1,2,3,4,3,2,1,3,1,2,3,4,4,4,3)?Error using=sparseIndex exceeds matrix dimensions.s=sparse(1,2,3,4,3,2,1,3,1,2,3,4,4,4)s=(
20、3,1)3 (2,2)2 (1,3)1 (4,3)4 n=nzmax(s)n=4 s=sparse(1,2,3,4,3,2,1,3,1,2,3,4,4,4,8)s=(3,1)3 (2,2)2 (1,3)1 (4,3)4 n=nzmax(s)n=8a=sparse(i,j,s)生成m*n阶的稀疏矩阵a,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,其中m=max(i),n=max(j)。a=sparse(m,n)就是 a=sparse(,m,n,0)的简化形式。生成n阶稀疏方阵时必须用a=sparse(n,n),不能用a=sparse(n)。s=full(x)将稀疏矩阵x转化
21、为满矩阵S。s=full(sparse(1,2,3,4,3,2,1,3,1,2,3,4)s=0 0 1 0 2 0 3 0 0 0 0 4 s=sparse(1,2,3,4,3,2,1,3,1,2,3,4,5,5)+1s=1 1 2 1 1 1 3 1 1 1 4 1 1 1 1 1 1 5 1 1 1 1 1 1 1 s=sparse(5,5)s=All zero sparse:5-by-5 a=sparse(5)a=(1,1)5 s=full(sparse(5,5)s=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0i=find(x)返回矩
22、阵x的非零元素的位置,按照列数优先的原则选取。i,j=find(x)返回矩阵x的非零元素的所在行和所在列的位置,按照列数优先的原则表述。i,j,v=find(x)除了返回矩阵x的非零元素的行列之外,还返回矩阵中非零元素的值,按照列数优先的原则表述。x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;i=find(x)i=2 5 11 14 16 x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;i j=find(x)i=2 1 3 2 4j=1 2 3 4 4 x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;x=0 2 0 0;3 0 0
23、6;0 0 7 0;0 0 0 2;i j v=find(x)i j v=find(x)i=i=2 2 1 1 3 3 2 2 4 4 j=j=1 1 2 2 3 3 4 4 4 4 v=v=3 3 2 2 7 7 6 6 2 23、稀疏矩阵的操作n=nnz(s)返回矩阵s中非零元素的个数。d=nnz(s)/prod(size(s)表示稀疏矩阵s中非零元素的密度。prod表示矩阵s行数与列数的乘积,既表明s中元素的总个数。nonzeros返回非零值。x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;n=nnz(x)n=5 x=0 2 0 0;3 0 0 6;0 0 7 0;0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab7 教程 课件 数值 运算
限制150内