Matlab数据处理与分析_02数组矩阵运算课件.ppt
MATLAB数据处理与分析,胡小健仲恺农业工程学院 计算科学系,MATLAB数据处理与分析胡小健,第二章 数组与矩阵的概念,2.1 数组与矩阵的概念2.2数组与矩阵的创建与访问2.3 向量的点积、叉积和混合积2.4 矩阵与数组运算,第二章 数组与矩阵的概念2.1 数组与矩阵的概念,2.1 数据类型例2-1整数类型演示: x=325.499;x=x+0.1;int16(x)ans = 326例2-2数据类型精度演示,single创建单精度数据: x=single(76.19) 创建单精度数据x = 76.1900,2.1 数据类型,例2-3数据类型精度演示,single创建单精度数据: x=single(76.19) 创建单精度数据x = 76.1900 y=19.231 创建默认精度数据y = 19.2310 whos x 判断类型 Name Size Bytes Class Attributes x 1x1 4 single whos y 判断类型 Name Size Bytes Class Attributes y 1x1 8 double,例2-3数据类型精度演示,single创建单精度数据:,例2-4复数据类型创建演示: x=rand(2)*5; y=rand(2)*(-3);z =complex(x,y) 生成复数矩阵z = 2.5425 - 1.9330i 4.0881 - 2.4347i 2.5539 - 1.1358i 3.9742 - 1.5985i,例2-4复数据类型创建演示:, x = log(0) 生成负无穷大x = -Inf %负无穷大 x = 1/0 生成无穷大x = Inf %正无穷大 x=7i/0 生成非数x = NaN + Infi %实部非数虚部正无穷 whos x 判断类型 Name Size Bytes Class Attributes x 1x1 16 double complex a=0/0, b=0*log(0), c=inf-inf 产生非数a = NaNb = NaNc = NaN,0*a,sin(a)ans = NaNans = NaN class(a),isnan(a)ans = doubleans = 1,例2-5无穷大与非数NaN演示:, x = log(0) 生成负无穷大0*a,sin,例2-6字符型演示: name = 胡锦涛 字符串name = 胡锦涛 whos name 判断类型 Name Size Bytes Class Attributes name 1x3 6 char,例2-6字符型演示:,例2-7逻辑型演示: x = magic(3)x = 8 1 6 3 5 7 4 9 2 x3 求一个逻辑矩阵,元素大于3,则将其位置置1,否则置0ans = 1 0 1 0 1 1 1 1 0,例2-7逻辑型演示:,2.2数组与矩阵的创建与访问,以下是一些预定义的符号:,其余的请参看联机帮助系统。,2.2数组与矩阵的创建与访问以下是一些预定义的符号:符号意义,例2-8创建数组演示: x=21 36 45;45 87 89 生成23二维数组(矩阵)x = 21 36 45 45 87 89 t=0:0.05:3*pi 以0.05为步长等分0至3*pit =. . . . . . z = linspace(0,100,10) 0至100等分10个点z = . . . . . .,例2-8创建数组演示:,例2-9访问一维数组元素演示: x=21 36 45 45 87 89 生成一个数组x = 21 36 45 45 87 89 x(3) 访问第3个元素ans = 45 x(3)=88888 将第3个元素置为88888x = 21 36 88888 45 87 89 x(1,3,5) 访问第1、3、5个元素ans = 21 88888 87,例2-9访问一维数组元素演示:, x(1,3,5)=88888,88888,88888 将第1,3,5,元素置为88888x = 88888 36 88888 45 88888 89 x(2:end) 访问第2个至最后一个之间的元素ans = 36 88888 45 88888 89 x(2:4) 访问第2至4个元素ans = 36 88888 45 x(find(x50) 在数组中查找值大于50的元素ans =88888 88888 88888 89, x(1,3,5)=88888,88888,888,例2-10访问二维数组元素演示: A=magic(4)A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 A(3,2) 访问第3行第2列位置上的元素ans = 7 A(1:3,3) 访问第3列的1至3个元素ans = 3 10 6 A(2,1:4) 访问第二行的1至4个元素ans = 5 11 10 8,例2-10访问二维数组元素演示:, A(2,2)=518 第2行,2列上的元素置为518A = 16 2 3 13 5 518 10 8 9 7 6 12 4 14 15 1 A(2,1:4)=1 第2行的1至4个元素置1A = 16 2 3 13 1 1 1 1 9 7 6 12 4 14 15 1 A=A*2 矩阵与标量标量相乘A = 32 4 6 26 2 2 2 2 18 14 12 24 8 28 30 2, A(2,2)=518 第2行,2列上的元,2.3 向量的点积、叉积和混合积,例2-11点积与叉积演示: x1 = 1 9 8 0 x1 = 1 9 8 0 x2=2 6 9 7x2 = 2 6 9 7 y = dot(x1,x2) 点积运算y = 128,2.3 向量的点积、叉积和混合积例2-11点积与叉积演示:,例2-12点积与叉积演示: x1=9 5 2x1 = 9 5 2 x2 = 3 2 7x2 = 3 2 7 xd = dot(x1,x2) 计算点积xd = 51 xcr = cross(x1,x2) 计算叉积xcr = 31 -57 3 xcr2 = cross(x2,x1) 计算叉积xcr2 = -31 57 -3,例2-12点积与叉积演示:,例2-13混合积演示: x1=9 5 2x1 = 9 5 2 x2 = 3 2 7x2 = 3 2 7 x3=2 4 7x3 = 2 4 7 ydc = dot(x3,cross(x1,x2) 混合积运算,用于计算平行六面体的体积ydc = -145,例2-13混合积演示:,2.4 矩阵与数组运算, A = magic(3)A = 8 1 6 3 5 7 4 9 2 B = fliplr(A)B = 6 1 8 7 5 3 2 9 4 A+Bans = 14 2 14 10 10 10 6 18 6, A -Bans = 2 0 -2 -4 0 4 2 0 -2 2.*Aans = 16 2 12 6 10 14 8 18 4 2*Aans = 16 2 12 6 10 14 8 18 4, A.*B 数组方式ans = 48 1 48 21 25 21 8 81 8 A*B 矩阵方式ans = 67 67 91 67 91 67 91 67 67 B*A 矩阵方式ans = 83 83 59 83 59 83 59 83 83,2.4 矩阵与数组运算 A = magic(3), B*A 矩阵方式ans = 83 83 59 83 59 83 59 83 83 B.*A 数组方式ans = 48 1 48 21 25 21 8 81 8, AB 矩阵方式ans = 0 0 1 0 1 0 1 0 0 BA 矩阵方式ans = 0 0 1.0000 0 1.0000 0 1.0000 -0.0000 0, length(A) 行列数中最大者ans = 3 size(A) 行列数ans = 3 3 numel(A) 元素个数ans = 9, B*A 矩阵方式 AB 矩阵, eye(3) 单位矩阵ans = 1 0 0 0 1 0 0 0 1 ones(3) ans = 1 1 1 1 1 1 1 1 1, a=1 2 6; diag(a) 根据a生成一个对角矩阵ans = 1 0 0 0 2 0 0 0 6,例2-14特殊矩阵演示:, eye(3) 单位矩阵 a=1 2 6; 例, AA = 8 1 6 3 5 7 4 9 2 inv(A) 求逆矩阵ans = 0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028 inv(A)*A %验证ans = 1.0000 0 -0.0000 0 1.0000 0 0 0.0000 1.0000, A = magic(3) %生成魔方矩阵A = 8 1 6 3 5 7 4 9 2 det(A) %求A的行列式ans = -360,例2-15逆矩阵与行列式演示:, A A = magic(3) %生成魔方矩阵例, AA = 8 1 6 3 5 7 4 9 2 rank(A) 计算矩阵的秩ans = 3 E = eig(A) 计算特征值E = 15.0000 4.8990 -4.8990, V,D = eig(A) D = 特征值组成的对角矩阵 15.0000 0 0 0 4.8990 0 0 0 -4.8990V = 特征向量矩阵 -0.5774 -0.8131 -0.3416 -0.5774 0.4714 -0.4714 -0.5774 0.3416 0.8131,例2-15矩阵的特征参数:, A V,D = eig(A) 例2-, A = 5 6 9;3 5 1;8 6 1A = 5 6 9 3 5 1 8 6 1 binf = norm(A,inf) 无穷范数binf = 20 b2 = norm(A,2) 计算2范数b2 = 15.4215,注: 有关正交化运算(orth函数)、三角分解(lu)、正交分解(qr)、特征值分解(eig)、奇异值分解(svd)的内容,请参看Matlab自还的帮助系统和相关数学书籍,例2-15矩阵的范数(有关范数概念参看关数学书):, A = 5 6 9;3 5 1;8 6 1注:例2, A = 2 3 4;1 1 9;1 2 -6A = 2 3 4 1 1 9 1 2 -6 con2 = cond(A) 计算2-范式条件数con2 = 575.8240 con1 = condest(A) 计算1-范式条件数con1 = 817,例2-15矩阵的条件数:,注条件数是反映AX = b中,如果A或b发生细微变化,解变化的剧烈程度。 如果条件数很大说明是病态方程方程,不稳定方程。, A = 2 3 4;1 1 9;1 2 -6例2,求解方程组, A = 2 3 4;1 1 9;1 2 -6; b =1;-7;9 常数列 x = inv(A)*b x = 1 1 -1 Ab ans = 1 1 -1 A = A+0.001 A =,2.0010 3.0010 4.0010 1.0010 1.0010 9.0010 1.0010 2.0010 -5.9990 b = b-0.001 b = 0.9990 -7.0010 8.9990 x2 = inv(A)*b x2 = 0.9504 1.0297 -0.9980,求解方程组 A = 2 3 4;1 1 9;1 2 -,练习作业:利用Matlab求解下列线性方程组:,要求先分别列出系数矩阵和常数列向量,求出其行列式、秩、特征值及特征向量矩阵、2种条件数,系数矩阵的逆矩阵,然后求出其解,将系数矩阵再乘以解向量,看是否和常数向量相等。最后将系数矩阵加个0.0002的扰动,看其解是多少?,练习作业: 要求先分别列出系数矩阵和常数列向,