【问题标题】:Logical Indexing of 3D matrix on basis of a 1D matrix基于 1D 矩阵的 3D 矩阵的逻辑索引
【发布时间】:2015-07-30 02:50:15
【问题描述】:

我在 Matlab 中有一个 450-by-1000-by-3 double,它由 19 个明显重复的唯一值组成很多时间。我们称之为A。

让我们假设其中一些数字是 10、20 和 30。我将这些数字存储在 B 中,因此 B 是 3-by-1。

现在,我真的真的很想吐出一个与A 相同尺寸的新矩阵(450-by-1000-by-3) 但在 1 中,我找到了 10、20 和 30,而在 0 中,它与这 3 个数字不同。

我已经研究过逻辑索引和find,但我总是把头撞到墙上。用一个数字做这件事很容易,但用一个数组做这件事似乎并不奏效。即使有一个循环。

【问题讨论】:

标签: arrays matlab multidimensional-array indexing


【解决方案1】:

方法 1:按照 Dan 的建议使用 ismember:

result = ismember(A, B);

方法2:使用bsxfun:

result = any(bsxfun(@eq, A, reshape(B,1,1,1,[])), 4);

【讨论】:

  • reshape 在第四维中,bsxfun 方法非常好:)
  • 嘎。那非常简单。非常感谢。
猜你喜欢
  • 2019-10-20
  • 2017-12-28
  • 2015-01-24
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
相关资源
最近更新 更多