MATLAB知识点:向量元素的引用

讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​

MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili


节选自第3章 3.2.2节

对向量元素的引用(即提取向量指定位置的值)有两种情形,分别是提取向量中的单个元素和提取向量中的多个元素。在正式讲解之前,我们先来介绍索引(或下标)的概念。

我们知道,向量分为行向量和列向量,它们在MATLAB中只有一个维度,因此我们可以利用向量中包含的元素个数来描述一个向量的大小。MATLAB中,可以使用length函数或numel函数来计算向量中包含的元素个数。

例如:a = [1,3,8,9,7]; length(a)或numel(a)的返回结果是5,因为向量a中有五个元素。

假如我们有一个行向量a,里面包含了n个元素(n是大于等于1的常数),它们分别是a_1, a_2, \cdots , a_n  ,那么我们可以列一个表格:

从上表可以看出,索引就是指某一个元素在向量中对应的位置,也可以称为元素在向量中所处的下标,在MATLAB中,向量的索引是从1开始的。

举个具体的例子,假设向量a=[2 4 8 16 32 64 128 256 512 1024],那么a中有10个元素,因此a的最大索引是10。

(1)单个元素引用

我们提取向量a中单个元素的方法很简单,只需要利用a(ind)命令,小括号中的ind就是你要提取的对应元素的索引。(注意:创建向量用中括号,提取元素要用小括号哦!)

例如:a(1)的结果为2,因为a中第1个位置(索引或下标等于1)的元素是2;类似的,a(9)等于512,因为a中第9个位置的元素是512。

有些同学可能会好奇,如果我取索引为11,即输入a(11)会出现什么情况?

MATLAB会报错:“索引超出数组元素的数目(10)”,即告诉我们,现在这个向量中元素的数目只有10个,即最大索引是10,而你取了索引11的元素,超出了取值范围。

另外,如果我们将ind取成0、负数或者小数,例如输入a(0)、a(-1)、a(1.5),MATLAB也会报错:“数组索引必须为正整数或逻辑值”。这里出现了“逻辑值”的概念,我们在本章后面小节中会介绍。

(2)多个元素引用

类似的,我们也可以利用向量的索引来同时提取多个位置的元素,这时候只需要将ind设置成一个向量,ind中放入我们想要提取的元素的索引,然后使用a(ind)命令即可。

例如,我们令ind = [1 3 5 7 9],那么a(ind)的结果为[2 8 32 128 512],即我们提取了向量a中奇数位置的元素。熟悉向量冒号创建方法的同学应该能够看出,ind等于1:2:9,因此我们可以直接将a(ind)写成a(1:2:9),这就表示提取a中奇数位置的元素;类似的,提取a中偶数位置元素的命令是a(2:2:10),如果你不熟练的话,可以分成两步写,即先令ind=2:2:10,然后再使用a(ind)的命令。当然,对于同一个位置的元素,我们也可以提取多次,例如:ind = [1 2 2 3 3 3],那么a(ind)得到的结果应该是[2 4 4 8 8 8],以后熟悉的话可以直接写成a([1 2 2 3 3 3])。

技巧:使用end索引

有同学会想,假如我不知道向量a中有多少个元素,也不想使用length函数或者numel函数来计算向量中元素的个数,那我能不能提取出a中奇数位置的元素呢?这时候就需要用到一个特殊的关键字:end。它有很多种用法,在这里end可以用来替代向量的最后一个索引

例如,我现在要访问a中第五个至最后一个元素,那么我们可以直接使用a(5:end),这里的end就表示了a的最后一个索引;另外,我们还可以对end进行计算,例如要访问a中第五个至倒数第三个元素,我们可以使用a(5:end-2),得到的结果为[32 64 128 256]。

这里有一个易错点,如果使用了end,不能将要取元素的索引赋值给ind。例如,还是要访问a中第五个至最后一个元素,如果你令ind=5:end,MATLAB就会报错。因此,我们只能在a后面的小括号中使用end来替代数组的最后一个索引。

