所谓索引,就是元素在数组这块内存中的顺序号,这与班级里的学号、银行的排号是一样的。

要想知道某个元素的索引,首先得知道数组元素在内存中是如何排布的。

对于一维数组,元素从前往后挨着存储即可:下标为 1 的元素放在开头,索引为 1;下标为 2 的元素紧挨着开头的元素,索引为 2;以此类推,直到存储完所有元素。

我们重点关注的是二维数组。二维数组由行和列构成,到底是一行一行地存储(按行存储),还是一列一列地存储(按列存储),不同的编程语言有不同的规定。大部分编程语言是按行存储的,比如 C/C++、Java、Python 等都是这样;但是 MATLAB 是个例外,它是按列存储的。

比如对于下面的二维数组:

A=

8 1 6

3 5 7

4 9 2

元素在 MATLAB 中的存储顺序是 8,3,4, 1,5,9, 6,7,2;也就是说,先存储第1列,再存储第2列,最后存储第3列。

下面列出了元素、索引和下标的对应关系:

元素 索引 下标

8 1 (1,1)

3 2 (2,1)

4 3 (3,1)

1 4 (1,2)

5 5 (2,2)

9 6 (3,2)

6 7 (1,3)

7 8 (2,3)

2 9 (3,3)

对于三维数组也是类似的,先列后行再页。

通过索引访问数组元素

一维数组的下标和索引相同,大家很容易理解,高维数组(三维以上的数组)和二维数组在原理上是类似的,所以本节重点关注二维数组。

通过索引访问数组元素的格式如下:

A(index)

A 是数组名,它可以是一维数组、二维数组或者高维数组。index 是索引,它是一个整数,取值范围是 0 ≤ index ≤ numel(A);numel() 函数用来求数组元素的个数。

当然,下标也可以放在向量中,格式如下:

A([i  j  k  ...])

A([i, j, k ...])

i、j、k 表示某个具体的索引,它们由空格或者逗号,分隔。这种格式会将得到的元素以行向量的形式返回。

如果你希望得到的元素以二维数组的形式展现,可以使用类似下面的格式:

A([i j k; o p q; x y z])

A([i,j,k; o,p,q; x,y,z])

这种格式会将得到的元素以 3×3 二维数组的形式返回。

【实例】MATLAB 通过索引访问数组元素:

>>A=magic(5)

%括号中为索引值,是我自己添加的

A =

17 (1) 24 (6) 1 (11) 8 (16) 15 (21)

23 (2) 5 (7) 7 (12) 14 (17) 16 (22)

4 (3) 6 (8) 13 (13) 20 (18) 22 (23)

10 (4) 12 (9) 19 (14) 21 (19) 3 (24)

11 (5) 18 (10) 25 (15) 2 (20) 9 (25)

>>A(8)

ans = 6

>>A([1 10 5 2 2 1 3])

ans =

17 18 11 23 23 17 4

>>A([2 5 9; 1 1 1; 8 5 6])

ans =

23 11 12

17 17 17

6 11 24

索引和下标的转换

MATLAB 提供了 ind2sub() 和 sub2ind() 函数用来对索引和下标进行转换。

ind2sub() 用来将索引转换成下标,它的用法为:

[i, j] = ind2sub(siz, index)

对参数和返回值的说明:

siz 表示数组尺寸,也就是数组的行数和列数。对于一维数组来说,数组的行数为 1,列数等于数组元素的个数(可以通过 numel(A) 求得)。通过 size() 函数可以获得数组尺寸,也可以手动输入数组尺寸。

index 表示索引。

[i, j] 表示转换得到的下标。

sub2ind() 用来将下标转换成索引,它的用法为:

index = sub2ind(siz, i, j)

其中,siz 表示数组尺寸,i 表示行下标,j 表示列下标,index 表示索引。

请看下面的演示代码:

>> A=magic(5)

A =

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

>> [i, j] = ind2sub(size(A), 12) %通过size()函数求得数组尺寸

i = 2

j = 3

>> index = sub2ind([5,5], 2, 3) %手动输入数组尺寸

index = 12

>> A(2,3) %通过下标访问数组元素

ans = 7

>> A(12) %通过索引访问数组元素

ans = 7

