首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Matlab中使用2D索引数组从3D数组中获取值的列表

在Matlab中使用2D索引数组从3D数组中获取值的列表
EN

Stack Overflow用户
提问于 2020-05-05 05:02:09
回答 1查看 23关注 0票数 0

我有一个3D数组,看起来像这样:

代码语言:javascript
复制
edges = round(rand(20,20,20)));

然后我创建一个随机的索引列表,如下所示:

代码语言:javascript
复制
indices = floor(rand(10000,3)*(19))+1;

因此,如果我尝试使用索引2D数组的第一行来访问edges数组中的元素,我会这样做:

代码语言:javascript
复制
>>> edges(indices(1,1),indices(1,2),indices(1,3))
>>> ans = 1

我想,如果我想获得所有索引位置上的edges的值,我可以这样做

代码语言:javascript
复制
>>> edges(indices)

但是这会返回一个10000 by 3矩阵。我希望得到一个10000 by 1矩阵,在indices的每一行指定的位置都有edges的值。这里发生了什么,有没有一种方法可以在不使用任何for循环的情况下获得我想要的值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-05 08:28:30

是。在edges中使用单个索引,而不是3个:

代码语言:javascript
复制
edges = round(rand(20,20,20));
indices = floor(rand(10000,1)*(20^3-1))+1;
edges(indices)

你也应该使用randi()而不是round(rand()),因为round(5*rand())+1会给你更少的1和6s,而不是2s,3s,4s,5s。

代码语言:javascript
复制
edges = randi(2,20,20,20)-1;
indices = randi(20^3,10000,1);
edges(indices)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61601560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档