sub2ind函数是MATLAB中对矩阵索引号检索的函数,用法如下:

>> A=rand(5)

A =

0.6850    0.0867    0.2290    0.1006    0.4053
    0.5979    0.7719    0.6419    0.2941    0.1048
    0.7894    0.2057    0.4845    0.2374    0.1123
    0.3677    0.3883    0.1518    0.5309    0.7844

0.2060    0.5518    0.7819    0.0915    0.2916

当我们输入:

>> b=sub2ind(size(A),[1 2 3],[2 3 4])

b =

6    12    18

返回值什么意思呢?即我们输入的坐标(1,2),(2,3),(3,4)在矩阵A中的索引号,意思是A矩阵第1行第2个元素的索引值号为6,为什么是6呢?因为MATLAB是按列搜索的。同理A中的第2行第3个的索引号为12,后面依次类推。

那我们如何取出A中(1,2),(2,3),(3,4)这些地方的值呢?

输入一下代码即可:

>> v=A(sub2ind(size(A),[1 2 3],[2 3 4]))

v =

0.0867    0.6419    0.2374

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ind2sub和sub2ind这对函数,是互逆的一对函数。ind2sub把数组或者矩阵的线性索引转化为相应的下标;sub2ind则正好相反,将下标转化为线性索引。

ind2sub的函数参考:

[I,J] = ind2sub(siz,IND)
[I1,I2,I3,...,In] = ind2sub(siz,IND)

sub2ind的函数参考:
linearInd = sub2ind(matrixSize, rowSub, colSub)
linearInd = sub2ind(arraySize, dim1Sub, dim2Sub, dim3Sub, ...)

上述的函数参考中,第一个都是二维的情况,第二个扩展到了多维空间。一维的数组就没必要使用这两个函数了,一维的下标本来就是线性索引。

从这个例子中我们看到,MATLAB中的数组是按照列排列的,使用的时候要注意一点。多维的使用和上述类似。

ind2sub的用法也类似

这里说明一点,ind2sub和sub2ind仅仅是下标的转换操作,实际使用中还会强扯到其他的函数,如find, size之类的。

sub2ind函数的更多相关文章

  1. matlab中的sub2ind函数

    在matlab中,矩阵的存储是按列优先,sub2ind函数将矩阵中指定元素的行列下标转换成存储的序号,即线性索引号.下面,我们举例子进行说明. 1 建立一个3*4*2的矩阵 rng(0,'twiste ...

  2. matlab之sub2ind()函数

    将下标转换为线性索引 语法 linearInd = sub2ind(matrixSize, rowSub, colSub) 说明 linearInd = sub2ind(matrixSize, row ...

  3. Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)

    理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...

  4. Matlab中数组元素引用——三种方法

    Matlab中数组元素引用——三种方法   1.Matlab中数组元素引用有三种方法 1 2 3 1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 注意:在使 ...

  5. 【ufldl tutorial】Softmax Regression

    今天太长姿势了,什么叫懂了也写不出代码说的不就是我吗,就那么几行代码居然叽叽歪歪写了一个小时. 首先exercise要实现的是softmax的cost function和gradient,如下图: ( ...

  6. 【deep learning精华部分】稀疏自编码提取高阶特征、多层微调完全解释及代码逐行详解

    我们前面已经讲了如何训练稀疏自编码神经网络,当我们训练好这个神经网络后,当有新的样本输入到这个训练好的稀疏自编码器中后,那么隐藏层各单元的激活值组成的向量就可以代表(因为根据稀疏自编码,我们可以用来恢 ...

  7. matlab考试重点详解

    此帖是根据期末考试复习重点补充完成, 由于使用word编辑引用图片和链接略有不便, 所以开此贴供复习及学习使用.侵删 复习要点 第一章 Matlab的基本概念,名称的来源,基本功能,帮助的使用方法 1 ...

  8. Matlab学习笔记1—MATLAB基础知识

    1.1  MATLAB系统环境 1.MATLAB操作界面的组成 (1)MATLAB主窗口 (2)命令行窗口:命令行窗口用于输入命令并显示命令的执行结果. (3) 当前文件夹窗口 如何设置当前文件夹呢? ...

  9. MATLAB矩阵的表示

    矩阵是matlab中最基本的数据对象. l  矩阵的建立 l  冒号表达式 l  结构矩阵和单元矩阵 1.矩阵的建立 (1)利用直接输入法建立矩阵:将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素 ...

随机推荐

  1. centos中安装虚拟机

    我这里选用的虚拟机软件为virtualbox 下载wget http://download.virtualbox.org/virtualbox/5.2.2/VirtualBox-5.2-5.2.2_1 ...

  2. mysql数据库迁移文档

    数据库迁移文档 一.需求 确保数据库稳定的运行,为开发人员提供方便的测试数据库和生产数据库的环境. 二.数据库整体架构(master/slave) 1.slave数据库安装 rpm -Uvh http ...

  3. ubuntu 15.10 设置静态ip 分配固定ip 设置dns 设置网关 命令行配置ip 固定ip不生效怎么办

    要用到的文件: 配置接口信息 /etc/network/interfaces 配置内容: auto eth0 iface eth0 inet static address 192.168.216.18 ...

  4. Android ios嵌套web页面

    我们现在做一个活动页面,Android和ios的活动页面用web来做,方便更改,下面有几个小问题: 1.在Android和ios中,虽然web上面可以存localstorage,但是到了Android ...

  5. 为你的Python程序加密

      在实际的工作中,有时候我们需要部署自己的Python应用,但这时候我们并不希望别人能够看到自己的Python源程序.因此,我们需要为自己的源代码进行加密,Python已经为我们提供了这样一套工作机 ...

  6. 第16章 使用ASP.NET Core Identity - Identity Server 4 中文文档(v1.0.0)

    注意 对于任何先决条件(例如模板),首先要查看概述. IdentityServer旨在提供灵活性,其中一部分允许您为用户及其数据(包括账户密码)使用所需的任何数据库.如果您从新的用户数据库开始,那么A ...

  7. DSAPI多功能组件编程应用-网络相关(中)

    [DSAPI.DLL下载地址] 在中篇,我将演示比上篇稍微复杂点的功能.如HTTP监听和局域网广播. 有时,我们会有这样的需求:用户通过浏览器来访问获取数据,我们的程序需要监听指定端口,根据不同的请求 ...

  8. 杭电ACM2009--求数列的和

    求数列的和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  9. 用python爬取杭电oj的数据

    暑假集训主要是在杭电oj上面刷题,白天与算法作斗争,晚上望干点自己喜欢的事情! 首先,确定要爬取哪些数据: 如上图所示,题目ID,名称,accepted,submissions,都很有用. 查看源代码 ...

  10. 认证与Shiro安全框架

    本文内容均来自官网 1.简介 Apache Shiro是Java的一个安全框架.功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案. 实际上,S ...