收藏 分享(赏)

第二章 matlab矩阵及其运算.ppt

上传人:gnk289057 文档编号:6221966 上传时间:2019-04-02 格式:PPT 页数:68 大小:299.50KB
下载 相关 举报
第二章 matlab矩阵及其运算.ppt_第1页
第1页 / 共68页
第二章 matlab矩阵及其运算.ppt_第2页
第2页 / 共68页
第二章 matlab矩阵及其运算.ppt_第3页
第3页 / 共68页
第二章 matlab矩阵及其运算.ppt_第4页
第4页 / 共68页
第二章 matlab矩阵及其运算.ppt_第5页
第5页 / 共68页
点击查看更多>>
资源描述

1、第2章 Matlab矩阵及其运算,2.1 Matlab变量 2.2 Matlab数值矩阵 2.3 运算符 2.4 基本数学函数 2.5 稀疏矩阵 2.6 矩阵分析 2.8 字符串 2.9 结构数据 2.10 细胞矩阵,2.1 Matlab变量,1. 变量命名规则 在MATLAB 6.5中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。在MATLAB中,变量名区分字母的大小写。 2变量赋值变量=表达式 3预定义变量i,j,pi,eps(最小精度),realmin,realmax,inf,NaN (Not a Number不是一个数)预定义变量有特定的含义,在使用时,应尽量

2、避免对这些变量重新赋值。,内存变量的管理,1指令操作法who:列出工作内存中的变量名whos:列出工作内存中的变量细节 clear: 2. 现场菜单操作法 3. 内存变量文件(.mat) (保存工作区中的变量)save 文件名 变量名表 -append-ascii把内存变量存入磁盘 load 文件名 变量名表 -ascii从磁盘中调入数据变量 help savehelp load,Matlab 数据类型,Array(matrix): MNPQ Default data type: double-precision float number array (for real: 8 bytes/el

3、ement)(for complex: 16 bytes/element) All MATLAB computations are done in double-precision.,数值数据的输出格式,MATLAB用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。 在一般情况下,MATLAB内部每一个数值数据元素都是用双精度数来表示和存储的。 数据输出时用户可以用format命令设置或改变数据输出格式。format命令的格式为: format 格式符 其中格式符决定数据的输出格式help formatformat format short 5位定点表示 Format he

4、x 十六进制的表示 format long 15位定点表示 Format bank 用元 角分(美制)定点表示 format short e 5位浮点表示 Format compact 变量之间没有空行 format long e 15位浮点表示 Format loose 变量之间有空行format rat近似的有理数的表示,2.2 MATLAB数值矩阵,2.2.1 矩阵的建立 1直接输入法 最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。,2利用M文件建立矩阵

5、 对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。下面通过一个简单例子来说明如何利用M文件创建矩阵。例2-2 利用M文件建立Mymat矩阵。 (1) 启动有关编辑程序或MATLAB文本编辑器,并输入待 建矩阵: (2) 把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。 (3) 在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。,3利用冒号表达式建立一个向量 冒号表达式可以产生一个行向量,一般格式是: e1:e2:e3 其中e1为初始值,e2为步长,e3为终止值。 在MATLAB中,还可以用linspace函

6、数产生行向量。其调用格式为: linspace(a,b) linspace 是用来生成一个等差数列的lin是linear的缩写 linspace(a,b,n) 其中a和b是生成向量的第一个和最后一个元素,n是元素总数。 显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。logspace(a,b) 对数logspace(a,b,n),4建立大矩阵 大矩阵可由方括号中的小矩阵或向量建立起来。5使用repmat函数(Replicate matrix)铺放模块数组 repmat(A,M N P .) repmat(A,M,N, P, .) 6. 使用blkdiag函数(Bloc

7、k diagnol matrix)块对角阵串接 |A 0 0 |Y =blkdiag(A,B,.) produces |0 B 0 |0 0 |7使用meshgrid函数用于三维曲面的分格线坐标 X,Y = meshgrid(x,y) e.g. IF x=1 2 3,y=0 1 2 3,THEN X Y=meshgrid(x,y)的结果X是1 2 3;1 2 3;1 2 3;1 2 3重复四次,因为y中有四个元素,同理Y是输出三列0 1 2 3的结果。 使用cat函数(concatenates the arrays A and B along the dimension DIM)把若干数组串接

