理工科毕业设计献礼,MATLAB从入门到精通之矩阵是如何实现寻访与赋值的
前言
以下是博主精心整理的两个matlab专栏,包含入门到精通及实战内容,需要的小伙伴可根据自己需求自行订阅。
MATLAB-30天带你从入门到精通
https://blog.csdn.net/wenyusuran/category_10614422.html
MATLAB深入理解高级教程(附源码)
https://blog.csdn.net/wenyusuran/category_2239265.html
在博主的资源中也有各种算法的应用实例源代码,需要的小伙伴自取哟。
在创建了矩阵之后,我们经常需要访问矩阵中的某一个或者一些元素,另外可能需要对其中的某些元素重新赋值或者删除某一部分元素。本文介绍如何进行矩阵的寻访与赋值。
1.矩阵的标识
本节介绍单个元素标识和寻访的3种方式:全下标、单下标、逻辑1标识。
1.1 全下标标识
经典数学教科书在引述具体矩阵元素时,通常采用全下标标识法,即指出某一元素是在第几行第几列。这种标识方法的优点是:几何概念清楚,引述简单。全下标标识法在MATLAB的寻访和赋值中因为最为直观,所以它最为常用。
对于二维矩阵来说,全下标标识由两个下标组成:行下标、列下标。如A(3,5)表示二维矩阵A的第3行第5列。
这里值得注意的是,MATLAB中对下标的标识是从1开始的,就是和我们平时在数学中使用的说法是一致的。这和其他一些编程语言从0开始标识是不同的。
1.2 单下标标识
MATLAB尽管是以矩阵作为基本的计算单元,但是矩阵的后台存储并不是像显示出来的那样成长方形排列的,而是按照单下标标识作为一列存储到内存中。单下标标识就是“只用一个下标来指明元素在矩阵中的位置”。当然,这样做首先要对二维矩阵的所有元素进行“一维编号”。所谓“一维编号”就是:先设想把二维矩阵的所有列,按照先左后右的次序首尾相连排成一维长列,然后自上而下对元素位置进行编号。
单下标与全下标的转换关系:以m´n的二维矩阵A为例,若全下标的元素位置是“第a行,第b列”,那么相应的单下标则为c=(b-1)*m+a。
在MATLAB中,有两个函数可以实现全下标和单下标的转换。
sub2ind: 根据全下标换算出单下标。
ind2sub: 根据单下标换算出全下标。
单下标的优势是在特定情境下使用更为简洁,例如编制某些循环的时候只需要一个循环变量就可以了,另外比如需要将某数组赋值给另一维数不同的数组的时候。
1.3 逻辑1标识
在实际使用中,有时会遇到寻找矩阵中大于或者小于某值的元素的问题,这时就可以使用逻辑1标识法。逻辑1标识用一个基于原矩阵A相对位置的逻辑数组B来对矩阵A进行寻访。数据B中每一个true值也就是1表示相对位置的A中元素可以被寻访。如果需要通过逻辑1标识来对矩阵进行寻访,只需将符合条件的元素位置的标识设置为逻辑1即可。
采用逻辑1标识的程序在速度方面具有一定的优势。
2. 矩阵的寻访
【例2-7】 二维矩阵的寻址。
>> a=[1 2 3; 4 5 6] % 创建测试矩阵
a =
1 2 3
4 5 6
>> A=a(2,2) % 全下标寻访
A =
5
>> b=a(4) % 单下标寻访
b =
5
>> B=a>5 % 返回逻辑下标
B =
0 0 0
0 0 1
>> c=a(B) % 逻辑下标寻访
c =
6
>> d=a(1,:) % 通过使用冒号可以寻访全行元素
d =
1 2 3
>> e=a(:,2) % 通过使用冒号可以寻访全列元素
e =
2
5
>> f=a(:) % 单下标寻访
f =
1
4
2
5
3
6
>> g=a(:,[1 3]) % 寻访地址可以是向量,以同时寻访多个元素
g =
1 3
4 6
本例中的B=a>5和c=a(B),就是采用逻辑1标识法访问矩阵a中大于5的元素。
3.矩阵的赋值
在了解了矩阵的寻访方法以后,给矩阵中的特定元素赋值也就成了一个很简单的事情。下面举例来说明。
【例2-8】 二维矩阵的赋值。
>> a=magic(4)
a =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> a(3,4)=0 % 对单个元素进行赋值
a =
16 2 3 13
5 11 10 8
9 7 6 0
4 14 15 1
>> a(:,1)=1 % 对第一列进行赋值
a =
1 2 3 13
1 11 10 8
1 7 6 0
1 14 15 1
>> a(14)=16 % 采用全下标对第14个元素进行赋值
a =
1 2 3 13
1 11 10 16
1 7 6 0
1 14 15 1
3.1 进行数组运算的常用函数
在MATLAB中有一些常用函数,这些函数在日常的编程计算过程中会经常遇到,一般是基本的数学概念在MATLAB中的函数表达方式。这些函数在MATLAB中可以同时作用于整个矩阵或者数组,应用起来非常方便,不需要再另写循环程序来对各元素分别进行计算。掌握这些函数是进一步学习的基础。MATLAB人性化的地方在于其自带函数基本是按照相对应的英文名称缩写而来,所以便于记忆。
3.2 函数数组运算规则的定义
对于(m´n)的数组
,函数的数组运算规则是指:
也就是说函数的数组运算是指将函数作用于矩阵中的每一个元素,并将最后的结果储存为与原矩阵行列数相同的矩阵。
3.3 进行数组运算的常用函数
本小节列出进行数组运算的常用函数。常用基本数学函数见表2-2,常用三角函数见表2-3,常用适用于向量的函数见表2-4。
表2-2 MATLAB常用的基本数学函数
函 数 |
说 明 |
函 数 |
说 明 |
abs(x) |
纯量的绝对值或向量的长度 |
rat(x) |
将实数x化为分数表示 |
angle(z) |
复数z的相角 |
sign(x) |
符号函数 当x<0时,sign(x)=-1; 当x=0时,sign(x)=0; 当x>0时,sign(x)=1 |
sqrt(x) |
开平方 |
rem(x,y) |
求x除以y的余数 |
real(z) |
复数z的实部 |
gcd(x,y) |
整数x和y的最大公因数 |
imag(z) |
复数z的虚部 |
lcm(x,y) |
整数x和y的最小公倍数 |
conj(z) |
复数z的共轭复数 |
exp(x) |
自然指数 |
round(x) |
四舍五入至最近整数 |
pow2(x) |
2的指数 |
fix(x) |
无论正负,向0的方向取最近整数 |
log(x) |
以e为底的对数,即自然对数 |
floor(x) |
舍去法取最近整数 |
log2(x) |
以2为底的对数 |
ceil(x) |
进一法取最近整数 |
log10(x) |
以10为底的对数 |
表2-3 MATLAB常用的三角函数
函 数 |
说 明 |
函 数 |
说 明 |
sin(x) |
正弦函数 |
sinh(x) |
超越正弦函数 |
cos(x) |
余弦函数 |
cosh(x) |
超越余弦函数 |
tan(x) |
正切函数 |
tanh(x) |
超越正切函数 |
asin(x) |
反正弦函数 |
asinh(x) |
反超越正弦函数 |
acos(x) |
反余弦函数 |
acosh(x) |
反超越余弦函数 |
atan(x) |
反正切函数 |
atanh(x) |
反超越正切函数 |
atan2(x,y) |
四象限的反正切函数 |
表2-4 适用于向量的常用函数
函 数 |
说 明 |
函 数 |
说 明 |
min(x) |
向量x的元素的最小值 |
norm(x) |
向量x的欧氏长度,也就是范数 |
max(x) |
向量x的元素的最大值 |
sum(x) |
向量x的元素总和 |
mean(x) |
向量x的元素的平均值 |
prod(x) |
向量x的元素总乘积 |
median(x) |
向量x的元素的中位数 |
cumsum(x) |
向量x的累计元素总和 |
std(x) |
向量x的元素的标准差 |
cumprod(x) |
向量x的累计元素总乘积 |
diff(x) |
向量x的相邻元素的差 |
dot(x, y) |
向量x和y的内积 |
sort(x) |
对向量x的元素进行排序 |
cross(x, y) |
向量x和y的外积 |
【例2-9】 数组运算示例。
>> a=[1 2 4 9;16 25 36 49]
a =
1 2 4 9
16 25 36 49
>> b=sqrt(a) % 应用函数对矩阵中的每一个元素分别开方
b =
1.0000 1.4142 2.0000 3.0000
4.0000 5.0000 6.0000 7.0000
理工科毕业设计献礼,MATLAB从入门到精通之矩阵是如何实现寻访与赋值的相关推荐
- matlab赋值一行,matlab – 0和1的矩阵,其中后续行中的赋值取决于前一行
基于检查数字是大于还是小于中位数的解决方案.只要测试的列数是偶数,一组随机双精度的正好一半将大于中位数,一半将更小.这可以保证正好有50%的位被翻转. nRows = 3; nCols = 16; % ...
- python快速编程入门教程-python从入门到精通之30天快速学python视频教程
python从入门到精通之30天快速学python视频教程 课程目录: python入门教程-1-Python编程语言历史及特性.mkv python入门教程-2-Python编程语言初接触.mkv ...
- MxGraph从入门到精通之3:设置图形样式
文章目录 修改默认样式 修改顶点(Vertex)的默认样式 修改边(Edge)的默认样式 设置节点样式 创建指定样式的节点 更新已有节点样式 常用样式汇总 mxConstants.STYLE_SHAP ...
- MxGraph从入门到精通之2:HelloWorld程序解析
文章目录 通过上一篇文章MxGraph从入门到精通之1:运行HelloWorld示例程序,我们已经把MxGraph运行起来,通过查看hellloworld.html可以总结该程序运行的核心步骤主要有以 ...
- SQL语句从入门到精通之笔记大全
SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE.由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行说明. 下列语句部分是Mssql语句,不可以在acc ...
- 【Python】Python实战从入门到精通之二 -- 教你使用Python中列表操作
本文是Python实战–从入门到精通系列的第二篇文章: [Python]Python实战从入门到精通之一 – 教你深入理解Python中的变量和数据类型 Python实战从入门到精通之二 – 教你使用 ...
- matlab画图入门篇--各种基本图形绘制的函数与实例【转载】
MATLAB画图入门篇--各种基本图形绘制的函数与实例 一. 二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plo ...
- c语言指针易错情况,C语言/C++从入门到精通之指针易错点总结
指针是C语言的灵魂,所以学好指针很关键,本篇主要介绍了C语言/C++从入门到精通之指针易错点总结,通过具体的内容向大家展现,希望对大家C语言/C++的学习有所帮助. 学习C语言肯定会碰到指针,指针是C ...
- 半小时入门MATLAB编程入门基础知识:
https://learnxinyminutes.com/docs/zh-cn/matlab-cn/ 半小时入门MATLAB编程入门基础知识: % 以百分号作为注释符 %{ 多行注释 可以 这样 表示 ...
最新文章
- Facebook计划整合WhatsApp、Instagram和Messenger的基础设施
- python如何读取txt文件-如何在python中读取文件夹中的txt文件列表
- golang匿名组合
- mysql5.718解压版安装_MySQL v5.7.18 版本解压安装
- java中break标记的使用
- 使用基本ACL规则限制用户登录
- DNN(DotNetNuke)注册用户终于突破10万人了,其3.0也终于跳票了...
- android编程fragment,详解Android中Fragment的两种创建方式
- 看视频学编程之WinForm
- AI何时能懂环境会沟通?别急,这个“你说我画”小游戏开了个好头 | 论文
- 从编译器角度分析C语言中数组名和指针的区别
- 吴恩达深度学习——超参数调优
- node.js学习笔记之浅谈观察者模式
- 用 DocFetcher 全文搜索
- 经典数据可视化案例-百度迁徙图
- 字节跳动的面试算法题,实在太变态了
- python+百度云orc识别身份证信息
- matplotlib 配色之内置 colormap
- VR时代的媒介——虚拟的真实感就是真实
- 深圳市梅沙尖登山攻略(2019.8.10 深圳盐田检查站或者东部华侨城出发)
热门文章
- FreeBSD 6.0架设管理与应用-附录B 制作FreeBSD安装光盘
- wifi网络结构(下)
- Acwing756. 蛇形矩阵:模拟
- 赋茶计算机基础知识,计算机基础知识选择题_new解析.doc
- python不可变的列表被称为_【Python学习】可变类型和不可变类型
- springboot webservice接口调用_springboot远程调用dubbo服务接口
- 在mysql中会话变量前面的字符是什么_在MySQL中仅使用会话变量仅对字符的首次出现执行搜索/替换...
- 树莓派python编程小车_python3实现网页版raspberry pi(树莓派)小车控制
- c# bitmap 去除噪点_黑头怎么去除最有效用盐处理的方法推荐
- vspy如何在图形面板显示报文_触想激光切割解决方案中嵌入式工业触控显示器有何优势?...