首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从由2d数组掩蔽的3d数组返回2d数组

从由2d数组掩蔽的3d数组返回2d数组
EN

Stack Overflow用户
提问于 2018-01-02 22:57:44
回答 1查看 61关注 0票数 1

使用三维矩阵和二维布尔掩码,我试图返回所有与掩码中的真对应的3值集。例如,我有矩阵:

代码语言:javascript
复制
matrix(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


matrix(:,:,2) =

     1     2     3
     4     5     6
     7     8     9


matrix(:,:,3) =

     1     2     3
     4     5     6
     7     8     9

还有一个面具:

代码语言:javascript
复制
mask =


   0   0   0
   0   1   1
   1   1   1

>> matrix(mask)

ans =

     7
     5
     8
     6
     9

这个索引似乎只掩盖了3d矩阵的第一部分。如何返回所有指定的3-值对的2d数组?

虽然形状和顺序并不重要,但我希望输出类似于以下内容,其中输出的一个维度对应于三维数组的第3维。

代码语言:javascript
复制
[7,7,7]
[5,5,5]
[8,8,8]
[6,6,6]
[9,9,9] 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-02 23:08:59

要做到这一点,可以将原始的3d数组转换为2d,其中每一行来自第3维中的向量:

代码语言:javascript
复制
matrix2 = reshape(matrix, [], size(matrix, 3))
matrix2 =

   1   1   1
   4   4   4
   7   7   7
   2   2   2
   5   5   5
   8   8   8
   3   3   3
   6   6   6
   9   9   9

然后使用mask中1的索引作为行索引:

代码语言:javascript
复制
vectors = matrix2(find(mask), :)
vectors =

   7   7   7
   5   5   5
   8   8   8
   6   6   6
   9   9   9

正如@LuisMendo在注释中提到的那样,如果mask是一个逻辑数组,那么甚至不需要调用find

代码语言:javascript
复制
vectors = matrix2(mask, :)
vectors =

   7   7   7
   5   5   5
   8   8   8
   6   6   6
   9   9   9
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48068966

复制
相关文章

相似问题

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