1、MatlabMatlab数值计算数值计算基础功能基础功能内内 容容向量(一维矩阵)矩阵数组多项式一、向量输入及其运算向量的生成:n n直接输入向量元素用括起来行向量:元素之间用空格或逗号分隔列向量:元素之间用分号分隔n n用冒号表达式生成格式:X=X0:step:Xnstep缺省则默认为1n n线性等分向量的生成格式:y=linspace(x1,x2,n)生成n维行向量,y(1)=x1、y(n)=x(2)若n缺省,则默认n=100n n对数等分向量的生成格式:y=logspace(x1,x2,n)生成n维行向量,y(1)=10 x1、y(n)=10 x(2)若n缺省,则默认n=50向量的运算n
2、 n加、减、数乘加、减、数乘n n点积点积 dot(a,b)dot(a,b),a a、b b必须同维必须同维n n叉积叉积 cross(a,b)cross(a,b),a a、b b为三维向量为三维向量两个三维向量的叉积等于一个新的向量,两个三维向量的叉积等于一个新的向量,该该向量与前两者垂直,且长度为前两者张成的向量与前两者垂直,且长度为前两者张成的平行四边形面积;平行四边形面积;n n混合积混合积 dot(a,cross(b,c)dot(a,cross(b,c)以以a a,b b,c c为棱的平行六面体为棱的平行六面体的体积的体积二、MATLAB矩阵 2.1 矩阵的建立 1.直接输入法 将矩
3、阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。例如 A=1 2 3;4 5 6;7 8 9 2.2.利用利用MM文件建立矩阵文件建立矩阵 对于比较大且比较复杂的矩阵,可以为它专门对于比较大且比较复杂的矩阵,可以为它专门建立一个建立一个MM文件。文件。例例 利用利用MM文件建立文件建立MYMATMYMAT矩阵。矩阵。(1)(1)启动有关编辑程序或启动有关编辑程序或MATLABMATLAB文本编辑器,文本编辑器,并输入待建矩阵并输入待建矩阵.(2)(2)把输入的内容以纯文本方式存盘把输入的内容以纯文本方式存盘(设文件名设文件名为为
4、mymatrix.m)mymatrix.m)。(3)(3)运行该运行该MM文件,就会自动建立一个名为文件,就会自动建立一个名为MYMATMYMAT的矩阵,可供以后使用。的矩阵,可供以后使用。3.利用MATLAB函数建立特殊矩阵几个产生常用特殊矩阵的函数:全零阵zeros、全一阵ones、单位阵eye、均匀分布随机阵rand、正态分布随机阵randn。这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:zeros(m)zeros(m)产生产生mmmm零矩阵零矩阵 zeros(m,n)zeros(m,n)产生产生mnmn零矩阵。零矩阵。zeros(size(A)z
5、eros(size(A)产生与矩阵产生与矩阵A A同样大小的零矩同样大小的零矩阵阵 例 分别建立33、32和与矩阵A同样大小的零矩阵。(1)建立一个33零矩阵:zeros(3)(2)建立一个32零矩阵:zeros(3,2)(3)建立与矩阵A同样大小零矩阵:zeros(size(A)此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。例 产生5阶随机方阵A,其元素为10,90区间的随机整数,然后判断A的元素是否能被3整除。(1)生成5阶随机方阵A。A=fix(90-10+1)*rand(5)+10)(2)判断A的元素是否可以被3整除。
6、P=rem(A,3)=0其他特殊矩阵函数希尔伯特矩阵希尔伯特矩阵 hilb(n)hilb(n)希尔伯特矩阵的逆矩阵希尔伯特矩阵的逆矩阵 invhilb(n)invhilb(n)托普利兹矩阵托普利兹矩阵 toeplitz(k,r)toeplitz(k,r)、toeplitz(c)toeplitz(c)友矩阵友矩阵 compan(p)compan(p)生成多项式生成多项式p p的友矩阵,也就是的友矩阵,也就是他的特征多项式是他的特征多项式是p p;hadamard(k)hadamard(k)生成生成hadamardhadamard矩阵矩阵hankelhankel函数,生成函数,生成hankelha
7、nkel矩阵矩阵magic(n)magic(n),生成,生成nnnn的魔方矩阵的魔方矩阵pascalpascal函数,生成函数,生成pascalpascal矩阵矩阵rosserrosser,给出,给出RosserRosser矩阵矩阵vander(x)vander(x),给出向量,给出向量x x的范德蒙矩阵的范德蒙矩阵wilkinson(n)wilkinson(n),给出,给出WilkinsonWilkinson特征值测试矩阵特征值测试矩阵 4.建立大矩阵 大矩阵可由方括号中的小矩阵建立起来。例如 A=1 2 3;4 5 6;7 8 9;C=A,eye(size(A);ones(size(A),
8、A 2.2 矩阵的拆分1.矩阵元素MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如 A(3,2)=200也可以采用矩阵元素的序号来引用矩阵元素。2.2.矩阵拆分矩阵拆分 (1)(1)利用利用冒号冒号冒号冒号表达式获得子矩阵表达式获得子矩阵 A(:,j)A(:,j)表示取表示取A A矩阵的第矩阵的第j j列全部元素;列全部元素;A(i,:)A(i,:)表示表示A A矩阵第矩阵第i i行的全部元素;行的全部元素;A(i,j)A(i,j)表示取表示取A A矩阵第矩阵第i i行、第行、第j j列的元素。列的元素。A(i:i+m,:)A(i:i+m,:)表示取表示取A A矩阵第矩阵第i ii
9、+mi+m行的全部元素;行的全部元素;A(:,k:k+m)A(:,k:k+m)表示取表示取A A矩阵第矩阵第k kk+mk+m列的全部元素,列的全部元素,A(i:i+m,k:k+m)A(i:i+m,k:k+m)表示取表示取A A矩阵第矩阵第i ii+mi+m行内,并在第行内,并在第k kk+mk+m列中的所有元素。列中的所有元素。此外,还可利用一般向量和此外,还可利用一般向量和endend运算符等来表示矩运算符等来表示矩阵下标,从而获得子矩阵。阵下标,从而获得子矩阵。endend表示某一维的末尾表示某一维的末尾元素下标。元素下标。如如a(1,end)a(1,end)(2)利用空矩阵删除矩阵的元
10、素在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为X=。注意,X=与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。2.3 2.3 多维矩阵多维矩阵以三维矩阵为例,常用的方法有以三维矩阵为例,常用的方法有4 4种:种:(1)(1)对二维矩阵进行扩充得到三维矩阵。对二维矩阵进行扩充得到三维矩阵。(2)(2)若干个同样大小的二维矩阵进行组合得到三维矩若干个同样大小的二维矩阵进行组合得到三维矩阵。阵。(3)(3)除产生单位矩阵的除产生单位矩阵的eyeeye函数外,前面介绍的建立矩函数外,前面介绍的建立矩阵的函数都可以延伸到三维矩阵。阵的函数都可以
11、延伸到三维矩阵。(4)(4)用用catcat函数构建多维矩阵。一般调用格式是:函数构建多维矩阵。一般调用格式是:cat(n,A1,A2,An)cat(n,A1,A2,An)cat cat函数把大小相同的若干矩阵,沿第函数把大小相同的若干矩阵,沿第n n维方向串维方向串接成高维矩阵。当接成高维矩阵。当n=1n=1和和2 2时,沿行和列的方向串时,沿行和列的方向串接,结果是二维矩阵。当接,结果是二维矩阵。当n=3n=3时,沿页的方向串接,时,沿页的方向串接,结果是三维矩阵。结果是三维矩阵。2.4 矩阵的运算 2.4.1 2.4.1 基本算术运算基本算术运算 1.1.四则运算等四则运算等 MATLA
12、BMATLAB的基本算术运算有:的基本算术运算有:(加加)、(减减)、*(乘乘)、/(/(右除右除)、(左除左除)、(乘方乘方)。几点说明:几点说明:1 1)加减运算与数字运算格式相同,要求两矩阵是同阶的;)加减运算与数字运算格式相同,要求两矩阵是同阶的;2 2)乘法要求两矩阵有相邻公共维;)乘法要求两矩阵有相邻公共维;3 3)用矩阵除法求解方程组)用矩阵除法求解方程组Ax=bAx=b,A A是是(nm(nm)阶矩阵阶矩阵讨论讨论A A的情况:的情况:n=mn=m且非奇异,称恰定方程;且非奇异,称恰定方程;nmnm,超定方程,没有精确解,超定方程,没有精确解,matlabmatlab使用最小二
13、乘法来求解,来找到一使用最小二乘法来求解,来找到一个向量个向量x x使它对使它对n n个方程的总误差最小;个方程的总误差最小;方法:方法:Ab Ab 如果如果b b是矩阵是矩阵B B,则对,则对B B中的每一列相应的方程组求解中的每一列相应的方程组求解 nnls(A,b)nnls(A,b)求非负的最小二乘解求非负的最小二乘解 lscov(A,b,v)lscov(A,b,v)求在已知协方差求在已知协方差v v的情况下的最小二乘解的情况下的最小二乘解nmn p=2 3 0-5;p=2 3 0-5;poly2sym(p)poly2sym(p)ans=ans=2*x3+3*x2-5 2*x3+3*x2
14、-5求矩阵的特征多项式:poly(A)如果A是向量b0 b1 bn,则创建多项式(x-b0)(x-b1)(x-bn)的系数向量,即A向量是多项式的根。多项式运算:n n求值求值 polyval(p,b)%bpolyval(p,b)%b为数组或单个数值为数组或单个数值 polyvalm(p,B)%Bpolyvalm(p,B)%B为方阵为方阵n n求根求根 rootsroots函数函数n n多项式乘法多项式乘法 conv conv 函数函数n n多项式除法多项式除法 deconv deconv 函数函数n n多项式微分多项式微分 polyder polyder 函数函数n n多项式拟合函数多项式拟合函数 polyfit(x,y,n)xpolyfit(x,y,n)x、y y为已知数据为已知数据的横坐标和纵坐标向量,的横坐标和纵坐标向量,n n为拟合多项式的次数为拟合多项式的次数图像上下翻转程序m=imread(?.jpg,jpg);mr=m(:,:,1);mg=m(:,:,2);mb=m(:,:,3);n(:,:,1)=flipud(mr);n(:,:,2)=flipud(mg);n(:,:,3)=flipud(mb);imshow(n)结结 束束