matlab 矩阵逻辑与,MATLAB矩阵的寻访与赋值
2.矩阵的寻访与赋值
在创建了矩阵之后,我们经常需要访问矩阵中的某一个或者一些元素,另外可能需要对其中的某些元素重新赋值或者删除某一部分元素。本节介绍如何进行矩阵的寻访与赋值。
2.1 矩阵的标识
本小节介绍单个元素标识和寻访的3种方式:全下标、单下标、逻辑1标识。
1.全下标标识
经典数学教科书在引述具体矩阵元素时,通常采用全下标标识法,即指出某一元素是在第几行第几列。这种标识方法的优点是:几何概念清楚,引述简单。全下标标识法在MATLAB的寻访和赋值中因为最为直观,所以它最为常用。
对于二维矩阵来说,全下标标识由两个下标组成:行下标、列下标。如A(3,5)表示二维矩阵A的第3行第5列。
这里值得注意的是,MATLAB中对下标的标识是从1开始的,就是和我们平时在数学中使用的说法是一致的。这和其他一些编程语言从0开始标识是不同的。
2.单下标标识
MATLAB尽管是以矩阵作为基本的计算单元,但是矩阵的后台存储并不是像显示出来的那样成长方形排列的,而是按照单下标标识作为一列存储到内存中。单下标标识就是“只用一个下标来指明元素在矩阵中的位置”。当然,这样做首先要对二维矩阵的所有元素进行“一维编号”。所谓“一维编号”就是:先设想把二维矩阵的所有列,按照先左后右的次序首尾相连排成一维长列,然后自上而下对元素位置进行编号。
单下标与全下标的转换关系:以m´n的二维矩阵A为例,若全下标的元素位置是“第a行,第b列”,那么相应的单下标则为c=(b-1)*m+a。
在MATLAB中,有两个函数可以实现全下标和单下标的转换。
sub2ind: 根据全下标换算出单下标。
ind2sub: 根据单下标换算出全下标。
单下标的优势是在特定情境下使用更为简洁,例如编制某些循环的时候只需要一个循环变量就可以了,另外比如需要将某数组赋值给另一维数不同的数组的时候。
3.逻辑1标识
在实际使用中,有时会遇到寻找矩阵中大于或者小于某值的元素的问题,这时就可以使用逻辑1标识法。逻辑1标识用一个基于原矩阵A相对位置的逻辑数组B来对矩阵A进行寻访。数据B中每一个true值也就是1表示相对位置的A中元素可以被寻访。如果需要通过逻辑1标识来对矩阵进行寻访,只需将符合条件的元素位置的标识设置为逻辑1即可。
采用逻辑1标识的程序在速度方面具有一定的优势。
2.2 矩阵的寻访
【例2-7】 二维矩阵的寻址。
>> a=[1 2 3; 4 5 6] % 创建测试矩阵
1 2 3
4 5 6
>> A=a(2,2) % 全下标寻访
>> b=a(4) % 单下标寻访
>> B=a>5 % 返回逻辑下标
0 0 0
0 0 1
>> c=a(B) % 逻辑下标寻访
>> d=a(1,:) % 通过使用冒号可以寻访全行元素
1 2 3
>> e=a(:,2) % 通过使用冒号可以寻访全列元素
>> f=a(:) % 单下标寻访
>> g=a(:,[1 3]) % 寻访地址可以是向量,以同时寻访多个元素
1 3
4 6
本例中的B=a>5和c=a(B),就是采用逻辑1标识法访问矩阵a中大于5的元素。
2.3 矩阵的赋值
在了解了矩阵的寻访方法以后,给矩阵中的特定元素赋值也就成了一个很简单的事情。下面举例来说明。
【例2-8】 二维矩阵的赋值。
>> a=magic(4)
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> a(3,4)=0 % 对单个元素进行赋值
16 2 3 13
5 11 10 8
9 7 6 0
4 14 15 1
>> a(:,1)=1 % 对第一列进行赋值
1 2 3 13
1 11 10 8
1 7 6 0
1 14 15 1
>> a(14)=16 % 采用全下标对第14个元素进行赋值
1 2 3 13
1 11 10 16
1 7 6 0
1 14 15 1
2.3.1 进行数组运算的常用函数
在MATLAB中有一些常用函数,这些函数在日常的编程计算过程中会经常遇到,一般是基本的数学概念在MATLAB中的函数表达方式。这些函数在MATLAB中可以同时作用于整个矩阵或者数组,应用起来非常方便,不需要再另写循环程序来对各元素分别进行计算。掌握这些函数是进一步学习的基础。MATLAB人性化的地方在于其自带函数基本是按照相对应的英文名称缩写而来,所以便于记忆。
2.3 函数数组运算规则的定义
对于(m´n)的数组
,函数的数组运算规则是指:
也就是说函数的数组运算是指将函数作用于矩阵中的每一个元素,并将最后的结果储存为与原矩阵行列数相同的矩阵。
2.3.2 进行数组运算的常用函数
本小节列出进行数组运算的常用函数。常用基本数学函数见表2-2,常用三角函数见表2-3,常用适用于向量的函数见表2-4。
表2-2 MATLAB常用的基本数学函数
函 数
说 明
函 数
说 明
纯量的绝对值或向量的长度
将实数x化为分数表示
复数z的相角
符号函数 当x<0时,sign(x)=-1; 当x=0时,sign(x)=0; 当x>0时,sign(x)=1
求x除以y的余数
复数z的实部
整数x和y的最大公因数
复数z的虚部
整数x和y的最小公倍数
复数z的共轭复数
自然指数
四舍五入至最近整数
无论正负,向0的方向取最近整数
以e为底的对数,即自然对数
舍去法取最近整数
以2为底的对数
进一法取最近整数
以10为底的对数
表2-3 MATLAB常用的三角函数
函 数
说 明
函 数
说 明
正弦函数
超越正弦函数
余弦函数
超越余弦函数
正切函数
超越正切函数
反正弦函数
反超越正弦函数
反余弦函数
反超越余弦函数
反正切函数
反超越正切函数
四象限的反正切函数
表2-4 适用于向量的常用函数
函 数
说 明
函 数
说 明
向量x的元素的最小值
向量x的欧氏长度,也就是范数
向量x的元素的最大值
向量x的元素总和
向量x的元素的平均值
向量x的元素总乘积
向量x的元素的中位数
向量x的累计元素总和
向量x的元素的标准差
向量x的累计元素总乘积
向量x的相邻元素的差
向量x和y的内积
对向量x的元素进行排序
cross(x, y)
向量x和y的外积
【例2-9】 数组运算示例。
1 2 4 9
16 25 36 49
>> b=sqrt(a) % 应用函数对矩阵中的每一个元素分别开方
matlab 矩阵逻辑与,MATLAB矩阵的寻访与赋值相关推荐
- 理工科毕业设计献礼,MATLAB从入门到精通之矩阵是如何实现寻访与赋值的
前言 以下是博主精心整理的两个matlab专栏,包含入门到精通及实战内容,需要的小伙伴可根据自己需求自行订阅. MATLAB-30天带你从入门到精通 https://blog.csdn.net/wen ...
- matlab 矩阵角标,MATLAB中的矩阵索引
MATLAB中的矩阵索引 作者:SteveEddins and Loren Shure 译:王茂春 利用矩阵的索引取出原矩阵的子集元素是一种有效的方式.MATLAB的多种索引类型不仅强大.灵活,而 ...
- MATLAB程序设计教程(2)——MATLAB矩阵及其运算
第2章 MATLAB矩阵及其运算 2.1 变量和数据操作 2.2 MATLAB矩阵 2.3 MATLAB运算 2.4 矩阵分析 2.5 矩阵的超越函数 2.6 字符串 2.7 结构数据 ...
- MATLAB基础操作,矩阵乘法、数组矩阵索引、最大最小运算符、零矩阵/随机矩阵/单位矩阵的生成、log函数、Inf和NaN的含义,语句过长用连接符换行、逻辑运算符以及区别
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.矩阵相乘 二.矩阵生成 1.直接输入 2.单位矩阵 3.全零矩阵 2.全一矩阵 2.随机矩阵 三.矩阵操作 四.矩 ...
- Matlab学习笔记——矩阵求幂和矩阵指数
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 矩阵求幂和矩阵指数 矩阵求幂和矩阵指数 利用MATLAB对矩阵求幂可以很容易地得到结果,例如: 矩阵求幂 元素对元 ...
- java matlab 矩阵_如何在MATLAB中将函数应用于矩阵的每一行/列?
你可能想要更模糊的Matlab函数bsxfun . 从Matlab文档中,bsxfun "applies the element-by-element binary operation sp ...
- 矩阵位移法matlab编程,矩阵位移法_MATLAB_GUI.doc
Matrix_Displacement_Method--by MATLAB GUI PAGE58 / NUMPAGES64 yanfeng39@zju.edu.cn <结构力学>课程设计之 ...
- matlab max与min获取矩阵最大最小值函数
1.matlab中Max的用法1(Min类似) Matlab中max函数在矩阵中求函数大小的实例如下: C = max(A) 1)返回一个数组各不同维中的最大元素. 2)如果A是一个向量,max(A) ...
- matlab mex 矩阵,如何从mex函数访问matlab结构字段中的矩阵?
如何从mex函数访问matlab结构字段中的矩阵? 我试图弄清楚如何从mex函数访问存储在matlab结构中的字段中的矩阵. 那真是漫长的缠绕...让我解释一下: 我有一个定义如下的matlab结构: ...
- matlab乘幂的指数是矩阵,信号与系统MATLAB基本语法.ppt
信号与系统MATLAB基本语法 第二章 基本语法 2.1 变量及其赋值 2.2 矩阵的初等运算 2.3 元素群运算 2.4 逻辑判断与流程控制 2.5 基本绘图方法 2.6 M文件及程序调试 2.1 ...
最新文章
- threejs加载obj模型_Vulkan编程指南(章节31-载入模型)
- 表单验证,添加动态class
- 极光推送android点击跳转页面,app关闭时点击推送消息实现页面跳转
- java 方法 示例_Java ArrayDeque pollFirst()方法与示例
- 行向量,列向量,行主序矩阵,列主序矩阵
- php递归删除文件,PHP 递归删除文件夹
- CursorLoader的进级实践
- php mysql缓存技术_系统的讲解 - PHP 缓存技术
- mmdetection水下海鲜目标检测
- 关于ajax的content-download时间过慢问题的解决方案与思考
- HTML知识积累及实践(三) - 列表标签
- 文末资源 | 官宣:GitHub私有仓库免费啦!--说微软收购GitHub是坏事的你站出来!...
- ICCV 2021 论文汇总!Vision Transformer
- [转]使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
- 20190912每日一句
- dropload 使用表
- python卸载pip_python 怎样卸载pip
- (转)SonicStage CP 4.3 中文迷你版和完整版下载
- 360无线wifi路由器连接到服务器,360无线路由器怎么有线桥接设置
- webview在android8.0,解决Android8.0系统应用打开webView报错