8、成高维数组 Y=cat(dim,A1,A2,) 按dim联结所有输入的数组 C = cat(dim, A, B) 按dim来联结A和B两个数组 a=cat(3,A,B) 左括号后的3表示构造出的矩阵维数;在新的矩阵中第1、2维就是A和B这两个矩阵的行数和列数,第3维是A和B这两个矩阵的矩阵个数,即为2cat(2, A, B)相当于A, B; cat(1, A, B)相当于A; B. a = magic(3); b = pascal(3); c = cat(1,a,b),2.2.3 特殊矩阵 1通用的特殊矩阵 A=zeros(N)A=zeros(M,N,P,) A=zeros(M N P)A=z

9、eros(size(A)ones 所有元素都为1eye (identity matrix) 单位矩阵 例2-3 分别建立33、32和与矩阵A同样大小的零矩阵。,rand:The rand function generates arrays of random numbers whose elements are uniformly distributed in the interval (0,1). 输出0-1之间的随机数矩阵。randn:产生均值为0,方差为1的标准正态分布随机矩阵。例2-4 建立随机矩阵: (1) 在区间20,50内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.

10、1的5阶正态分布随机矩阵。 命令如下: x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5),randperm(n) is a random permutation(序列、排列) of the integers from 1 to n.整数1-n的一个随机排列randperm(6),2用于专门学科的特殊矩阵 (1) 魔方矩阵 魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n)其功能是生成一个n阶魔方阵。例2-5 将101125等25

11、个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。A=magic(5)+100,(2) 范得蒙矩阵 范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。在MATLAB中,函数vander(V)生成以向量V为基础向量的范得蒙矩阵。,(3) 希尔伯特矩阵 hilb(N) is the N by N matrix with elements 1/(i+j-1), which is a famous example of a badly conditioned matrix.希尔伯特

12、矩阵是一种数学变换矩阵,正定,且高度病态(即,任何一个元素发生一点变动,整个矩阵的值和逆矩阵都会发生巨大变化),病态程度和阶数相关。Matlab中生成希尔伯特矩阵的函数是hilb(n);求希尔伯特矩阵的逆的函数是invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。 例2-6 求4阶希尔伯特矩阵 format rat %以有理形式输出 H=hilb(4),(4) 托普利兹矩阵 托普利兹(Toeplitz)矩阵除第一行第一列外,其他每个元素都与左上角的元素相同。toeplitz(x,y) x、y为向量,但两者不必等长。toeplitz(x) 用向量x生成一个对称的托普利兹矩阵 hankel

13、矩阵(6) 帕斯卡矩阵 我们知道,二次项(x+y)n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形(如右上图)。由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。pascal(n),Companion matrix 相伴矩阵、友阵 A = compan(u)A = compan(u) returns the corresponding companion matrix whose first row is -u(2:n)/u(1), where u is a vector of polynomial coefficients. The eigenvalues of compan(

14、u) are the roots of the polynomial.Eg. Solve x3-7x+6=0,复数和复数矩阵,【例1.3.3-1】输入复数 z2 = 1 + 2 * i z3=2*exp(i*pi/6) z=z1*z2/z3 【例1.3.3-2】复数矩阵的生成及运算 A=1,3;2,4-5,8;6,9*i B=1+5i,2+6i;3+8*i,4+9*i C=A*B 【例1.3.3-3】求上例复数矩阵C的实部、虚部、模和相角。 C_real=real(C) C_imag=imag(C) C_magnitude=abs(C) C_phase=angle(C)*180/pi %以度为

