一起来学matlab-matlab学习笔记11

11_2 高维数组处理和运算

squeeze, ind2sub, sub2ind

觉得有用的话,欢迎一起讨论相互学习~Follow Me

squeeze

  • 删除单维度--B=squeeze(A) B = squeeze(A)返回一个与A元素相同,但去掉了所有单维度的数组B。单例维度是指size(A,dim) = 1的任何维度。二维阵列不受squeeze函数的影响;如果A是一个行或列向量或标量(1×1)的值,那么B = A。

从数组中去掉单维度

  • 创建一个(213)的数组,然后去掉单维度,使其成为一个(2*3)的矩阵

>> y = rand(2,1,3)
z = squeeze(y) y(:,:,1) = 0.8147
0.9058 y(:,:,2) = 0.1270
0.9134 y(:,:,3) = 0.6324
0.0975 z = 0.8147 0.1270 0.6324
0.9058 0.9134 0.0975

sub2ind

  • 将下标转换为线性索引

语法

  • linearInd = sub2ind(matrixSize, rowSub, colSub)
  • linearInd = sub2ind(arraySize, dim1Sub, dim2Sub, dim3Sub, ...)

说明

  • linearInd = sub2ind(matrixSize, rowSub, colSub) 为大小是 matrixSize 的矩阵返回与行和列下标 rowSub 和 colSub 等效的线性索引。matrixSize 输入是一个包含 2 个元素的向量,该向量以 * [nRows, nCols] 形式指定矩阵中的行和列数。rowSub 和 colSub 输入是正整数标量或向量,指定矩阵的一个或多个行-列下标对组。

  • linearInd = sub2ind(arraySize, dim1Sub, dim2Sub, dim3Sub, ...) 为大小是 arraySize 的 N 维数组的每个维度返回与指定的下标等效的线性索引。arraySize 输入是包含 n 个元素的向量,指定数组中的维数。dimNSub 输入是正整数标量或向量,指定矩阵的一个或多个行-列下标。

  • 所有下标输入可以是 single、double 或任意整数类型。linearInd 输出始终都为类 double。

  • 如果需要,sub2ind 假定未指定的后续下标是 1。

三维数组的线性索引

将三维数组的索引转换为单个线性索引。

创建数组 A,并确定对应于 (2,1,2) 位置的元素的线性索引。

A = rand(3,4,2);
linearInd = sub2ind(size(A),2,1,2)
linearInd = 14
检查这两个索引版本是否引用 A 的同一元素。 A(2,1,2)
ans = 0.4854
A(14)
ans = 0.4854

ind2sub

  • 线性索引的下标

语法

[I,J] = ind2sub(siz,IND)

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

说明

ind2sub 函数确定与数组的单个索引对应的等效下标值。

[I,J] = ind2sub(siz,IND) 返回矩阵 I 和 J,其中包含与矩阵 IND(大小为 siz 的矩阵)中的每个线性索引对应的对等行下标和列下标。siz 是一个包含 ndim(A) 个元素(此示例为 2 个元素)的向量,其中 siz(1) 为行数,siz(2) 为列数。

注意

对于矩阵,[I,J] = ind2sub(size(A),find(A>5)) 与 [I,J] = find(A>5) 返回相同的值。

[I1,I2,I3,...,In] = ind2sub(siz,IND) 返回 n 个下标数组 I1,I2,...,In,其中包含等效于 IND(大小为 siz 的数组)的多维数组下标。siz 是一个指定每个数组维度大小的 n 元素向量。

IND 输入可以是 single、double 或任意整数类型。输出始终属于 double 类。

二维矩阵

三维矩阵

降维输出

  • 对 N 维矩阵调用 ind2sub 时,通常应在调用中提供 N 个输出参数:矩阵的每个维度一个参数。此示例显示在对某个三维矩阵调用 ind2sub 时返回三个、两个和一个输出时发生的情况。

  • 该矩阵为 2×2×2 矩阵,并且线性索引从 1 到 8:

    • dims = [2 2 2];
    • indices = [1 2 3 4 5 6 7 8];
  • 具有三个输出的 ind2sub 调用返回 2×2×2 矩阵的预期下标:

    [rowsub colsub pagsub] = ind2sub(dims, indices)

    rowsub =

    1 2 1 2 1 2 1 2

    colsub =

    1 1 2 2 1 1 2 2

    pagsub =

    1 1 1 1 2 2 2 2

  • 如果您仅指定两个输出(行和列),ind2sub 仍将返回每个指定索引的下标,但会从矩阵中删除第三个维度,并改为返回一个二维的 2×4 矩阵的下标:

