《之一数组矩阵和函数及运算》由会员分享,可在线阅读,更多相关《之一数组矩阵和函数及运算(33页珍藏版)》请在金锄头文库上搜索。
1、 MATLAB是是MATrix LABoratory的缩写。它的缩写。它是一个高性能的科技计算软件,它具有强大的数值是一个高性能的科技计算软件,它具有强大的数值计算、图形和编程的功能。计算、图形和编程的功能。 MATLAB在在数据处理、科学计算、系统工程、数据处理、科学计算、系统工程、自动控制、无线电、机械制造等领域有着广泛的应自动控制、无线电、机械制造等领域有着广泛的应用。用。 目前国内比较流行的目前国内比较流行的MATLABMATLAB版本是版本是V5.x(WINDOWSV5.x(WINDOWS版版) ),V6.xV6.x,下面介绍下面介绍MATLABMATLAB的简的简单使用方法。单使用
2、方法。 MATLAB具有的优势与特点具有的优势与特点1.具有友好的工作平台和编程环境,用户界面精致具有友好的工作平台和编程环境,用户界面精致2.具有强大的科学计算及数据处理能力,可以解决:具有强大的科学计算及数据处理能力,可以解决:矩阵计算和线性方程组求解;矩阵计算和线性方程组求解;微分方程及偏微分方程组的求解;微分方程及偏微分方程组的求解;符号运算;符号运算;傅立叶变换和数据的统计分析;傅立叶变换和数据的统计分析;工程中的优化问题;工程中的优化问题;稀疏矩阵运算;稀疏矩阵运算;复数的各种运算等等。复数的各种运算等等。3.具有出色的图形处理功能具有出色的图形处理功能4.具有应用广泛的模块集和工
3、具箱,一般来说是由特定领具有应用广泛的模块集和工具箱,一般来说是由特定领域专家开发的,用户可以直接使用工具箱学习、应用和评域专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。估不同的方法而不需要自己编写代码。 目前目前MATLAB已经把工具箱延伸到了科学研究和工已经把工具箱延伸到了科学研究和工程应用诸多领域,如:程应用诸多领域,如: 数据采集、数据库接口、概率统计、样条拟合、优化数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、算法、偏微分方程求解、神经网络、小波分析、信号处理、图象处理、系统辩识、控制系统设计、鲁
4、棒控制、金融分图象处理、系统辩识、控制系统设计、鲁棒控制、金融分析等等。析等等。5.具有使用的程序接口和发布平台具有使用的程序接口和发布平台 MATLAB与与FORTRAN语言和语言和C语言等高级语言有接语言等高级语言有接口,交互使用。口,交互使用。1一些基本操作和命令一些基本操作和命令 1 命令行编辑命令行编辑 home:光标移至行首光标移至行首end: 光标移至行末光标移至行末esc:清除一行清除一行:光标左移一个字符:光标左移一个字符:光标右移一个字符:光标右移一个字符:调出前一命令行:调出前一命令行 :调出下一命令行:调出下一命令行2 续行号续行号“.”: 当一个命令的长度超过一行时,
5、应将该行分为两行,当一个命令的长度超过一行时,应将该行分为两行,这时在第一行键入回车键换行之前须使用续行号这时在第一行键入回车键换行之前须使用续行号“.”,遇到这一符号,遇到这一符号MATLAB会将后续行作为这一命令的继会将后续行作为这一命令的继续。续。 3 帮助:帮助: help程序(主题)名,如程序(主题)名,如 help eye 2矩阵、数组与函数矩阵、数组与函数 MATLAB的主要数据对象是矩阵,标量、数组、行的主要数据对象是矩阵,标量、数组、行向量、列向量都是它的特例,最基本的功能是进行矩阵运向量、列向量都是它的特例,最基本的功能是进行矩阵运算。算。MATLAB对矩阵和数组的操作有一
6、些特殊规定。对矩阵和数组的操作有一些特殊规定。 一、矩阵的输入和运算一、矩阵的输入和运算 常用的矩阵输入方法有:直接输入每个元素;语句或常用的矩阵输入方法有:直接输入每个元素;语句或函数生成;函数生成;M-文件中生成等。文件中生成等。 1 矩阵的直接输入矩阵的直接输入 MATLAB中不用描述矩阵的类型和维数,它们由输入的中不用描述矩阵的类型和维数,它们由输入的格式和内容决定。逐一输入矩阵的元素,具体做法是:在格式和内容决定。逐一输入矩阵的元素,具体做法是:在方括号内逐行键入矩阵各元素,同行元素之间用逗号或空方括号内逐行键入矩阵各元素,同行元素之间用逗号或空格分隔,两行之间用分号分隔。对于大矩阵
7、的输入,两行格分隔,两行之间用分号分隔。对于大矩阵的输入,两行之间可用回车键代替分号,也可使用续行号。之间可用回车键代替分号,也可使用续行号。 如:如:A=1,2,3;4,5,6;7,8,0 回车回车 A= 1 2 3 4 5 6 7 8 0或或 A=1,2,34,5,67,8,0 回车回车 A= 1 2 3 4 5 6 7 8 0B=1,2,3;4,5,6;7,8,011 12 13;14 15,16 回车回车 B= 1 2 3 4 5 6 7 8 0 11 12 13 或或B=1,2,3;4,5,6;7,8,0;11,12 13;14 15,16 矩阵中的元素可以用它的行、列数表示,如:矩
8、阵中的元素可以用它的行、列数表示,如:a=A(2,1) 回车回车(A的第的第2行第行第1列元素列元素) a= 4 注:注: 1 A输入后一直保留在工作空间中,可随时调用。输入后一直保留在工作空间中,可随时调用。 2 可以直接修改矩阵的元素。如:可以直接修改矩阵的元素。如: A(2,1)=7回车回车 A= 1 2 3 7 5 6 7 8 0又如:又如:A(4,4)=1 回车回车 A = 1 2 3 0 7 5 6 0 7 8 0 0 0 0 0 1 原原来来矩矩阵阵没没有有第第4行行和和第第4列列,MATLAB自自 动动增增加加行行列列数数,对对未未输输入入的的元元素素赋赋值值0 2函数生成矩阵
9、函数生成矩阵 MATLAB提供了一些函数来生成特殊矩阵,常见命令有:提供了一些函数来生成特殊矩阵,常见命令有:(1) zeros(生成零矩阵)生成零矩阵) ;(2) eye(生成对角元为生成对角元为1 矩阵)矩阵) ;(3) ones(生成元素全为生成元素全为1的矩阵);的矩阵);(4) rand(生成在(生成在(0,1)均匀分布随机矩阵);)均匀分布随机矩阵);(5) randn(生成正态分布随机矩阵);生成正态分布随机矩阵);W=zeros(2,3) W= 0 0 0 0 0 0V=eye(2,4) V = 1 0 0 0 0 1 0 0U=ones(3) U = 1 1 1 1 1 1
10、1 1 1X=rand(2,3) X = 0.9501 0.6068 0.8913 0.2311 0.4860 0.76213矩阵的裁剪与拼接矩阵的裁剪与拼接 从一个矩阵中取出若干行(列)构成新的矩阵称为裁从一个矩阵中取出若干行(列)构成新的矩阵称为裁剪,剪,MATLAB中中“:”的使用是非常重要的裁剪工具,的使用是非常重要的裁剪工具,如:如: C=A(2:3,:) C = 7 5 6 0 7 8 0 0 注:注:A(2:3,:)中中“2:3”表示取表示取2至至3行,行,“:”表示取所有的表示取所有的列。列。 D = 5 6 0 8 0 0 D=C(:,2:4)A(3,:) ans = 7 8
11、 0 0 将几个矩阵接在一起称为拼接。左右拼接时要求行数将几个矩阵接在一起称为拼接。左右拼接时要求行数相同,上下拼接时要求列数相同。如:相同,上下拼接时要求列数相同。如: E=C,ones(2,1) E = 7 5 6 0 1 7 8 0 0 1 F=A(1:2,:);eye(1,4) F = 1 2 3 0 7 5 6 0 1 0 0 04矩阵的运算矩阵的运算 “+”加法;加法;“”减法;减法;“ ”转值;转值;“*”乘法;乘法;“”乘幂;乘幂;“”左除;左除;“/”右除。矩阵运算要符合矩右除。矩阵运算要符合矩阵运算规律,若不符合运算规律,将产生错误信息。这里阵运算规律,若不符合运算规律,将
12、产生错误信息。这里只将左除和右除的用法叙述如下:只将左除和右除的用法叙述如下: 设设A可逆,可逆,AX=B的解是的解是A左除左除B,即,即X=AB;XA=B的解是的解是A右除右除B,即,即X=B/A,如:如: A=1,2,3;4,5,6;7,8,0A = 1 2 3 4 5 6 7 8 0 b=366;804;351b = 366 804 351 X=AbX = 25.0000 22.0000 99.0000 B=AB = 1 4 7 2 5 8 3 6 0 d=bd = 366 804 351 Y=d/BY = 25.0000 22.0000 99.0000 X=b/AX = 561 -22
13、2 99二、数组及其运算二、数组及其运算 一行一列的矩阵是向量或数组,在一行一列的矩阵是向量或数组,在MATLAB中向量和数中向量和数组虽然形式一致,但却是两个不同的概念,遵循不同的运组虽然形式一致,但却是两个不同的概念,遵循不同的运算规则。数组是元素为连续存储的数据的集合,数组运算算规则。数组是元素为连续存储的数据的集合,数组运算的最重要特征是按元素进行运算。的最重要特征是按元素进行运算。 1 数组的输入数组的输入 可以像可以像1n矩阵(即行向量)一样输入,如:矩阵(即行向量)一样输入,如: a=2,3,4,5 a = 2 3 4 5 数组常用数组常用“:”来方便地生成一些特殊的数组。如:来
14、方便地生成一些特殊的数组。如:a=1:5(从从1到到5公差为公差为1的等差数组的等差数组)a = 1 2 3 4 5 b=1:2:7(从从1到到7公差为公差为2的等差数组的等差数组)b = 1 3 5 7c=6:-3:-6(从从6到到-6公差为公差为-3的等差数组的等差数组)c = 6 3 0 -3 -6 e=0:2:8,ones(1,3)(等差数组和行向量的拼接等差数组和行向量的拼接)e = 0 2 4 6 8 1 1 1 2数组的运算数组的运算 数组除作为数组除作为1n矩阵(行向量)遵循矩阵运算外,矩阵(行向量)遵循矩阵运算外,MATLAB还为数组提供了一些特殊运算。两个数组间的还为数组提
15、供了一些特殊运算。两个数组间的运算是将对应元素作运算而得到的一个新的数组。一个数运算是将对应元素作运算而得到的一个新的数组。一个数与一个数组间的运算是该数逐个与数组元素作运算而得到与一个数组间的运算是该数逐个与数组元素作运算而得到的数组。数组运算符有:的数组。数组运算符有: “+”加法;加法;“-”减法;减法;“.*”乘法;乘法;“.”乘幂;乘幂;“.”左除;左除;“./”右除。为了与矩阵运算相区别,乘法、右除。为了与矩阵运算相区别,乘法、除法、乘幂号前加上一个点除法、乘幂号前加上一个点“.”,为了避免二义性,最,为了避免二义性,最好在运算符的好在运算符的“.”前留一个空格。前留一个空格。 a
16、=1,2,3,4,5,b=1,3,5,7,9,c=a .*ba = 1 2 3 4 5b = 1 3 5 7 9c = 1 6 15 28 45 d=a.2,e=b.ad = 1 4 9 16 25e =1 9 125 2401 59049f=a./b,g=a.bf = 1.0000 0.6667 0.6000 0.5714 0.5556g =1.0000 1.5000 1.6667 1.7500 1.8000三、语句、变量和表达式三、语句、变量和表达式 1语句形式语句形式 MATLAB的语句的一般表达形式:的语句的一般表达形式: 变量变量=表达式表达式 注注: 若变量和若变量和“=”省略,则
17、名为省略,则名为ans的变量自动建立。的变量自动建立。 如果你输入一个语句,并以回车结束,则在工作如果你输入一个语句,并以回车结束,则在工作 区中显示计算结果;如果语句以分号区中显示计算结果;如果语句以分号“;”结束结束;MATLAB只进行计算,不显示计算结果。只进行计算,不显示计算结果。 如果表达式太长,可以用续行号如果表达式太长,可以用续行号“”将其延续到下将其延续到下一行。一行。 一行中可以写几个语句,它们之间要用逗号或分号分一行中可以写几个语句,它们之间要用逗号或分号分开。开。 a=1,2,3,4,5;b=1,3,5,7,9;c=a.*b,d=a*b,e=a*b回车回车 c = 1 6
18、 15 28 45d = 95e = 1 3 5 7 9 2 6 10 14 18 3 9 15 21 27 4 12 20 28 36 5 15 25 35 452变量变量 MATLAB的变量由字母、数字和下划线组成,最多的变量由字母、数字和下划线组成,最多31个个字符,区分大小写字母,第一个字符必须是字母。对于变字符,区分大小写字母,第一个字符必须是字母。对于变量,量,MATLAB不需要任何类型的说明或维数语句,当输不需要任何类型的说明或维数语句,当输入一个新的变量名时,入一个新的变量名时,MATLAB自动建立变量并分配内自动建立变量并分配内存空间。存空间。 几个特殊变量:几个特殊变量:
19、pi 圆周率圆周率; eps 最小浮点数;最小浮点数; Inf 正正无无穷穷大大,特特指指1/0; NaN 不定值,特指不定值,特指0/0;I,j 虚数单位。虚数单位。 a=0,1,0,b=1,0,0,c=a./ba = 0 1 0b = 1 0 0 c = 0 Inf NaN c=pi c = 3.14163变量的存储变量的存储 工作空间中的变量可以用工作空间中的变量可以用save命令存储到磁盘文件中。命令存储到磁盘文件中。键入键入save,将工作空间中全部变量存到,将工作空间中全部变量存到. mat 文件中去,若省略文件中去,若省略,则存到文件,则存到文件matlab.mat中。如:中。如
20、: save madt save madtl a b (将变量将变量a b存入存入madtl.mat文件中文件中) 4调出调出 用用load命令可以把变量从磁盘文件读入到命令可以把变量从磁盘文件读入到MATLAB的的工作空间。工作空间。load命令也可以调出文本文件,但是文本文件命令也可以调出文本文件,但是文本文件只能由数字组成的矩阵形式。只能由数字组成的矩阵形式。load命令的用法为:命令的用法为: load,它将,它将指出的磁盘文件中的数指出的磁盘文件中的数据依次读入名称与据依次读入名称与相同的工作空间中的变量中去。相同的工作空间中的变量中去。如:如: load madt load mad
21、tl 5变量值的显示变量值的显示 作为运算结果的变量值,在表达式计算后在屏幕上显作为运算结果的变量值,在表达式计算后在屏幕上显示出来,但在表达式结尾加一个分号示出来,但在表达式结尾加一个分号“;”,该结果不再,该结果不再显示。显示。 显示显示格式格式: 在在MATLAB中数据可以用多种格式显示,显中数据可以用多种格式显示,显示格式用显示命令指定。显示命令主要有:示格式用显示命令指定。显示命令主要有: format short(短格式,省缺显示短格式,省缺显示);format long(长格式);长格式);format bank;format rat(分数格式);分数格式);format sho
22、rt e(短短e格式格式);format long e(长(长e格式)。格式)。 以以为例,将显为例,将显示方式列表如示方式列表如下:下: 命令命令 显示显示 说明说明 format short ,t=pi 3.1416 4位小数位小数 format long ,t =pi 3.14159265358979 15位小数位小数 format bank,t =pi 3.14 2位小数位小数 format rat,t =pi 355/113 最接近的有理数最接近的有理数 format short e,t =pi 3.1416e+000 科学计数科学计数 format long e ,t =pi 3.
23、141592653589793e+000 四、函数四、函数 MATLAB提供了大量的函数,按照起用法分为标量函数、提供了大量的函数,按照起用法分为标量函数、向量函数和矩阵函数。向量函数和矩阵函数。 1标量函数标量函数 常用的函数列出如下,只作必要的注释:常用的函数列出如下,只作必要的注释: 三角函数:三角函数:双曲函数双曲函数:其他基本函数:其他基本函数: cos; sin ;tan ;cot; csc; asin; acos; atan; acot; asec ;acsc;sinh; cosh; tanh ;asinh; acosh ;atanh。 Sqrt(平方根);平方根); exp(指
24、数函数)指数函数) ;log(对数函数)对数函数) ;log10(以以10为底的对数函数);为底的对数函数); log2(以(以2为底的为底的对数对数函数);函数);abs (绝对值或复数模绝对值或复数模);;real(取实部)取实部);imag(取虚部)取虚部);angle(取幅角)取幅角);rats(有理逼近)。有理逼近)。注:注:这些函数本质上是作用于标量,当它们作用于矩阵这些函数本质上是作用于标量,当它们作用于矩阵(或数组)时,是对矩阵(或数组)的每个元素进(或数组)时,是对矩阵(或数组)的每个元素进行运算。如:行运算。如: 舍入函数:舍入函数:round(四舍五入四舍五入);floo
25、r(向向-方向取值)方向取值);ceil(向向+方向取值);方向取值); fix(向零方向取向零方向取整)整)y = 0 0.5878 0.9511 0.9511 0.5878 0.0000 a=-3.5,4.6,2.8,-2.2;b=round(a),c=floor(a),d=ceil(a),e=fix(a),f=rats(a) b = -4 5 3 -2c = -4 4 2 -3d = -3 5 3 -2e = -3 4 2 -2f = -7/2 23/5 14/5 -11/5 2向量函数向量函数 x=(0:0.2:1).*pi; y=sin(x) (用于数据分析)用于数据分析) 有些函数
26、只有当它们作用于(行或列)向量时才有意有些函数只有当它们作用于(行或列)向量时才有意义,称之为向量函数。这些函数也可作用于矩阵,此时它义,称之为向量函数。这些函数也可作用于矩阵,此时它产生一个行向量,行向量的每个元素是函数作用于相应列产生一个行向量,行向量的每个元素是函数作用于相应列向量的结果。常用的有:向量的结果。常用的有: max; min; sum(和和); length(长度长度); mean(平均值)平均值) median(中值中值); prod(乘积)乘积); sort(从小到大排列从小到大排列)。std (标准差)标准差)a=4,3.1,-1.2,0.6,2.8; b=min(a
27、), c=sum(a), d=median(a), e=sort(a) a = 4.0000 3.1000 -1.2000 0.6000 2.8000b = -1.2000c = 9.3000d = 2.8000e =-1.2000 0.6000 2.8000 3.1000 4.0000 3矩阵函数矩阵函数 矩阵函数可分为两类:构造矩阵的函数和进行矩阵计算的矩阵函数可分为两类:构造矩阵的函数和进行矩阵计算的函数。函数。 构造矩阵的函数构造矩阵的函数:zeros(0矩阵矩阵);ones(1矩阵矩阵); eye(单位矩阵单位矩阵);rand(均均匀匀分分布布随随机机矩矩阵阵);randn(正正态态
28、分分布布随随机机矩矩阵阵);Randperm(m)(生生 成成 从从 1到到m的随机变量排列)的随机变量排列)diag(生成或提取对角矩阵生成或提取对角矩阵);triu(生生成成或或提提取取上上三三角角矩矩阵阵); tril(生生成成或或提提取取下下三三角角矩矩阵阵); Meshgrid(三维网图);三维网图);A=1,2,3;4,5,6;7,8,10 B=triu(A), C=tril(A), B = 1 2 3 0 5 6 0 0 10 C = 1 0 0 4 5 0 7 8 10 A = 1 2 3 4 5 6 7 8 10D= diag(A), E=diag(D) D = 1 5 10
29、 E = 1 0 0 0 5 0 0 0 10 常见的矩阵计算函数有:常见的矩阵计算函数有: size(大小大小);det(行列式行列式);rank(秩秩);inv(逆逆);eig(特征特征值,特征向量与特征值)值,特征向量与特征值);trace(迹);迹);expm(矩阵指矩阵指数)数); poly(特征多项式)特征多项式); lu(lu分解)分解); qr(正交分解)正交分解); norm(矩阵或向量的范数);矩阵或向量的范数);cond(条件数)。条件数)。poly(特征多项式);特征多项式);chol(Cholesky分解)分解) A=8,1,6;3,5,7;4,9,2,B=size(
30、A) A = 8 1 6 3 5 7 4 9 2B =3 3 C=det(A),D=rank(A),E=inv(A) C = -360D = 3E = 0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028F=trace(A),G=poly(A),F = 15G = 1.0000 -15.0000 -24.0000 360.0000 h=expm(A)h = 1.0e+006 * 1.0898 1.0896 1.0897 1.0896 1.0897 1.0897 1.0896 1.0897 1.0897 将矩阵将矩阵
31、A分解为单位下三角阵分解为单位下三角阵L与上三角阵与上三角阵U之积之积L = 1.0000 0 0 0.3750 0.5441 1.0000 0.5000 1.0000 0U = 8.0000 1.0000 6.0000 0 8.5000 -1.0000 0 0 5.2941L,U=lu(A)Q,R=qr(A) Q = -0.8480 0.5223 0.0901 -0.3180 -0.3655 -0.8748 -0.4240 -0.7705 0.4760 R = -9.4340 -6.2540 -8.1620 0 -8.2394 -0.9655 0 0 -4.6314 将将A分解为正交矩阵分解
32、为正交矩阵Q与上三角阵与上三角阵R之积之积X=1,2,3;2,20,30;3,30,94,w=chol(X)将将正定矩阵正定矩阵X分解成分解成X=y*y,其中其中y是上三角阵是上三角阵X = 1 2 3 2 20 30 3 30 94w = 1 2 3 0 4 6 0 0 7D = 78.9151 0 0 0 22.2180 0 0 0 30.8669 C = -0.6559 0.7940 -0.7594 -0.2066 -0.4010 0.6360 -0.7260 -0.4570 -0.1370 C,D=eig(A) B = 78.9151 22.2180 30.8669 B=eig(A) A=fix(50*rand(3,3) A = 47 24 22 11 44 0 30 38 41