matlab学习笔记11_2高维数组操作 squeeze,ind2sub, sub2ind
一起来学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的更多相关文章
- matlab学习笔记11_3高维数组操作 filp, shiftdim, size, permute, ipermute
一起来学matlab-matlab学习笔记11 11_3 高维数组处理和运算 filp, shiftdim, size, permute, ipermute 觉得有用的话,欢迎一起讨论相互学习~Fol ...
- RX学习笔记:JavaScript数组操作
RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...
- 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 ...
- matlab学习笔记10_5 通用字符串操作和比较函数
一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张 ...
- 吴裕雄--天生自然Numpy库学习笔记:Numpy 数组操作
import numpy as np a = np.arange(8) print ('原始数组:') print (a) print ('\n') b = a.reshape(4,2) print ...
- matlab学习笔记(一)单元数组
matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x) :取最大的整数 ceil(3.18)=4,ceil( ...
- matlab学习笔记 bsxfun函数
matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...
- 【数学建模】MATLAB学习笔记——函数式文件
MATLAB学习笔记——函数式文件 引入函数式文件 说明: 函数式文件主要用于解决计算中的参数传递和函数调用的问题. 函数式的标志是它的第一行为function语句. 函数式文件可以有返回值,也可以没 ...
- 树莓派学习笔记——使用文件IO操作GPIO SysFs方式
0 前言 本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...
随机推荐
- clipse调试web项目配置调试配置——没有Server
文章:eclipse环境下如何配置tomcat(包含没有Server解决办法) 地址:https://blog.csdn.net/TimliangL/article/details/78882566
- Uva1349Optimal Bus Route Design(二分图最佳完美匹配)(最小值)
题意: 给定n个点的有向图问,问能不能找到若干个环,让所有点都在环中,且让权值最小,KM算法求最佳完美匹配,只不过是最小值,所以把边权变成负值,输出时将ans取负即可 这道题是在VJ上交的 #incl ...
- WPF MVVM之INotifyPropertyChanged接口的几种实现方式(转)
原地址:https://www.cnblogs.com/xiwang/archive/2012/11/25/2787358.html 序言 借助WPF/Sliverlight强大的数据绑定功能,可以比 ...
- Python开发笔记:网络数据抓取
网络数据获取(爬取)分为两部分: 1.抓取(抓取网页) · urlib内建模块,特别是urlib.request · Requests第三方库(中小型网络爬虫的开发) · Scrapy框架(大型网络爬 ...
- 域权限维持:Ptk(Pass The Ticket)
Kerberos协议传送门:https://www.cnblogs.com/zpchcbd/p/11707302.html 1.黄金票据 2.白银票据
- 四.python基础数据类型
一.什么是数据类型? 什么是数据类型? 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不 ...
- TED演讲:别不信,你只需20个小时,就能学会任何事情!
https://www.bilibili.com/video/av50668972/?spm_id_from=333.788.videocard.3 two years ago, my life ch ...
- Time Frequency (T-F) Masking Technique
时频掩蔽技术. 掩蔽效应 声掩蔽(auditory masking)是指一个声音的听阈因另一个声音的存在而上升的现象.纯音被白噪声所掩蔽时,纯音听阈上升的分贝数,主要决定于以纯音频率为中心一个窄带噪声 ...
- Python连接oracle数据库 例子一
step1:下载cx_Oracle模块,cmd--pip install cx_Oracle step2: 1 import cx_Oracle #引用模块cx_Oracle 2 conn=cx_Or ...
- 洛谷P4047 [JSOI2010]部落划分题解
洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...