15、单位计算相角,2.2.3 Size and dimensions of matrices 1Size of a matrix a row vector(行向量) M N PS=size(A) 输出结果为:矩阵有多少个行向量,每个行向量有几个元素2. Length of a matrixL=length(A) 矩阵行或列的长度(两者取最大)length(A)等价于max(size(A)3Dimension of a matrix a scalar 1Dims=ndims(A) 判断矩阵的维数,在Matlab中,行向量和列向量都当作2维来看待。length(size(A)等价于ndims(A)4E

16、mpty matrix A=,2.2.2 矩阵的拆分 1矩阵元素的引用 下标(Subscript )A(3,2)=200序号(Index)Index与Subscript的对应关系对mn矩阵A为例, A(i,j)等价于A(j-1)*m+i)IND = sub2ind(SIZ,I1,I2,.,In)I1,I2,I3,.,In = ind2sub(SIZ,IND),2矩阵拆分 (1) 利用冒号表达式获得子矩阵 A(:,j)A(i,:)A(i,j)A(i:i+m,:)A(:,k:k+m)A(i:i+m,k:k+n) A(i:end,k:k+n)A(:) 对矩阵中的元素按索引号从小到大列出,顺序和方式为

17、按列输出。 如A=0 1 2;3 4 5, 那么A(:)为 0 3 1 4 2 5(输出方式是列)。A(:,:,:,)(2) 利用Index获得子矩阵A(M) ( M是一个整数矩阵)(3) 利用逻辑矩阵获得子矩阵A(M) ( M是一个逻辑矩阵),(4) 利用空矩阵删除矩阵的元素 在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为X=。注意,X=与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。(5) 矩阵维数和大小的变换在矩阵总元素保持不变的前提下,该函数按照Index的顺序将矩阵A重新排成mn的二维矩阵。B = reshape(A,m,n

18、) mXn要与A之前的大小一样B = reshape(A,m,n,p,.) 如,A=magic(4),则B=reshape(A,4,2,2)为四行、两列的矩阵块相叠加。这里4*4=4*2*2B = reshape(A,m n p .) 与上面的结果一样B = reshape(A,.,.)B = reshape(A,siz),2.3 Matlab运算符和表达式,Arithmetic operators; Relational operators ; Logical operators,Arithmetic operators,A+B A-B +A -AA*B(矩阵相乘) A.*B(A 、B对应的

19、元素相乘,A、B需为同型矩阵) A/B(A*inv(B)) A./B (A中的元素除以B中对应的元素) AB (inv(A)*B) A.B (B中的元素除以A中对应的元素) AB A.B A A.,Relational operators,运算法则为: Scalar to scalar (标量to标量) Matrix to matrix Scalar to matrix Matrix to scalar,Logical operators,MATLAB offers three types of logical operator and functions.Element-wise - ope

20、rate on corresponding elements of logical arrays. & | xorany(A) 有非零元素则为真 all(A) 所有元素非零则为真Note MATLAB converts any finite nonzero, numeric values used as inputs to logical expressions to logical 1, or true. Bit-wise - operate on corresponding bits of integer values or arrays. bitand(a,b)bitor(a,b)bit

21、cmp(a,n) C = bitcmp(A, n) returns the bitwise complement of A as an n-bit unsigned integerbitxor(a,b) Short-circuit - operate on scalar, logical expressions. & | |e.g. x = (b = 0) & (a/b 18.5),(3) 利用逻辑矩阵获得子矩阵A(M) ( M是一个逻辑矩阵)A(logical expression) e.g. A(A3) 按索引序号找出A中满足值大于3的元素Index = find(A) 列出A的索引号i,

22、j = find(A) i,j,v = find(A)Index = find(logical expression) 找出满足表达式的元素的索引号i,j = find(logical expression) 找出满足表达式的元素i,j,v = find(logical expression) 找到满足条件的行数、列数及返回数字的值A(find(A3) 输出A中大于3的元素help find,2.4 基本数学函数(Elementary math functions),MATLAB提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量

23、同维数的矩阵。 三角函数(Trigonometric) 指数函数(Exponential) 复数函数(Complex) 圆整和求余函数(Rounding and remainder) Discrete Math 特殊函数(Specialized math functions) Coordinate System Conversion 坐标系统转换 矢量函数(Vector functions),1. 三角函数(Trigonometric),acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 asec 反正割 asech 反

24、双曲正割 asin 反正弦 asinh 反双曲正弦 atan 反正切 atanh 反双曲正切,atan2 四象限反正切 cos 余弦 cosh 双曲余弦 cot 余切 coth 双曲余切 csc 余割 csch 双曲余割 sec 正割 sech 双曲正割 sin 正弦 sinh 双曲正弦 tan 正切 tanh 双曲正切,2. 指数函数(Exponential),exp 指数 log 自然对数 log10 常用对数 log2 以2 为底的对数 pow2 2 的幂 sqrt 平方根,3. 复数函数(Complex),abs 绝对值 angle 相角 conj 复数共轭(complex conju

25、gate) imag 复数虚部 real 复数实部,4. 圆整和求余函数(Rounding and remainder),ceil 朝正无穷大方向取整 fix 朝零方向取整 floor 朝负无穷大方向取整 round 四舍五入取整 sign 符号函数mod(X,Y) 模数求余 rem(X,Y) 求余数So long as operands X and Y are of the same sign, the function mod(X,Y) returns the same result as does rem(X,Y). However, for positive X and Y, mod(

26、-X,Y) = rem(-X,Y)+Y,5. Discrete Math (e.g., Prime Factors),factor(n) Prime factors factorial Factorial function 进行因式或因子分解 gcd(A,B) Greatest common divisor isprime(A) True for prime numbers 若是质数则为真 lcm(A,B) Least common multiple nchoosek(n,k) All combinations of N elements taken K at a time perms(v)

27、All possible permutations 所有可能的排列 如A=perms(2:2:6),则返回2,4,6三个数所有的排列primes(n) Generate list of prime numbers 产生质数列表rat, rats(A) Rational fraction approximation 有理分式,6. 特殊函数(Specialized math functions),Specialized Math,7. Coordinate System Conversion(坐标系统转换),Cartesian polar spherical cart2pol 直角坐标变为柱(或

28、极)坐标 cart2sph 直角坐标变为球坐标 pol2cart 柱(或极)坐标变为直角坐标 sph2cart 球坐标变为直角坐标,8. 矢量函数(Vector functions),cross 向量叉积 C = CROSS(A,B) returns the cross product of the vectors A and B. That is, C = A x B. A and B must be 3 element vectors. dot 向量内积,spy 函数画稀疏结构图,2.4 稀疏矩阵 2.4.1 矩阵存储方式(按列存储) MATLAB的矩阵有两种存储方式:完全存储方式和稀疏存

29、储方式。 1完全存储方式 完全存储方式是将矩阵的全部元素按列存储。以前讲到的矩阵的存储方式都是按这个方式存储的,此存储方式对稀疏矩阵也适用。2稀疏存储方式 稀疏存储方式仅存储矩阵所有的非零元素的值及其位置,即行号和列号。在MATLAB中,稀疏存储方式也是按列存储的。 注意,在讲稀疏矩阵时,有两个不同的概念,一是指矩阵的0元素较多,该矩阵是一个具有稀疏特征的矩阵,二是指采用稀疏方式存储的矩阵。,2.4.2 稀疏存储方式的产生 1将完全存储方式转化为稀疏存储方式 S=sparse(A) 按列从小到大列出非零元素的下标和大小(如右图)sparse函数还有其他一些调用格式: S=sparse(m,n)

30、 :生成一个mn的所有元素都是0的稀疏矩阵。 S=sparse(u,v,s) :u,v,S是3个等长的向量。S是要建立的稀疏矩阵的非0元素,u(i)、v(i)分别是S(i)的行和列下标,该函数建立一个max(u)行、max(v)列并以S为稀疏元素的稀疏矩阵。S=sparse(u,v,s) 这里不要混淆S和s,u,v分别表示S(i)的行和列下标,s为该指定元素所对应的值 S=sparse(u,v,s,m,n) u,v,s同上,m,n为S为mXn的矩阵A=full(S) :返回和稀疏存储矩阵A对应的完全存储方式矩阵。上面得到的是稀疏矩阵的非零值,而该函数将把整个稀疏矩阵列出,2产生稀疏存储矩阵 只

31、把要建立的稀疏矩阵的非0元素及其所在行和列的位置表示出来后由MATLAB自己产生其稀疏存储,这需要使用spconvert函数。调用格式为:S = spconvert(D)其中D为一个m3或m4的矩阵为什们是mX3或mX4呢?因为D为mX3的矩阵时,前两个列值为要产生的稀疏矩阵的行标和列标,第三个列值为该稀疏矩阵元素的值。共有m个指定的稀疏矩阵的非零值。如图D为mX4的矩阵时,产生值为复数的稀疏矩阵,后面两个列值分别为复数的实部和虚部。例: 根据表示稀疏矩阵的矩阵A,产生一个稀疏存储方式矩阵B。 命令如下: A=2,2,1;3,1,-1;4,3,3;5,3,8;6,6,12; B=spconve

32、rt(A),3单位矩阵的稀疏存储 单位矩阵只有对角线元素为1,其他元素都为0,是一种具有稀疏特征的矩阵。函数eye产生一个完全存储方式的单位矩阵。MATLAB还有一个产生稀疏存储方式的单位矩阵的函数,这就是speye。函数speye(m,n)返回一个mn的稀疏存储单位矩阵。speye(m,n)speye(n),2.4.3 稀疏矩阵应用举例 稀疏存储矩阵只是矩阵的存储方式不同,它的运算规则与普通矩阵是一样的。所以,在运算过程中,稀疏存储矩阵可以直接参与运算。当参与运算的对象不全是稀疏存储矩阵时,所得结果一般是完全存储形式。,2.6.1 对角阵与三角阵2.6.2 矩阵的转置与旋转2.6.3 方阵的

33、行列式2.6.4 矩阵的逆与伪逆2.6.5 矩阵的秩与迹 2.6.6 向量和矩阵的范数 2.6.7 矩阵的特征值与特征向量 2.6.8 矩阵函数,2.6 矩阵分析,2.6.1 对角阵与三角阵1.对角矩阵(diagonal matrix)只有对角线上有非0元素的矩阵数量矩阵:对角线上的元素相等的对角矩阵单位矩阵:对角线上的元素都为1的对角矩阵X = diag(v,k) 第k条对角线上的值为v向量的值,其余为0X = diag(v) 缺省(默认)为主对角线上的值为v向量的值v = diag(X,k) 输出第k条对角线上的值v = diag(X)输出主对角线上的值,例2-10 先建立55矩阵A,然后

34、将A的第一行元素乘以1,第二行乘以2,第五行乘以5。 A=17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;. 11,18,25,2,19; D=diag(1:5); D*A %用D左乘A,对A的每行乘以一个指定常数,2三角阵(triangular matrix) 上三角阵:对角线以下的元素全为0的一种矩阵U = triu(X) 主对角线以上的元素保留,以下的为0U = triu(X,k) 第k对角线以上的元素保留,以下的都为0下三角阵:对角线以上的元素全为0的一种矩阵L = tril(X) 主对角线以下的元素保留,以上的为0L = tril

35、(X,k)第k对角线以下的元素保留,以上的都为0,2.6.2 矩阵的转置、旋转和翻转 1矩阵的转置 B=AB=A.B=permute(A,order) 见help permute,将A按order的顺序进行变换,如1 2 3 4 变成 4 2 3 12矩阵的旋转 B = rot90(A) 将A逆时针旋转90 B = rot90(A,k) 将A逆时针旋转90的k倍3矩阵的翻转 B = fliplr(A) 左右翻转left-rightB = flipud(A) 上下翻转up-downB = flipdim(A,dim)矩阵沿指定维翻转,如行维为1,列维为2,2.6.3 方阵的行列式 把一个方阵看作

36、一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。在MATLAB中,求方阵A所对应的行列式的值的函数是d = det(X),2.6.4 矩阵的逆与伪逆1方阵的逆 AB=BA=I (I为单位矩阵) Y = inv(X) or Y=X(-1)例2-11 用求逆矩阵的方法解线性方程组。 Ax=b 其解为:x=A-1b2矩阵的伪逆 如果矩阵A不是一个方阵,或者A是一个非满秩的方阵时,矩阵A没有逆矩阵,但可以找到一个与A的转置矩阵A同型的矩阵B,使得: ABA=A BAB=B 此时称矩阵B为矩阵A的伪逆,也称为广义逆矩阵。B = pinv(A),2.6.5 矩阵的秩与迹 1矩阵的

37、秩 矩阵线性无关的行数与列数称为矩阵的秩k = rank(A) 2矩阵的迹 矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。b = trace(A)b = sum(diag(A),2.6.6 向量和矩阵的范数 矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。范数有多种方法定义,其定义不同,范数值也就不同。,1向量的3种常用范数及其计算函数 在MATLAB中,求向量范数的函数为: norm(V,p) :Returns sum(abs(V).p)(1/p) 向量中每个元素的p次方求和,再进行开p次方。默认为p=2norm(V)或norm(V,2) :计算向量V的2范数 norm(V

38、,1) :计算向量V的1范数sum(abs(V) norm(V,inf) :计算向量V的范数max(abs(V)norm(V,-inf) :计算向量V的-范数min(abs(V),2矩阵的范数及其计算函数 MATLAB提供了求3种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同。范数是描述矩阵大小的一个量,类似于向量的模。但是向量是一维的,矩阵是多维的,所以很难说出实际的意义,不像模代表向量长度一样。 2.4.7 矩阵的条件数 在MATLAB中,计算矩阵A的3种条件数的函数是: (1) cond(A,1) 计算A的1范数下的条件数。 (2) cond(A)或cond(A,2) 计算A

39、的2范数数下的条件数。 (3) cond(A,inf) 计算A的 范数下的条件数。用矩阵及其逆矩阵的范数的乘积表示矩阵的条件数,由于矩阵范数的定义不同,因而其条件数也不同,但是由于矩阵范数的等价性,故在不同范数下的条件数也是等价的。矩阵条件数的大小是衡量矩阵“坏”或“好”的标志。 The condition number of a matrix measures the sensitivity of the solution of a system of linear equations to errors in the data. It gives an indication of the

40、accuracy of the results from matrix inversion and the linear equation solution. Values of cond(X) and cond(X,p) near 1 indicate a well-conditioned matrix.,条件数的作用及意义,条件数事实上表示了矩阵计算对于误差的敏感性。对于线性方程组Ax=b,如果A的条件数大,b的微小改变就能引起解x较大的改变,数值稳定性差。如果A的条件数小,b有微小的改变,x的改变也很微小,数值稳定性好。它也可以表示b不变,而A有微小改变时,x的变化情况。 比如线性方程组

41、 1 2; 3.999 1x y=4 7.999 的解是(x,y)=(2,1), 而 1 2;3.999 1x y=4.001 7.998 的解是(x,y)=(-3.999,4.000) 可见b很小的扰动就引起了x很大的变化,这就是A矩阵条件数大的表现。 一个极端的例子,当A奇异时,条件数为无穷,这时即使不改变b,x也可以改变。奇异的本质原因在于矩阵有0特征值,x在对应特征向量的方向上运动不改变Ax的值。如果一个特征值比其它特征值在数量级上小很多,x在对应特征向量方向上很大的移动才能产生b微小的变化,这就解释了为什么这个矩阵为什么会有大的条件数,事实上,正规阵在二范数下的条件数就可以表示成 a

42、bs(最大特征值/最小特征值)。,2.6.7 矩阵的特征值(eigenvalue )与特征向量 在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种: E=eig(A):求矩阵A的全部特征值,构成向量E。列出A的特征值 V,D=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。D为以特征值为对角阵元素的对角阵,V为特征值所对应的特征向量。V,D=eig(A,nobalance):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。(为什么2、3两种方式得到的特征

43、向量值会不同?),例2-12 用求特征值的方法解方程。 3x5-7x4+5x2+2x-18=0 p=3,-7,0,5,2,-18; A=compan(p); %A的伴随矩阵 x1=eig(A) %求A的特征值 x2=roots(p) %直接求多项式p的零点x1和x2得到的结果是一样的,但为什么求A的特征值时要先求p的伴随矩阵呢?,2.5.8 矩阵函数 sqrtm(A) 矩阵平方根 logm(A) 矩阵对数expm(A) 矩阵指数 funm(A,fun) 矩阵函数,2.8 字符串(Character Arrays or Strings),在Matlab中,字符串是用单撇号括起来的字符序列。 Ma

44、tlab将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同。也可以建立多行字符串矩阵。 字符串是以ASCII码形式存储的。 abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,char函数可以把ASCII码矩阵转换为字符串矩阵。字符串变量的建立S=string;S=String1,String2,String, 以行向量表示S=String1;String2;String, 以列向量表示S = strcat(s1,s2,s3,.)把多个串连接成长串,以行向量表示 S = strvcat(t1,t2,t3,.)创建字符串数组,以列向量表示,S

45、= char(X) 把符号对象转化为字符串数组(若X为数字,则S为相应的ASCII码值) X = double(S)把其他类型对象转换为双精度数值 X = abs(S) 取绝对值 str=int2str(N) 整型变成字符型 str = num2str(A) str = mat2str(A)将数组转换为字符串 x = str2num(str)eval(expression)字符串宏指令 ascii = char(reshape(32:127,32,3),例2-13 建立一个字符串向量 ABc123d4e56Fg9,然后对该向量做如下处理: (1) 取第15个字符组成的子字符串。 (2) 将字符

46、串倒过来重新排列。 (3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。 (4) 统计字符串中小写字母的个数。命令如下: ch=ABc123d4e56Fg9; subch=ch(1:5) %取子字符串 revch=ch(end:-1:1) %将字符串倒排 k=find(ch=a %将小写字母变成相应的大写字母 char(ch) length(k) %统计小写字母的个数,2.7 结构数据 1结构矩阵的建立与引用 结构矩阵的元素可以是不同的数据类型,它能将一组具有不同属性的数据纳入到一个统一的变量名下进行管理。建立一个结构矩阵可采用给结构成员赋值的办法。具体格式为: 结构矩阵名.成员名=

47、表达式 其中表达式应理解为矩阵表达式。 S.name = Ed Plum; % S is a structure scalar S.score = 83; S.grade = B+S(2).name = Toni Miller; %S is a structure array S(2).score = 91; S(2).grade = A-;,2.9 结构数据(Structures),2结构成员的修改 可以根据需要增加或删除结构的成员。例如要给结构矩阵a增加一个成员x4,可给a中任意一个元素增加成员x4: a(1).x4=410075; 但其他成员均为空矩阵,可以使用赋值语句给它赋确定的值。 要删除结构的成员,则可以使用rmfield函数来完成。例如,删除成员x4: a=rmfield(a,x4); 3关于结构的函数 除了一般的结构数据的操作外,MATLAB还提供了部分函数来进行结构矩阵的操作。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初级教育 > 小学教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报