1.15k likes | 1.49k Views
Matlab 数值数组. 一、创建数值数组 二、数组操作函数 三、数组运算 四、矩阵运算 五、数组的访问和赋值 六、与数组相关的函数 七、一维数组在向量运算中的应用 八、一维数组在一元多项式运算中的应用. 一、创建数值数组. 二维数组( array )是由实数或复数排列成矩形而构成的,从数据结构上看,二维数组和矩阵没有什么区别。当二维数组带有线性变换含义时,该二维数组就是矩阵( matrix )。. 数值数组 ( 简称为数组 ) 是 Matlab 中最重要的一种内建数据类型。. 一维数组是矩阵的特殊形式. 行数组: n 个元素排成一行
E N D
Matlab数值数组 一、创建数值数组 二、数组操作函数 三、数组运算 四、矩阵运算 五、数组的访问和赋值 六、与数组相关的函数 七、一维数组在向量运算中的应用 八、一维数组在一元多项式运算中的应用
一、创建数值数组 二维数组(array)是由实数或复数排列成矩形而构成的,从数据结构上看,二维数组和矩阵没有什么区别。当二维数组带有线性变换含义时,该二维数组就是矩阵(matrix)。 数值数组(简称为数组)是Matlab中最重要的一种内建数据类型。
一维数组是矩阵的特殊形式 行数组:n个元素排成一行 又称为行向量(row vector) 在Matlab中作为 1 X n 矩阵 列数组:m个元素排成一列 又称为列向量(column vector) 在Matlab中作为 n X1 矩阵 一个数: 又称为标量 在Matlab中作为 1 X1 矩阵 一般情况下,向量指列向量 Matlab中,标量和向量一般用小写字符字母表示
1、用方括号[ ]创建一维数组 • 整个数组放在方括号里 • 行数组元素用空格或逗号分隔 x = [2, pi/2, sqrt(3), 3+5i] • 列数组元素用分号分隔 y = [2;pi;3/4;j] • 标点符号一定要在英文状态下输入 • x = [] 生成空数组
(1)在键盘上输入下列内容 A = [1,2,3; 4,5,6; 7,8,9] (2)按【Enter】键,指令被执行。 (3)在指令执行后,MATLAB指令窗中将显示以下结果: A = 1 2 3 4 5 6 7 8 9 2、用方括号[ ]创建二维数组 说明:直接输入矩阵时,每行元素用空格或逗号分隔,矩阵行用分号分隔,整个矩阵放在方括号里,标点符号一定要在英文状态下输入。二维数组一般用大写字母表示。
3、用方括号[ ]由一维数组创建二维数组 a = [1,3,5] b = [2,4,6] c = [3,5,7] D = [a;b] E = [b;c] F = [D,E]
4、用冒号:创建一维数组 x = a:b 默认 inc = 1 • x = a:inc:b a,b必须为实数 x = [a,a+inc,a+2*inc,…] a是数组x中的第一个元素,b不一定是数组x的最后一个元素。
5、用linspace()函数创建一维数组 x = linspace(a,b) 默认 n = 100 x = linspace(a,b,n) 在[a,b]区间内生成 n 个数据,包括a和b在内 若a,b为实数,等效于: x = linspace(0,pi,10) x = linspace(1+i,100+100*i)
6、用logspace()函数创建一维数组 x = logspace(a,b) 默认n = 50 x = logspace(a,b,n) x = logspace(a,pi)
练习:在matlab中生成二维数组 A = 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 B = 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4 -4 0 0 0 0 -3 0 0 0 0 -2 0 0 0 0 -1
练习:试写出下列matlab语句的输出结果,并在matlab中进行验证。练习:试写出下列matlab语句的输出结果,并在matlab中进行验证。 a = 1:12 B = reshape(a,3,4) C = rot90(B) d = diag(C) E = diag(d) F = [tril(B);triu(B)] G = cat(2,tril(C),triu(C)) H = repmat(a,4,1) I = flipud(G) J = kron(d,E)
三、数组运算 数组运算是Matlab软件定义的运算规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。 无论在数组上施加什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素(Element)进行运算。
1、转置运算 A.’ A’ 对A做转置(行→列,列→行) 对A做共轭转置 若A的元素均为实数,则A.’与A’的结果相同 B = A.’ 对数组A做转置运算,将运算结果赋值给变量B,内存中数组A的内容并没有任何变化。
2、两个维数相同的数组之间的数组运算 • A + B:加,对应位置的数组元素相加 • A - B:减,对应位置的数组元素相减 • A.*B:点乘,对应位置的数组元素相乘 • A./B:右点除,对应位置的数组元素相除 • A.\B:左点除 • A.^B:点幂,对应位置的数组元素做幂运算 运算结果为与A、B同维的数组
3、数组的与标量 的运算 A + c :A的每个元素加c A - c: A的每个元素减c A.*c 或 A*c:A的每个元素乘c, A./c 或 A/c: A的每个元素除以c A.\c 或 A\c:c除以A的每个元素 A.^c:点幂, A的每个元素做幂运算 c.^A:点幂,c做幂运算 运算结果为与A同维的数组
练习:试写出下列matlab语句的输出结果,并在matlab中进行验证。练习:试写出下列matlab语句的输出结果,并在matlab中进行验证。 A = ones(3) B = eye(3) C = zeros(3) D = (A+B).*(A-B) E = (D + 1) + (D - 1)*i F = E.’./E’ + E.’.\E’ G = B.^D + D.^B
4、函数作用在数组上的运算规则 Matlab中的很多函数都可以直接以数组作为输入参数,函数输出也为数组。
输入为行数组,则输出也为行数组 输入为列数组,则输出也为列数组 输入为二维数组,则输出也为二维数组
例题:绘制 y = sin(x) 的图像 x = 0:0.1:2*pi y = sin(x) plot(x,y) 函数作用在一维数组上
1、方阵的行列式 手工计算行列式是非常繁琐的,特别是高阶行列式。Matlab中,行列式由函数 det( ) 实现。
2、矩阵相等 定义 设有两个m×n矩阵 则称矩阵A和B相等. 记作A=B Matlab中,矩阵相等可用函数 isequal(A,B) 来判断。若两矩阵相等,则isequal返回逻辑1(true),否则返回逻辑0(false)
3、矩阵转置、共轭转置运算 • A’矩阵共轭转置 • A.’矩阵转置 对称矩阵:一个矩阵与其转置矩阵相等, 反对称矩阵:一个矩阵与其转置矩阵的和为零矩阵 转置的运算级别比加、减、乘、除等运算高 A = [1,2;2,1] if ( isequal(A,A.’) == 1) disp(‘A是对称矩阵’) else disp(‘A不是对称矩阵’) end A = [0,1;-1,0] if ( isequal(A,-A.’) == 1) disp(‘A是反对称矩阵’) else disp(‘A不是反对称矩阵’) end
4、矩阵加法 定义 设有两个m×n矩阵 称为矩阵A与B的和. 记作 Matlab中,矩阵的加法就是 A + B
5、矩阵减法 Matlab中,矩阵减法就是 A - B
定义 数k与矩阵A的乘积记作kA或 A k,规定为 运算规律: 6、数与矩阵的乘法 (i) k(A+B)=kA+kB (ii) (k+h)A=kA+hA (iii) k(h A)=(k h)A (iv) 1A=A 其中A、B为m╳n 矩阵;k、h为数。 Matlab中,数与矩阵的乘法可写为:c*A 、A*c、c.*A,A.*c,这里 * 和 .* 的结果是一样的。
7、矩阵的乘法 矩阵A与B的乘积是一个m×n矩阵 其中 记作C =AB Matlab中,矩阵与矩阵的乘法就是 A*B
8、方阵的迹 由n2个数排成的n×n矩阵: 称为n阶方阵。记作A=(aij ), i,j=1,2,…,n或 由方阵左上角元素到右下角元素表示的位置称为方阵的主对角线,主对角线元素的和称为方阵的迹,记作: Matlab中,方阵的迹用函数 trace(A) 实现,或用sum(diag(A))来实现
9、方阵的幂 定义:设A是一个n阶方阵,k为正整数, 称为A的k次幂. A k 就是k个A连乘.显然只有方阵的幂才有意义。 规定:A0=E (i) A k Al=A k+1 (ii)(A k)l=A k l 其中k、l为正整数. 例如 Matlab中,方阵的幂就是 A^k
10、矩阵多项式 Matlab中,方阵的多项式用函数polyvalm(p,A)实现。
在matlab中,一个一元多项式用一个行向量来表示的,向量元素为多项式系数的降幂排列,其中最后一个元素代表多项式中的0幂项。 在matlab中,一个一元多项式用一个行向量来表示的,向量元素为多项式系数的降幂排列,其中最后一个元素代表多项式中的0幂项。 p = [1,-5, 3] A = [2,-1;0,3] F = polyvalm(p,A)
定义:对于n阶方阵A,如果有一个n阶方阵B,使得 AB=BA=E,则方阵A称为可逆矩阵,简称A可逆。方阵B称为A的逆矩阵。记为A-1. 11、方阵的逆 注 (1) 这时矩阵B亦可逆,B的逆阵为A.即B-1=A. (2)如果方阵A可逆,则A的逆矩阵是惟一的. (3)可逆矩阵也称为非退化阵,也常被称为非奇异阵; 不可逆矩阵称为退化阵,也常被称为奇异阵. Matlab中,求方阵的逆用函数inv(A)实现,也可以用A-1实现,即:A^(-1)
答案 练习
求矩阵 X使满足 AXB = C 若A-1,B-1存在,则由A-1左乘上式,B-1右乘上式,有: A-1AXBB-1=A-1CB-1, (A-1A)X(BB-1 )=A-1CB-1, 即 X = A-1CB-1.
练习 答案
五、数组的访问和赋值 b = x(end) end是数组x的最后一个元素的下标 引用数组 x 中的最后一个元素,将其赋值给变量 b 1、引用一维数组中的单个元素 x = 1:5 k = 2 a = x(k) 引用数组 x 中的第 k 个元素,将其赋值给变量 a Matlab中数组元素的下标从 1 开始 c = x(8)会出现什么结果?
2、一维数组中单个元素的赋值 x = 1:5 a = 1.5 k = 3 x(k) = 0 将 0 赋值给数组 x 中的第 k 个元素 x(end) = a 将 a 赋值给数组 x 中的最后一个元素 x(8) = 6.5 会出现什么结果?