基于 1D 矩阵的 3D 矩阵逻辑索引

Logical Indexing of 3D matrix on basis of a 1D matrix

我在 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,但我一直在用头撞墙。用一个数字做这件事很容易,但不知何故用数组做这件事似乎行不通。即使有一个循环。

方法 1:使用 ismember,如 D​​an 所建议:

result = ismember(A, B);

方法二:使用bsxfun:

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