Matlab入门(二):Matlab中最基本的向量与矩阵运算
因课题需要,根据书籍初步自学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)注意事项:关于向量和矩阵的运算操作,上述只是列举了一些最基本的,还有许多操作没有列出,可以查阅其他资料或者官方帮助文档,在后续文章中,也会把学习过程中碰到的向量矩阵相关操作记录下来。
Matlab入门(二):Matlab中最基本的向量与矩阵运算相关推荐
- matlab在大气科学,MATLAB入门在大气科学中的应用学术沙龙活动圆满成功
2010年4月12日上午,在我所研究生部的大力支持下,大气科学常用数据分析软件系列学术沙龙讲座在研究生公寓一层会议室拉开帷幕.本活动宗旨是激发学生们的学习热情和学习动力,促进学生间的相互了解,加强课题 ...
- matlab入门总结,MATLAB基础公式小结(一)
矩阵工厂 写在前面的话 28 July 2018 为什么不写三国系列了?--因为懒=_= 以后还写不写三国介绍了?--等我想起来再说. 为什么要写这玩意儿?--突然想起来公众号好久没写东西了,最近新学 ...
- matlab figure函数_DSGE建模与编程入门(54):Matlab入门
许文立,安徽大学经济学院/CIMERS,cimers_dsge@econmod.cn 宏观经济研学会(CIMERS)的共享网盘的文件已经转移至"量化经济分析平台"及其论坛(交流中心 ...
- 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)
Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...
- matlab 极限积分,实验二MATLAB中的极限和微分积分运算
<实验二MATLAB中的极限和微分积分运算>由会员分享,可在线阅读,更多相关<实验二MATLAB中的极限和微分积分运算(28页珍藏版)>请在人人文库网上搜索. 1.实验二 MA ...
- matlab在二维平面和三维空间中绘制圆形
matlab在二维平面和三维空间中绘制圆形 二维平面绘制圆形 方法1: x = 10;y = 10;%圆心 r = 5; %半径 rectangle('Position',[x-r,y-r,2*r,2 ...
- matlab如何读取二维数组,Matlab从csv文件中读取多个二维数组
我有一个csv文件,它包含2列4列数组,但行数不等.例如:Matlab从csv文件中读取多个二维数组 2, 354, 23, 101 3, 1023, 43, 454 1, 5463, 45, 765 ...
- matlab 极限积分,实验二matlab中的极限和微分积分运算.ppt
实验二matlab中的极限和微分积分运算实验二matlab中的极限和微分积分运算 实验二 MATLAB中的极限.微分和积分运算 一.实验目的 熟悉MATLAB软件中关于极限.微分运算和不定积分.定积分 ...
- matlab中的delaunay,基于MATLAB 实现二维delaunay 三角剖分
基于MATLAB 实现二维delaunay 三角剖分 刘锋涛凡友华 (哈尔滨工业大学深圳研究生院深圳518055) [摘要]在已知凸多边形的顶点坐标的前提情况下,利用MATLAB 中的meshgrid ...
最新文章
- sqlserver中能用when_sqlserver中if语句顶替when.case.语句
- 频段表_VoLTE高低频段覆盖能力研究
- jzoj3846-七天使的通讯【二分图判定】
- jsoup 获取html中body内容_Java 进阶 利用Jsoup获取HTML页面的各分页中的标题信息...
- 赋值运算符(AssignmentOperator)
- 解散群通知怎么写_德云社演员私联初二女生,随后德云社全员退出粉丝群,什么情况?...
- 高效办公之Windows高效技巧提高你的工作效率
- navision系统和sap区别_MES与EPR进行系统集成的实际案例-系统接口、交互数据分析...
- VCC、VDD、VSS等是什么意思
- 统计天数oracle,Oracle计算连续天数,计算连续时间,Oracle连续天数统计
- 何夕 - 六道众生·何夕科幻自选集(2014年1月31日)
- C语⾔的标识符以及规范
- vue插槽的理解 slot slot-scop,三种插槽方式,默认插槽,具名插槽,作用域插槽
- 信创办公--基于WPS的Word最佳实践系列(快速自定义访问工具栏)——以添加“输出为PPTX”命令为例
- Hexo个人博客NexT主题添加Local Search本地搜索
- make错误 redis6_redis安装make失败,make[1]: *** [adlist.o] Error 127....
- 3D和IMAX 3D带你体验加勒比的惊涛怪浪
- Python神经网络识别手写数字-MNIST数据集
- 专利文档一般有哪些内容
- 高端全自动化卷纸机成功使用了默孚龙导电滑环