那我们回到上面的问题,在不知道a中有多少个元素的前提下,我们可以使用a(1:2:end)。    

最后请大家思考:如何将一个向量倒序?例如原来的向量是[1 5 8 4],倒序后是[4 8 5 1]。这个问题留作本章课后习题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/354794.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何将前后端分离(vue2+SpringBoot)项目部署到腾讯云服务器

如何将前后端分离(vue2SpringBoot)项目部署到腾讯云服务器 目录 如何将前后端分离(vue2SpringBoot)项目部署到腾讯云服务器 1、在选中目录地下新建2个文件夹 2、将打包好的前端项目和后端jar包上传到相应的目录下 3、将路径切…

MyBatis详解(5)-- MyBatis注解

MyBatis详解(5) 注解映射器xml配置文件的缺陷:常用注解1.基本注解:实现简单的增删改查操作。Insert 新增Options(useGeneratedKeys true, keyProperty "主键属性") 主键回填SelectKey ( statement "自增规则&qu…

Mysql大数据量分页优化

前言 之前有看过到mysql大数据量分页情况下性能会很差,但是没有探究过它的原因,今天讲一讲mysql大数据量下偏移量很大,性能很差的问题,并附上解决方式。 原因 将原因前我们先做一个试验,我做试验使用的是mysql5.7.2…

Matlab|【完全复现】基于价值认同的需求侧电能共享分布式交易策略

目录 1 主要内容 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序完全复现《基于价值认同的需求侧电能共享分布式交易策略》,针对电能共享市场的交易机制进行研究,提出了基于价值认同的需求侧电能共享分布式交易策略,旨在降低电力市…

北京摇号政策梳理汇总

文章目录 政策梳理 家庭申请资格 家庭积分规则 参考资料 目前&#xff0c;北京车牌摇号实施的政策&#xff0c;主要是2021年1月1日的《<北京市小客车数量调控暂行规定>实施细则》。本文梳理了与博主本人直接相关的一些内容&#xff0c;可能对大部分网友也有帮助。 政…

基于springboot宠物领养系统

摘要 随着社会的不断发展和人们生活水平的提高&#xff0c;宠物在家庭中的地位逐渐上升&#xff0c;宠物领养成为一种流行的社会现象。为了更好地管理和促进宠物领养的过程&#xff0c;本文基于Spring Boot框架设计和实现了一套宠物领养系统。该系统以用户友好的界面为特点&…

有趣的移位操作符和位操作符(由浅入深轻松搞定!)

目录 1. 原码&#xff0c;反码&#xff0c;补码 2.移位操作符 2.1 左移操作符 2.2 右移操作符 3.位操作符 (&、|、^、~) 4.使用移位操作符和位操作符写一些有趣的代码~ 1.不能创建临时变量&#xff08;第三个变量&#xff09;&#xff0c;实现两个数的交换 2.编写代…

[echarts] 图表工具栏 toolbox

option{// 工具栏配置toolbox:{id:1, // 组件IDshow:true, // 是否显示工具栏orient:horizontal, // 工具栏 icon 的布局朝向itemSize:15, // 工具栏 icon 的大小itemGap:10, // 工具栏…

算法沉淀——双指针算法(leetcode真题剖析)

算法沉淀——双指针算法 01.移动零02.复写零03.快乐数04.盛最多水的容器05.有效三角形的个数06.和为s的两个数字07.三数之和08.四数之和 双指针算法&#xff08;Two Pointer Algorithm&#xff09;是一种常用于数组&#xff08;或链表&#xff09;操作的算法技巧。它的核心思想…

Kano模型

目录 1.介绍&#xff1a;2.Kano模型的作用&#xff1a;3.KANO模型使用场景&#xff1a;4.使用步骤&#xff1a;4.1设计问卷&#xff1a;4.2 数据分析4.2.1 KANO属性4.2.2 Better系数、Worse系数4.2.3 举例&#xff1a; 小结&#xff1a; 1.介绍&#xff1a; Kano模型是一种质量…

C#常见内存泄漏

背景 在开发中由于对语言特性不了解或经验不足或疏忽&#xff0c;往往会造成一些低级bug。而内存泄漏就是最常见的一个&#xff0c;这个问题在测试过程中&#xff0c;因为操作频次低&#xff0c;而不能完全被暴露出来&#xff1b;而在正式使用时&#xff0c;由于使用次数增加&…

【JavaScript 基础入门】02 JavaScrip 详细介绍

JavaScrip 详细介绍 目录 JavaScrip 详细介绍1. JavaScript 是什么2. JavaScript的作用3. HTML/CSS/JS 的关系4. 浏览器执行 JS 简介5. JavaScript 的组成6. JavaScript 的特点 1. JavaScript 是什么 JavaScript&#xff0c;通常缩写为 JS&#xff0c;是一种高级的&#xff0c;…

【SpringSpringBoot】概述

Spring&SpringBoot专题 【注】&#xff1a; 本专题围绕框架核心概念展开&#xff0c;渐进式深入总结学习、面试、开发经验&#xff0c;集中整理便于回顾 持续补充与施工中~~~~ 1.发展史 2.基本架构 Spring框架的基本架构是一个分层架构&#xff0c;包括多个模块&#x…

STL---stackqueue

一、stack 1.stack的介绍 stack介绍文档 https://legacy.cplusplus.com/reference/stack/stack/?kwstack 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适…

AI技术大揭秘:探索人工智能的核心领域与必备技能

随着人工智能的不断进步&#xff0c;AI技术在各个领域都发挥着越来越关键的作用。想要成为AI领域的从业者&#xff0c;不仅需要对整体格局有清晰认识&#xff0c;更要掌握关键技术和必备技能。本文将深入解析AI的核心技术领域&#xff0c;以及在这个前沿领域里需要掌握的技能。…

Java_集合类

集合可以看作是一个容器&#xff0c;集合中的各个对象&#xff0c;很容易将其从集合中取出来&#xff0c;也很容易将其存放到集合中&#xff0c;还可以按照一定的顺序进行摆放。JAVA中提供了不同的集合类&#xff0c;这些类具有不同的存储对象的方式&#xff0c;同时提供了相应…

04-JVM虚拟机-课堂笔记

04-JVM虚拟机 1. JVM虚拟机概述 1.4 对象的创建流程与内存分配 1.4.1 创建流程 1.4.2 对象内存分配方式 内存分配的方法有两种&#xff1a;不同垃圾收集器不一样 指针碰撞(Bump the Pointer) 空闲列表(Free List) 分配方法说明收集器指针碰撞(Bump the Pointer)内存地址…

论机器生产内容MGC与新数字时代的两个世界

摘要&#xff1a;本文从新数字时代人类社会的两种存在形态&#xff1a;数字世界&#xff08;元宇宙&#xff09;与物理世界&#xff08;时空宇宙&#xff09;&#xff0c;以及新兴数字产业&#xff1a;机器生产内容MGC的发展、现状与未来出发&#xff0c;通过对新数字时代及两个…

【MIdjourne基础】 |MIdjourney基础参数全解析,各类辅助知识

文章目录 1 参数列表1.1 基础参数列表 2 基础参数详解2.1 模型版本选择2.2 模型出图模式选择2.3 基础生图参数2.3.1 --ar2.3.2 --stylize2.3.3 --no2.3.4 --chaos2.3.5 --quality2.3.6 --stop2.3.7 --hd2.3.8 --repeat 1 参数列表 1.1 基础参数列表 模型版本选择 目标参数作…

什么是微服务?(微服务的技术栈)

微服务是一种架构风格&#xff0c;它将一个单一的应用拆分为多个小型的服务&#xff0c;每个服务运行在自己的进程中&#xff0c;服务间采用轻量级的通信机制&#xff08;如HTTP/webservice等&#xff09;。这些服务围绕业务能力构建&#xff0c;并且可以全自动独立部署。微服务…