Matlab入门(二):Matlab中最基本的向量与矩阵运算 您所在的位置:网站首页 matlab怎么输入三角函数相乘 Matlab入门(二):Matlab中最基本的向量与矩阵运算

Matlab入门(二):Matlab中最基本的向量与矩阵运算

2023-10-06 19:45| 来源: 网络整理| 查看: 265

因课题需要,根据书籍初步自学matlab,结合刷教程书的一点心得,做一个简单记录,方便自己能形成一个输入输出循坏,加深理解和记忆。

参考书籍:Matlab揭秘,David McMahon著,郑碧波译.

二、Matlab中最基本的向量与矩阵运算知识 1、对向量的操作 1)向量的基本运算: 定义一个向量 创建一个列向量,元素与元素之间用分号(;)隔开,如 a = [2; 1; 4]; 创建一个行向量,元素与元素之间用空格(space)或者逗号(,)隔开,如 b = [3, 1, 5]; 向量的转置、共轭转置 向量转置可以使用(')来完成,如 b = a'; 当向量元素中涉及到复数时,转置运算会自动完成共轭转置。 如果只想转置而不进行共轭处理,可以使用(.'),如 b = a.'; 向量的加减运算、数乘法运算 Matlab中向量的加减运算只用参与运算的向量同型即可,数乘法的运算规则和线性代数中一致。 向量的幂方运算 在Matlab中向量的乘方必须在幂运算符( ^)前面加上句号(.), 只有这样才是对向量每一个元素进行幂运算,否则将报错。如 y = x .^2; 向量的点积与叉积(数量积与向量积) 向量的点积要通过点乘运算(.*)来完成,否则无法满足点积的定义。 同时,点积运算也可以使用dot(a, b)命令来完成。 向量的叉积则要求两个向量必须是三维的,然后使用cross命令来实现,如 c = cross(a, b); 向量的模(两种求解方法) 一是根据点积定义长度来求解,即一个向量的模的平方就等于它与自身做点积,如 a = sqrt(a .* a)。 同时要注意的是,对于复数向量的模,我们必须先求解向量的共轭向量。 如果是直接用转置符号求共轭转置,将会出错,这里应该严格使用conj命令求解共轭向量,然后再用它们做点积。 二是使用dot(a, b)来求点积,然后开根号,这样即使是复数向量,也不会出错。(推荐使用,简单明了) 2)向量的复杂运算: 由小向量合并得到大向量: Matlab中提供了一种操作,可以允许我们把向量合并在一起创建新向量。 两个列向量合并为一个列向量,两个行向量合并为一个行向量。 如 a = [1; 4; 5]; b = [2; 3; 4]; c = [a; b]; 或m = [1, 2, 3]; n = [2, -1, 3]; k = [m, n]; 创建等差元素向量 根据问题需要,我们可以创建元素间距相等的向量,语法为:x = [x0 : q : xn]; 如 x = [0 : 2 : 10] = 0 2 4 6 8 10 特征化向量(一些便捷操作) 测量向量的长度(length) 求解向量元素中的最值(max、min) 向量所有元素求和(sum) 返回向量中每个元素的绝对值(abs) 引用向量元素 对于向量元素的引用,有常见的三种类型: 一是引用其中某一个元素,如 a(i) = 向量 a 的第 i 个元素; 二是引用整个向量元素,如 a(:); 三是引用其中某一段范围内元素,如 a(4:6) = 向量 a 的第 4 到第 6 个元素。 3)注意事项: 行向量与列向量的区别:行列向量的主要区别在于定义时,一个用分号,而另一个用空格或者逗号,我个人习惯行向量中元素用逗号隔开,便于和列向量一起记忆。size函数的使用方法和理解: %总结: %size命令是用来检查每个数组元素的个数的,我们在这里可以把检查结果存储到 %两个变量sizex和sizeN中。 %举个例子: %x = [1, 2, 3, 4]; %sizex = size(x) %sizex = % 1 4 %y = [1, 2, 3, 4; 5, 6, 7, 8]; %sizey = size(y) %sizey = % 2 4 ^ or .^,* or .* 等类似运算的区别: 对于向量运算来说,因为我们处理的通常是一行或者一列数据, 那么如果仅仅是 ^ 或 *,它的意义更像是处理单个数据,而不适合于向量或矩阵运算, 因此Matlab规定了对向量或矩阵运算时必须要使用加点运算。 即向量中用 .^ 和 .* 2、对矩阵的操作 1)矩阵的简单运算: 矩阵的建立: 矩阵的建立同向量类似,只不过是行数和列数增多。 如 A = [1, 2, 3; 4, 5, 6]就能建立一个2行3列的矩阵。 矩阵的转置、共轭转置: 严格来说,向量也是矩阵的一种,所以我们原本应当先定义矩阵的转置/共轭转置,再来定义向量的相应操作。 这里直接给出矩阵的转置如何实现:' 表示转置;.' 表示在复数出现的情况下,只进行转置,而不进行共轭操作。 矩阵的加减运算:和向量类似,当两个矩阵同型时,便可以进行加减运算。矩阵相乘与数组相乘: 当两个矩阵的行列数满足一定关系时,便可以进行矩阵相乘,如 C = A*B; 而两个矩阵按数组相乘运算时,得到的结果往往与矩阵相乘的结果不一样。 数组相乘是让两个矩阵对应位置的元素直接做乘法,得到结果拼成新矩阵,如 D = A.*B。 此外,数组相乘时两个矩阵必须完全同型,这一点不同于矩阵相乘中A的列数与B的行数匹配即可。 2)矩阵的复杂运算: 矩阵的乘方运算: 此处所说的矩阵的乘方运算,是指的对矩阵上每一个元素乘方,而不是矩阵作为一个整体乘方, 整体乘方可以使用矩阵乘法(C = A*B)来实现。 矩阵元素乘方语法为(A.^n),如:A = [2, 4; -1, 6]; A .^ 2 = [4, 16; 1, 36] 引用矩阵的元素: 类似于引用向量的元素,我们对于矩阵元素的引用也可以分为三大类: 一是引用某一个具体元素,如 A(3, 4); 二是引用某一行/列,如 A(:, i) = 第 i 列所有元素; 三是引用某一块元素,如 A(m:n, i:j) = A中第 m 到 n 行,第 i 到 j 列的所有元素组成的小元素块。 同时,通过结合赋值运算符 '=' 我们还可以改变矩阵中任意元素的值。 我们还可以通过方括号留空的形式删除矩阵的行和列,如 A(2, ;) =[]; 这便删除了A的第2行。 矩阵的一些其他运算: 在Matlab允许对矩阵做一些较为特殊的操作如: 一对矩阵中每个元素加上同一个数,如 A = [1, 2, 3, 4]; B = 2 + A = [3, 4, 5, 6]; 二是对矩阵进行左除(.\)和右除(./),这时要求矩阵完全同型,对应元素之间匹配相除。 如 A = [2, 4, 6, 8]; B = [2, 2, 3, 1]; C = A .\ B = [1, 0.5, 0.5, 0.125]; D = A ./ B = [1, 2, 2, 8]; 注意:矩阵的左除和右除运算便实现了线性代数中方程组求解的代码转换 常见的一些特殊矩阵: eyes(n):nxn的单位矩阵 zeros(m, n):mxn的零矩阵 ones(m, n):mxn的全1矩阵 magic(n):n阶幻方矩阵 sparse(m, n):mxn的稀疏矩阵(后面会提到) 3)注意事项: size函数在矩阵运算中的作用:与向量中操作类似,下给出向量段中的注释代码: %总结: %size命令是用来检查每个数组元素的个数的,我们在这里可以把检查结果存储到 %两个变量sizex和sizeN中。 %举个例子: %x = [1, 2, 3, 4]; %sizex = size(x) %sizex = % 1 4 %y = [1, 2, 3, 4; 5, 6, 7, 8]; %sizey = size(y) %sizey = % 2 4 3、线性代数问题在Matlab中如何实现 1)用Matlab求矩阵的行列式、秩、逆矩阵与伪逆矩阵 求矩阵的行列式: det(A) = A 的行列式 求矩阵的秩: rank(A) = r = A的秩 求矩阵的逆矩阵或伪逆矩阵(亦称广义逆矩阵): inv(A) = A的逆矩阵 pinv(A) = A的广义逆矩阵(在求解有无数解向量的线性方程组时可能会用到) 2)用Matlab解线性方程组 解法1:左除除法: A*x = b; x = A \ b; 解法2:矩阵乘法: A*x = b; x = inv(A) * b; 3)用Matlab简化矩阵 简化成梯形矩阵: rref(A) = 按Gauss-Jordan消元法产生矩阵A降行后的梯形形式。 对矩阵进行LU、QR或SVD分解: 这里仅给出LU分解的语句指令如下:[L, U] = lu(A); 需要注意的是,这里是一种广义的LU分解,其得到的结果矩阵中,对角线元素不一定为1,也不一定为三角矩阵。 4)注意事项:关于向量和矩阵的运算操作,上述只是列举了一些最基本的,还有许多操作没有列出,可以查阅其他资料或者官方帮助文档,在后续文章中,也会把学习过程中碰到的向量矩阵相关操作记录下来。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有