[rowsub colsub] = ind2sub(dims, indices)

rowsub =

1 2 1 2 1 2 1 2

colsub =

1 1 2 2 3 3 4 4

  • 如果您指定一个输出(行),ind2sub 将从矩阵中删除第二个维度和第三个维度,并改为返回一个一维的 1×8 矩阵的下标:

[rowsub] = ind2sub(dims, indices)

rowsub =

1 2 3 4 5 6 7 8

matlab学习笔记11_2高维数组操作 squeeze,ind2sub, sub2ind的更多相关文章

  1. matlab学习笔记11_3高维数组操作 filp, shiftdim, size, permute, ipermute

    一起来学matlab-matlab学习笔记11 11_3 高维数组处理和运算 filp, shiftdim, size, permute, ipermute 觉得有用的话,欢迎一起讨论相互学习~Fol ...

  2. RX学习笔记:JavaScript数组操作

    RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...

  3. matlab学习笔记12单元数组和元胞数组 cell,celldisp,iscell,isa,deal,cellfun,num2cell,size

    一起来学matlab-matlab学习笔记12 12_1 单元数组和元胞数组 cell array --cell,celldisp,iscell,isa,deal,cellfun,num2cell,s ...

  4. matlab学习笔记10_5 通用字符串操作和比较函数

    一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张 ...

  5. 吴裕雄--天生自然Numpy库学习笔记:Numpy 数组操作

    import numpy as np a = np.arange(8) print ('原始数组:') print (a) print ('\n') b = a.reshape(4,2) print ...

  6. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

  7. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  8. 【数学建模】MATLAB学习笔记——函数式文件

    MATLAB学习笔记——函数式文件 引入函数式文件 说明: 函数式文件主要用于解决计算中的参数传递和函数调用的问题. 函数式的标志是它的第一行为function语句. 函数式文件可以有返回值,也可以没 ...

  9. 树莓派学习笔记——使用文件IO操作GPIO SysFs方式

    0 前言     本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...

随机推荐

  1. C++(四十九) — set、multiset 容器的基本操作

     1.set的基础知识 set的特性是:所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值.set不允 ...

  2. 在本地调用hadoop的api

    第一次在本地运行Java代码,调用hadoop的hdfs的api接口,遇到下面的问题: 1.HADOOP_HOME and hadoop.home.dir are unset 解决办法:在本地安装配置 ...

  3. Java.io.tmpdir介绍

    System.getproperty(“java.io.tmpdir”)是获取操作系统缓存的临时目录,不同操作系统的缓存临时目录不一样, 在Windows的缓存目录为:C:\Users\登录用户~1\ ...

  4. 《基于C/S和B/S混合结构的中职学校教务管理系统设计与实现》论文笔记(十六)

    标题:基于C/S和B/S混合结构的中职学校教务管理系统设计与实现 一.基本信息 时间:2008 来源:中 国 海 洋 大 学 关键词:: 教务管理信息系统;C/S和B/S混合结构;UML;USE CA ...

  5. 网站安全DDOS攻击及监测

    一. 监测 在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop ...

  6. 使用postman上传excel文件测试导入excel

    今日思语:城市的生活很快,有时学会让自己慢下来,慢慢来 对于做一些文件上传操作时,一般我们是直接在前端页面加入类型为file的input标签,也可以使用postman来进行文件的上传测试,如下: po ...

  7. 06-Flutter移动电商实战-dio基础_Get_Post请求和动态组件协作

    上篇文章中,我们只看到了 dio 的使用方式,但并未跟应用关联起来,所以这一篇将 dio 网络请求与应用界面结合起来,当然这也是为以后的实战作基础准备,基础打牢,我们才能飞速前进. 1.案例说明 我们 ...

  8. LeetCode 881. Boats to Save People

    原题链接在这里:https://leetcode.com/problems/boats-to-save-people/ 题目: The i-th person has weight people[i] ...

  9. Android学习小结

    自从学习Android以来已经经过三个月了,如今市场对于Android工程师的需求接近饱和,所以学习Android的人也少了很多,很多的培训机构也逐渐将Android课程淘汰,导致学习Android的 ...

  10. Xamarin移动开发之路

    Xamarin入门 1.Xamarin开发及学习资源 2.Xamarin安装及调试 Xamarin.Forms 1.入门 [快速入门] 2.XAML 3.应用程序基础知识 [辅助功能]eg:大类型.高 ...