《matlab程序设计矩阵及其运算ppt课件》由会员分享,可在线阅读,更多相关《matlab程序设计矩阵及其运算ppt课件(98页珍藏版)》请在金锄头文库上搜索。
1、第二节 矩阵及其运算矩阵及其运算矩阵及其运算 MATLAB语言是由早期专门用于矩阵运算的计算机语言是由早期专门用于矩阵运算的计算机语言发展而来的,其名称就是语言发展而来的,其名称就是“矩阵实验室矩阵实验室”的缩写。的缩写。MATLAB语言最基本、最重要的功能就是进行实数矩阵语言最基本、最重要的功能就是进行实数矩阵或是复数矩阵的运算,其所有的数值功能都以矩阵为基或是复数矩阵的运算,其所有的数值功能都以矩阵为基本单元来实现。矩阵是本单元来实现。矩阵是MATLAB的重要组成部分,将对的重要组成部分,将对矩阵及其运算进行详细介绍。矩阵及其运算进行详细介绍。矩阵及其运算矩阵及其运算一矩阵的生成矩阵的生成
2、(1)命令窗口直接输入;命令窗口直接输入;(2)通过语句和函数产生矩阵;通过语句和函数产生矩阵;(3)在在M文件中建立;文件中建立;(4)从外部的数据文件中导入矩阵从外部的数据文件中导入矩阵最常用的是在命令窗口中直接输入矩阵。最常用的是在命令窗口中直接输入矩阵。方式:把矩阵的元素直接排列到方括号中,每行内的元方式:把矩阵的元素直接排列到方括号中,每行内的元素用空格或者逗号相隔,行与行之间的内容用分号相素用空格或者逗号相隔,行与行之间的内容用分号相隔。隔。矩阵及其运算矩阵及其运算二二 矩阵的基本数值运算矩阵的基本数值运算 矩阵的基本运算通常包含有矩阵与常数的四则运算、矩阵的基本运算通常包含有矩阵
3、与常数的四则运算、矩阵与矩阵之间的的四则运算以及矩阵的逆运算等。本矩阵与矩阵之间的的四则运算以及矩阵的逆运算等。本节将要对矩阵的这些运算作简要的介绍。节将要对矩阵的这些运算作简要的介绍。 1 矩阵与常数的四则运算矩阵与常数的四则运算 矩阵与常数的四则运算即是指矩阵各元素与常数之间矩阵与常数的四则运算即是指矩阵各元素与常数之间的四则运算。在矩阵与常数进行除法运算时,常数只能的四则运算。在矩阵与常数进行除法运算时,常数只能作为除数。作为除数。例二例二如下:如下:矩阵及其运算矩阵及其运算 2 矩阵之间的四则运算矩阵之间的四则运算 (1)矩阵与矩阵的加法(减法)矩阵与矩阵的加法(减法) 矩阵与矩阵的加
4、法(减法)即是指矩阵各元素之间的矩阵与矩阵的加法(减法)即是指矩阵各元素之间的加法(减法)运算。矩阵必须具有相同的阶数时才可以加法(减法)运算。矩阵必须具有相同的阶数时才可以进行加法(减法)运算。进行加法(减法)运算。例三例三如下:如下:矩阵及其运算矩阵及其运算 由上例可以看出,矩阵由上例可以看出,矩阵m3为为3*3的,而的,而m1为为4*4的。因而如果求的。因而如果求m5m3m1,系统就会报错。,系统就会报错。 (2)矩阵与矩阵的乘法矩阵与矩阵的乘法 在在MATLAB7中,矩阵的乘法使用的是运算符中,矩阵的乘法使用的是运算符“*”。由由数学知识,我们知道们只有当第一个矩阵(左矩阵)的数学知识
5、,我们知道们只有当第一个矩阵(左矩阵)的列数等于第二个矩阵(右矩阵)的行数时,两个矩阵的列数等于第二个矩阵(右矩阵)的行数时,两个矩阵的乘积才有意义。乘积才有意义。 例四例四 矩阵的乘法运算。矩阵的乘法运算。矩阵及其运算矩阵及其运算 由上例可以看出,矩阵由上例可以看出,矩阵A为为4*4阶,矩阵阶,矩阵D为为3*3阶,两者的阶数不符合乘法的要求,因此报错。阶,两者的阶数不符合乘法的要求,因此报错。 (3) 矩阵与矩阵的除法矩阵与矩阵的除法 在在MATLAB7中,矩阵的除法有左除和右除两种,分中,矩阵的除法有左除和右除两种,分别以符号别以符号“”和和“/”表示。表示。 但是从但是从MATLAB6以
6、来,以来,矩阵矩阵的左除和右除的区别在逐渐减少。斜杆上面的数据除以的左除和右除的区别在逐渐减少。斜杆上面的数据除以斜杆下面的数据。斜杆下面的数据。 三三 矩阵的特征参数运算矩阵的特征参数运算 关于矩阵的运算,主要包括:矩阵的特征值运算、行关于矩阵的运算,主要包括:矩阵的特征值运算、行列式运算、矩阵的范数运算和矩阵的条件运算等。列式运算、矩阵的范数运算和矩阵的条件运算等。 矩阵及其运算矩阵及其运算三三 矩阵的特征参数运算矩阵的特征参数运算一一 矩阵的乘方运算和开方运算矩阵的乘方运算和开方运算 在在MATLAB7中,可以使用中,可以使用Ap来计算来计算A的的p次方,使用次方,使用函数函数sqrtm
7、来对矩阵进行开方运算。如果有来对矩阵进行开方运算。如果有X*X=A,则有则有sqrtm(A)=X。 例五例五 求矩阵的乘方和开方运算。求矩阵的乘方和开方运算。 矩阵及其运算矩阵及其运算由此可见,矩阵的开方运算和乘方运算互为逆运算。由此可见,矩阵的开方运算和乘方运算互为逆运算。 二二 矩阵的指数和对数运算矩阵的指数和对数运算 矩阵的指数运算用矩阵的指数运算用expm函数来实现;对数运算用函数来实现;对数运算用logm函数来实现。两者互为逆运算函数来实现。两者互为逆运算。 例六例六 矩阵的指数和对数运算矩阵的指数和对数运算矩阵及其运算矩阵及其运算三三 矩阵的逆运算矩阵的逆运算 矩阵求逆在矩阵运算中
8、,是非常重要的运算。矩阵可矩阵求逆在矩阵运算中,是非常重要的运算。矩阵可逆的充分必要条件就是矩阵的行列式不为零。在逆的充分必要条件就是矩阵的行列式不为零。在MATLAB中,所有复杂的问题都化为一个函数中,所有复杂的问题都化为一个函数inv。例七例七 求矩阵求矩阵A的逆。的逆。四四 矩阵的行列式运算矩阵的行列式运算 当矩阵的行和列相同时,可以进行矩阵的行列式操当矩阵的行和列相同时,可以进行矩阵的行列式操作。作。MATLAB提供了函数提供了函数det来求行列式的值。来求行列式的值。例八例八 求矩阵求矩阵A的及其其逆矩阵的及其其逆矩阵B的行列式的值。的行列式的值。矩阵及其运算矩阵及其运算五五 矩阵的
9、特征值运算矩阵的特征值运算 在矩阵中,特征值占据着重要的角色,在在矩阵中,特征值占据着重要的角色,在MATLAB中,可以利用中,可以利用eig、eigs两个函数来进行矩阵的特征值运两个函数来进行矩阵的特征值运算,其使用的格式和注意事项如下:算,其使用的格式和注意事项如下:nE=eig(X)命令生成由矩阵命令生成由矩阵X 的特征值所组成的一的特征值所组成的一个列向量。其中个列向量。其中X必须是方阵。必须是方阵。nV,D=eig(X)命令生成两个矩阵命令生成两个矩阵V和和D,其中,其中V是是以矩阵以矩阵X的特征向量作为列向量组成的矩阵,的特征向量作为列向量组成的矩阵,D是由矩阵是由矩阵X的特征值作
10、为主对角线元素构成的对角矩阵。的特征值作为主对角线元素构成的对角矩阵。矩阵及其运算矩阵及其运算neigs函数使用方法同函数使用方法同eig函数相同,函数相同,eigs函数使用的是迭函数使用的是迭代法来求解矩阵的特征值和特征向量。代法来求解矩阵的特征值和特征向量。例九例九 求矩阵求矩阵A和和X的特征值和特征向量。的特征值和特征向量。矩阵及其运算矩阵及其运算六六 矩阵的秩矩阵的秩 矩阵可以经过初等行或列变换,将其转换为行阶梯行矩阵可以经过初等行或列变换,将其转换为行阶梯行矩阵,而行阶梯行矩阵所包含非零行的行数是一定的,矩阵,而行阶梯行矩阵所包含非零行的行数是一定的,这个确定的非零行的行数就是矩阵的
11、秩。在这个确定的非零行的行数就是矩阵的秩。在MATLAB中,矩阵的秩可以通过函数中,矩阵的秩可以通过函数rank来求得。来求得。七七 矩阵的迹矩阵的迹 矩阵的迹是指矩阵主对角线上所有元素的和,也是矩矩阵的迹是指矩阵主对角线上所有元素的和,也是矩阵各特征值,矩阵的迹可以通过阵各特征值,矩阵的迹可以通过trace函数求得。函数求得。矩阵及其运算矩阵及其运算四四 矩阵的分解运算矩阵的分解运算 MATLAB的数学处理能力之所以强大,很大一部分的数学处理能力之所以强大,很大一部分的原因就是它的矩阵函数功能的扩展。矩阵分解在数值的原因就是它的矩阵函数功能的扩展。矩阵分解在数值分析和科学研究中有着重要的地位
12、。常用的分解方法有分析和科学研究中有着重要的地位。常用的分解方法有以下几种:三角分解(以下几种:三角分解(lu)、正交分解()、正交分解(qr)、特征值)、特征值分解(分解(eig)和奇异值分解()和奇异值分解(svd)。我们这里主要介绍特。我们这里主要介绍特征值分解。征值分解。矩阵及其运算矩阵及其运算1、特征值分解、特征值分解 由以前学过的知识,我们已经了解到在由以前学过的知识,我们已经了解到在MATLAB是是应用函数应用函数eig来解决的。但是应用到特征值分解的部分,来解决的。但是应用到特征值分解的部分,需要在形式上作一定的变化,其使用的格式如下:需要在形式上作一定的变化,其使用的格式如下
13、:nV,Deig(X)命令生成两个矩阵命令生成两个矩阵V和和D,其中,其中V是以是以矩阵矩阵X的特征向量作为列向量组成的矩阵,的特征向量作为列向量组成的矩阵,D是由矩阵是由矩阵X的特征值作为主对角线元素构成的对角矩阵,使得满足的特征值作为主对角线元素构成的对角矩阵,使得满足关系式关系式X*V=V*D。 矩阵及其运算矩阵及其运算nV,Deig(A,B)命令对矩阵命令对矩阵A、B做广义特征值分解,做广义特征值分解,使得满足关系式使得满足关系式A*V=B*V*D。例十如下:例十如下:矩阵及其运算矩阵及其运算五五 矩阵的一些特殊处理函数矩阵的一些特殊处理函数 1 矩阵的变维矩阵的变维 在在MATLAB
14、中,使用中,使用reshape函数对矩阵进行变维操函数对矩阵进行变维操作,其使用格式如下:作,其使用格式如下:nreshape(X,M,N):该命令将矩阵:该命令将矩阵X的所有元素分配的所有元素分配到一个到一个MN的新矩阵,当矩阵的新矩阵,当矩阵X的元素不是的元素不是MN时,时,将返回一个错误。将返回一个错误。nreshape(X,M,N,P,):该命令返回由矩阵:该命令返回由矩阵X的元素的元素组成的组成的MNP多维矩阵,如果多维矩阵,如果MNP与与X的元素数不同时,返回错误。的元素数不同时,返回错误。矩阵及其运算矩阵及其运算nreshape(X,M,N,p,):该命令与上个:该命令与上个re
15、shape(X,M,N,p,)命令的效果一致。命令的效果一致。例十一:例十一:矩阵及其运算矩阵及其运算2 矩阵的变向矩阵的变向 矩阵的变向包括对矩阵进行旋转、上下翻转、左右翻矩阵的变向包括对矩阵进行旋转、上下翻转、左右翻转以及对指定的维进行翻转。分别由函数转以及对指定的维进行翻转。分别由函数rot90、 flipud、fliplr和和flipdim来实现。具体用法如下:来实现。具体用法如下:nrot90(A):命令返回矩阵):命令返回矩阵A按逆时钟方向旋转按逆时钟方向旋转90度度所得的矩阵。所得的矩阵。nrot90(A,K):命令返回矩阵):命令返回矩阵A按逆时针方向旋转按逆时针方向旋转90K
16、度所得的矩阵。(度所得的矩阵。(K=1, 2,)。)。nflipud(X):命令将矩阵):命令将矩阵X上下翻转。上下翻转。矩阵及其运算矩阵及其运算nfilplr(X):该命令将矩阵:该命令将矩阵X左右翻转左右翻转。nfilpdim(X,DIM):还命令将矩阵):还命令将矩阵X的第的第DIM维翻维翻转。转。例十二例十二矩阵及其运算矩阵及其运算六六 特殊矩阵的生成特殊矩阵的生成 在介绍了矩阵的生成以后,在介绍一些特殊的矩阵的在介绍了矩阵的生成以后,在介绍一些特殊的矩阵的生成。生成。 1 零矩阵和全零矩阵和全1矩阵的生成矩阵的生成 零矩阵指的就是矩阵中的元素全部为零,在零矩阵指的就是矩阵中的元素全部
17、为零,在MATLAB中,使用中,使用zeros函数来生成一个零矩阵。它的使函数来生成一个零矩阵。它的使用格式如下:用格式如下:n A=zeros(M,N)命令中,)命令中,A为生成的零矩阵,为生成的零矩阵,M和和N分别为生成矩阵的行和列。分别为生成矩阵的行和列。n 如果已经存在矩阵如果已经存在矩阵B,要生成与,要生成与B维数相同的矩阵,维数相同的矩阵,矩阵及其运算矩阵及其运算可以使用命令:可以使用命令:A=zeros(size(B)。)。n 当要生成一个方阵时,也可以直接使用命令当要生成一个方阵时,也可以直接使用命令A=zeros(N),此时此时MATLAB只是生成一个只是生成一个N阶方阵。阶
18、方阵。 而全而全1矩阵的生成与零矩阵的生成类似,只是使用函矩阵的生成与零矩阵的生成类似,只是使用函数数ones来实现。来实现。例十三例十三 零矩阵和全零矩阵和全1矩阵的生成。矩阵的生成。矩阵及其运算矩阵及其运算2 对角矩阵的生成对角矩阵的生成 对角矩阵指的是对角线上的元素为任意数值,而其他对角矩阵指的是对角线上的元素为任意数值,而其他元素为零的矩阵。在元素为零的矩阵。在MATLAB中用函数中用函数diag来生成一个来生成一个对角矩阵。其格式为:对角矩阵。其格式为:n A=diag(V,K),),该命令表示该命令表示V为某个向量,为某个向量,K为向为向量量V偏离主对角线的列数。偏离主对角线的列数
19、。K等于零时表示等于零时表示V为主对角为主对角线,线,K为大于零的数时表示为大于零的数时表示V在主对角线以上,在主对角线以上,K小于零小于零表示表示V在主对角线以下。在主对角线以下。矩阵及其运算矩阵及其运算n A=diag(V),),该命令的意义同该命令的意义同A=diag(V,0)。即。即表示表示V为主对角线。为主对角线。例十四例十四 对角矩阵的生成函数。对角矩阵的生成函数。矩阵及其运算矩阵及其运算3 随机矩阵的随机矩阵的 生成生成 随机矩阵表示矩阵中的元素是随机数。在随机矩阵表示矩阵中的元素是随机数。在MATLAB中,使用两个函数中,使用两个函数rand和和randn函数来生成多种随机矩函
20、数来生成多种随机矩阵。其使用格式如下:阵。其使用格式如下:n rand(N):表示生成):表示生成NN阶的随机矩阵,生成矩阶的随机矩阵,生成矩阵的元素值在区间(阵的元素值在区间(0.0 1.0)之间。)之间。n rand(M,N):表示生成):表示生成MN阶随机矩阵,生成随阶随机矩阵,生成随机矩阵的元素值在区间(机矩阵的元素值在区间(0.0 1.0)之间。)之间。n randn(N):表示生成):表示生成NN阶的随机矩阵,生成的阶的随机矩阵,生成的矩阵的元素值服从正态分布矩阵的元素值服从正态分布N(0,1)矩阵及其运算矩阵及其运算n randn(M,N):表示生成:表示生成MN阶随机矩阵,生成
21、阶随机矩阵,生成的矩阵的元素值在服从正态分布的矩阵的元素值在服从正态分布N(0,1)。)。例十五例十五 随机矩阵的生成随机矩阵的生成矩阵及其运算矩阵及其运算4 魔术矩阵的生成魔术矩阵的生成 魔术矩阵是一个经常遇到的矩阵,它是一个方阵,特魔术矩阵是一个经常遇到的矩阵,它是一个方阵,特点是每一行、每一列以及每一主对角线元素之和都同。点是每一行、每一列以及每一主对角线元素之和都同。在在MATLAB中,用函数中,用函数magic来生成。其格式如下:来生成。其格式如下: magic(N):表示生成):表示生成NN阶的魔术矩阵,使矩阶的魔术矩阵,使矩阵的每一行、每一列以及每一主对角线元素之和都同。阵的每一
22、行、每一列以及每一主对角线元素之和都同。其中其中N0,N=2除外。除外。例十五例十五 魔术矩阵的生成。魔术矩阵的生成。矩阵及其运算矩阵及其运算矩阵及其运算矩阵及其运算七七 稀疏型矩阵稀疏型矩阵 以上已经对以上已经对MATLAB中的矩阵的用法做了一些基础中的矩阵的用法做了一些基础的介绍,当创建一个矩阵的时候系统会为矩阵中的每一的介绍,当创建一个矩阵的时候系统会为矩阵中的每一个元素分配内存。但是也存在如下的问题:例如函数个元素分配内存。但是也存在如下的问题:例如函数A=eye(10)创建的矩阵有)创建的矩阵有100个元素,其主对角线上个元素,其主对角线上的元素都为的元素都为1,别的元素都为,别的元
23、素都为0。即。即10个元素是非零,其个元素是非零,其他的他的90个元素是个元素是0。所以矩阵要求有。所以矩阵要求有100个单元,而只个单元,而只有有10个单元是非零的,这样的例子就是一个稀疏矩阵。个单元是非零的,这样的例子就是一个稀疏矩阵。矩阵及其运算矩阵及其运算 上面的例子就是一个典型的稀疏矩阵。可见,无论对上面的例子就是一个典型的稀疏矩阵。可见,无论对存储空间还是对零元素进行代数运算所需的计算量都是存储空间还是对零元素进行代数运算所需的计算量都是很大的浪费。对于这种情况,很大的浪费。对于这种情况,MATLAB提供了一个更为提供了一个更为高级的存储方式,即稀疏矩阵方法,这个矩阵中,高级的存储
24、方式,即稀疏矩阵方法,这个矩阵中,MATLAB7.0将不会存储矩阵中的将不会存储矩阵中的0元素而只对非零元素元素而只对非零元素进行操作。进行操作。 1 稀疏矩阵的生成稀疏矩阵的生成 在在MATLAB中,生成稀疏矩阵用以下几个函数:中,生成稀疏矩阵用以下几个函数:speye、spones、spdiags、find、full、spalloc、sprand和和sprandn等,这里主要介绍几个常用的函数。等,这里主要介绍几个常用的函数。矩阵及其运算矩阵及其运算1.speye函数函数nSpeye(size(A):生成和单位矩阵:生成和单位矩阵A维数相同的单位稀维数相同的单位稀疏矩阵。疏矩阵。nspey
25、e(M,N):生成单位稀疏矩阵,其中,其维数为:生成单位稀疏矩阵,其中,其维数为M和和N中较小的那个数。中较小的那个数。 nspeye(M) :生成:生成M阶的单位稀疏矩阵阶的单位稀疏矩阵。见例子见例子 矩阵及其运算矩阵及其运算2sprand函数函数 该函数用于生成随机稀疏矩阵(其元素服从该函数用于生成随机稀疏矩阵(其元素服从0-1分分布)。布)。nR=sprand(S):产生与稀疏矩阵:产生与稀疏矩阵S结构相同的稀疏结构相同的稀疏矩阵矩阵R,但是它的元素都是,但是它的元素都是0到到1上的随机数。上的随机数。nR=sprand(M,N,D):产生一个:产生一个MN的随机稀疏矩的随机稀疏矩阵阵R
26、,它的非零元素的个数近似为,它的非零元素的个数近似为MND,注意,注意D的的值介于值介于0和和1之间。之间。 见例子见例子 矩阵及其运算矩阵及其运算 2 稀疏矩阵与满矩阵的相互转换稀疏矩阵与满矩阵的相互转换 在在MATLAB中,用来将稀疏矩阵和满矩阵相互转换中,用来将稀疏矩阵和满矩阵相互转换的函数有的函数有sparse、full和和find。下面将具体介绍这三个函数。下面将具体介绍这三个函数的用法。的用法。1.sparse函数函数nS=sparse(X):将满矩阵将满矩阵X转换为稀疏矩阵转换为稀疏矩阵S。nS=sparse(i,j,s,m,n,nzm):生成生成mn的稀疏矩阵的稀疏矩阵S,向量
27、向量s的元素分布在以向量的元素分布在以向量i的对应值和向量的对应值和向量j的对应值为的对应值为坐标的位置上。坐标的位置上。nzm为向量为向量s的元素的个数。的元素的个数。nS=sparse(i,j,s,m,n):生成生成mn的稀疏矩阵的稀疏矩阵S,向量,向量s的的矩阵及其运算矩阵及其运算元素分布在以向量元素分布在以向量i的对应值和向量的对应值和向量j的对应值为坐标的位的对应值为坐标的位置上,其中,置上,其中,nzmax=length(s)。n S=sparse(i,j,s):生成:生成mn的稀疏矩阵的稀疏矩阵S,向量,向量s的元的元素分布在以向量素分布在以向量i的对应值和向量的对应值和向量j的
28、对应值为坐标的位置的对应值为坐标的位置上,其中上,其中m=max(i),n=max(j)。n S=sparse(m,n):即是:即是sparse(,m,n,0)的简化形的简化形式。式。见例题:见例题:矩阵及其运算矩阵及其运算2.full函数函数 在在MATLAB7.0中,可以利用中,可以利用full函数将稀疏函数转函数将稀疏函数转化为满矩阵。下面将介绍函数的用法:化为满矩阵。下面将介绍函数的用法:nS=full(X): 将稀疏矩阵将稀疏矩阵X转化为满矩阵转化为满矩阵S。如果。如果X的本的本身是满矩阵,系统将不做任何操作。身是满矩阵,系统将不做任何操作。见例子见例子24矩阵及其运算矩阵及其运算3
29、。 find函数函数n I=find(X):返回矩阵:返回矩阵X的非零元素的位置。例如:的非零元素的位置。例如:I=find(X100)返回返回X中大于中大于100的元素的位置。的元素的位置。n I,J=find(X):返回矩阵:返回矩阵X中非零元素所在的行中非零元素所在的行(I)和和列列(J)的具体数据。这种用法通常由于稀疏矩阵。的具体数据。这种用法通常由于稀疏矩阵。n I,J,V=find(X):除了返回:除了返回I和和J以为还返回一个向量,以为还返回一个向量,这个向量的数值为矩阵中非零元素数值。这个向量的数值为矩阵中非零元素数值。矩阵及其运算矩阵及其运算3 稀疏矩阵的操作稀疏矩阵的操作
30、对稀疏矩阵进行操作,主要由对稀疏矩阵进行操作,主要由nnz、nonzeros、nzmax、sponse、spalloc、isspase、spyfun和和spy等函数来实现。下面将选择几个主要的进行介绍:等函数来实现。下面将选择几个主要的进行介绍:1.nnz函数函数 在在MATLAB7.0中,中,nnz函数用于求非零元素的个函数用于求非零元素的个数。数。nnz=nnz(S):返回矩阵:返回矩阵S中非零元素的个数。中非零元素的个数。nD=nnz(S)/prod(size(S):表示稀疏矩阵:表示稀疏矩阵S中的非中的非零元素的密度。零元素的密度。矩阵及其运算矩阵及其运算nnz函数的用法见下例:函数的
31、用法见下例:2。 spones函数函数 在在MATLAB中,函数中,函数spones用来将稀疏矩阵中的非用来将稀疏矩阵中的非零元素替换成零元素替换成1。 R=spones(S):生成一个与稀疏矩阵:生成一个与稀疏矩阵S结构相同的稀结构相同的稀疏矩阵疏矩阵R,但是在矩阵,但是在矩阵S中的非零元素的位置上用元素中的非零元素的位置上用元素1替换。替换。见函数的应用例子:见函数的应用例子:矩阵及其运算矩阵及其运算3。 Spalloc函数函数 在在MATLAB7.0中,函数中,函数spalloc用来给稀疏矩阵分配用来给稀疏矩阵分配空间。空间。 S=spalloc(m,n,nzm):生成一个所有元素都为零
32、的:生成一个所有元素都为零的mn阶稀疏矩阵,计算机利用这个空间来存储阶稀疏矩阵,计算机利用这个空间来存储nzm个非个非零元素。零元素。例子如下:例子如下:矩阵及其运算矩阵及其运算n通常用法:s=spalloc(n,n,A*n)For j=1:ns(:,j)=(含有A个非零元素的稀疏向量)end矩阵及其运算矩阵及其运算3。 issparse 函数函数 在在MATLAB7.0中,函数中,函数issparse用来判断矩阵是否用来判断矩阵是否为稀疏矩阵。为稀疏矩阵。n issparse(S):返回值为:返回值为1说明矩阵说明矩阵S是一个稀疏矩是一个稀疏矩阵,返回值为阵,返回值为0时说明矩阵时说明矩阵S
33、不为稀疏矩阵。不为稀疏矩阵。 见例题:见例题:第三节第三节 数组及其运算数组及其运算数组及其运算数组及其运算 从外观形状和数据结构上看,二维数组和矩从外观形状和数据结构上看,二维数组和矩阵在形式上有很多一致性,但是实际上它们遵循阵在形式上有很多一致性,但是实际上它们遵循不同的运算规则。不同的运算规则。一一 数组寻址和排序数组寻址和排序 1 数组寻址数组寻址 由于数组是由多个元素组成的,所以,在访由于数组是由多个元素组成的,所以,在访问数组的单个或是多个元素的时候,有必要对数问数组的单个或是多个元素的时候,有必要对数组进行寻址。组进行寻址。 例十六:例十六:数组及其运算数组及其运算 上个例子是表
34、示用户一次访问一块数据。当访问多个上个例子是表示用户一次访问一块数据。当访问多个数据时,可以采用以下的格式。数据时,可以采用以下的格式。 当使用冒号时表示访问的是数组中的连续元素,当访当使用冒号时表示访问的是数组中的连续元素,当访问多个不连续的元素时,可以使用中括号进行操作。问多个不连续的元素时,可以使用中括号进行操作。数组及其运算数组及其运算2 数组排序数组排序 对于一个任意给定的数组,其数组元素往往是没有任对于一个任意给定的数组,其数组元素往往是没有任何规律性的,在实际使用中,往往需要对数组元素进行何规律性的,在实际使用中,往往需要对数组元素进行排序,函数排序,函数sort对数组进行排序,
35、其使用格式如下:对数组进行排序,其使用格式如下:n sort(X)命令将数组命令将数组X中的元素按升序排列。中的元素按升序排列。n 当当X是多维元素时,是多维元素时,sort(X)命令将命令将X中的各列元素中的各列元素按升序排列。按升序排列。n 当当X是一个字符型单元数组时是一个字符型单元数组时,sort(X)命令将命令将X中中的元素按的元素按ASCLL码进行升序排列。码进行升序排列。数组及其运算数组及其运算n Y=sort(X,DIM,MODE)命令中增加了两个参数,命令中增加了两个参数,DIM选择用于排列的维,而选择用于排列的维,而MODE决定了排序的方式,决定了排序的方式,选择选择asc
36、end将按升序排列,而选择将按升序排列,而选择descend将按降序排将按降序排列。该命令生成的数组列。该命令生成的数组Y与与X有相同的数组结构和型号。有相同的数组结构和型号。n 当当X的数据类型为复数时,将按各元素的模的数据类型为复数时,将按各元素的模abs(x)进行排序。进行排序。例十八例十八 使用使用sort函数进行数组排序。函数进行数组排序。数组及其运算数组及其运算二二 数组的基本数值运算数组的基本数值运算 简单的说,数组运算符由矩阵运算符前面加一个点简单的说,数组运算符由矩阵运算符前面加一个点“ . ”构成。例如:构成。例如:“ .* ”、“ . ”。1 数组的加法(减法)数组的加法
37、(减法) 数组的加法和减法与矩阵的加法减法运算相同。因此数组的加法和减法与矩阵的加法减法运算相同。因此运算符号运算符号“ ”和和“ ”就都可以被数组接受。就都可以被数组接受。2 数组的乘法(除法)数组的乘法(除法) 数组的乘法和除法运算在数组的乘法和除法运算在MATLAB中用符号中用符号“.*”和和“./”表示。表示的是表示。表示的是X和和Y单个元素之间的对应乘积。单个元素之间的对应乘积。需需要注意的是,数组的乘法必须是两个数组的维数相同,要注意的是,数组的乘法必须是两个数组的维数相同,这样数组的乘法才有意义。数组的除法也同时使用了正这样数组的乘法才有意义。数组的除法也同时使用了正数组及其运算
38、数组及其运算斜杠和反斜杠两种定义。在两种情况下,斜杠下的数组斜杠和反斜杠两种定义。在两种情况下,斜杠下的数组都被斜杠上的数组所除。和矩阵的区别在于矩阵的除法都被斜杠上的数组所除。和矩阵的区别在于矩阵的除法运算中不带点。运算中不带点。见例子见例子数组及其运算数组及其运算3. 数组的乘方数组的乘方 数组的乘法运算在数组的乘法运算在MATLAB7.0中用符号中用符号“.”表示。表示。数组的乘方运算有三种不同的形式,下面将分别予以介数组的乘方运算有三种不同的形式,下面将分别予以介绍。绍。n 两个数组之间乘方运算的情况两个数组之间乘方运算的情况 如例子如例子19所示:所示:数组及其运算数组及其运算n 一
39、个数组的某个具体数值的乘方,即计算数组乘方运一个数组的某个具体数值的乘方,即计算数组乘方运算时指数为标量的情况。算时指数为标量的情况。见例子见例子n 一个数组为指数,底数为标量的情况。一个数组为指数,底数为标量的情况。见例子见例子数组及其运算数组及其运算三三 数组的关系运算数组的关系运算 在在MATLAB中的关系与中的关系与C语言中的关系是雷同的,语言中的关系是雷同的,都是用逻辑关系都是用逻辑关系“真真”、“假假”来表征数学中的六种关来表征数学中的六种关系:系:小于、小于等于、大于、大于等于、等于和不等于。在小于、小于等于、大于、大于等于、等于和不等于。在MATLAB中,可以方便调用关系运算符
40、来实现数组之间中,可以方便调用关系运算符来实现数组之间的关系运算。的关系运算。见例子见例子20数组及其运算数组及其运算四四 数组的逻辑运算数组的逻辑运算 在各种逻辑运算中,主要有在各种逻辑运算中,主要有3种逻辑运算:与种逻辑运算:与(&)、或或(|)和非和非()。其中,。其中,“&”和和“|”是二元操作符,可是二元操作符,可以以比较两个变量或者两个数组比较两个变量或者两个数组(或矩阵或矩阵);“”是一个一是一个一元元操作符,对于数组或者矩阵而言,逻辑运算是针对于数操作符,对于数组或者矩阵而言,逻辑运算是针对于数组或矩阵中的每一个元素。当逻辑为真时,返回值为组或矩阵中的每一个元素。当逻辑为真时,返回值为1,当逻辑值为假时,返回值为当逻辑值为假时,返回值为0。