matlab 判断元素索引_MATLAB通过索引访问数组元素相关推荐

  1. php访问数组用引号_php双引号中访问数组元素报错如何解决

    最近在做微信公众号开发,在一个发送图文接口中,需要把数组元素拼接在XML字符串中,本文主要和大家分享一篇基于php双引号中访问数组元素报错的解决方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小 ...

  2. 访问数组元素进行获取

    数组的访问 索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素. 格式: 数组名[索引] 数组的长度属性: ...

  3. 本地方法(JNI)——访问数组元素+错误处理

    [0]README 1) 本文文字描述 均转自 core java volume 2 , 旨在理解 本地方法(JNI)--访问数组元素+错误处理 的基础知识 : 2)for source code, ...

  4. 4 指针运算_C++用指针访问数组元素(学习笔记:第6章 08)

    用指针访问数组元素[1] 数组是一组连续存储的同类型数据,可以通过指针的算术运算,使指针依次指向数组的各个元素,进而可以遍历数组. 定义指向数组元素的指针 定义与赋值 例: int a[10], *p ...

  5. cout 数组_C++用指针访问数组元素(学习笔记:第6章 08)

    用指针访问数组元素[1] 数组是一组连续存储的同类型数据,可以通过指针的算术运算,使指针依次指向数组的各个元素,进而可以遍历数组. 定义指向数组元素的指针 定义与赋值 例: int 等效的形式 经过上 ...

  6. 不懂就问--Java基本数据类型与数组(定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数)案例分析

    首先要知道java中的数组是线性排列的 其次要知道数组的初始标度为0 例如定义了一个二维数组 a[1][2],则数组详细为 [0][0]: [0][1]: [0][2]: [1][0]: [1][1] ...

  7. [PTA]输入一组数(少于50个元素),要求对该数组元素进行倒序输出。

    7-2 翻转数组 (10 分) 输入一组数(少于50个元素),要求对该数组元素进行倒序输出. 输入格式: 第一行输入一个数n表示数组中元素个数,然后一行输入n个整数,数与数间用空格隔开. 输出格式: ...

  8. php 未定义数组索引_如何删除PHP数组元素键值并重新排序

    点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网      源 / www.php.cn 想要删除PHP数组中某个元素键值,然后重新规范索引排序.我们可以使用PHP中的内置函数uns ...

  9. 基于php双引号中访问数组元素

    关于 php访问数组 {} [] 转载于:https://www.cnblogs.com/fengxiaoyao/p/9558963.html

最新文章

  1. sklearn——CountVectorizer详解
  2. python语言简介-Python语言介绍
  3. 分析脚本文件AndroidInitProcess分析心得(1)
  4. JS最新的身份证验证代码
  5. python浮点型数据怎么显示为图片_python数字图像处理(4):图像数据类型及颜色空间转换...
  6. fzyzojP2291 -- 小添添的庄园之道路修复
  7. 微信公众号发送客服消息【文本、图片】
  8. Java案例:读取文本文件部分内容
  9. js/jquery判断浏览器的方法小结
  10. 求求了!让 Python 的热搜消失吧!!
  11. 2022N1叉车司机题库及在线模拟考试
  12. 钉钉打新债自动提醒-python
  13. 缩减50%调试成本  小匠物联推可远程的串口调试助手
  14. Spectral clustering(谱聚类)算法的实现
  15. 基于C++的简易RLC电路仿真器与滤波器仿真测试
  16. 论文笔记| The Emergence, Advancement and Future of Textual Answer Triggering
  17. Udesk全场景客服系统FAQ分享(202010期)
  18. java程序设计实践教程张永常_java程序设计实用教程
  19. 以远程计算机上的用户身份访问Com+应用
  20. 菜鸟学Linux 第107篇笔记 zabbix概念和安装

热门文章

  1. Oracle11新特性:分区功能增强-Oracle新增复合分区 (转载)
  2. linux cat read line,cat file | while read line的问题
  3. android pd px sp 转换
  4. 页面无任何操作30秒后退出1
  5. POJ1734无向图求最小环
  6. ASP.NET 页面验证cookie
  7. Linux设置环境变量小结:设置永久变量临时变量 全局变量局部变量
  8. 离散卷积与自相关----------信号处理系列[原创]
  9. Oracle 11g中关于数据定义的思考
  10. Creating a Pager Control for ASP.NET以及Dino Esposito 分页组件的一个 Bug