使用单元格作为逻辑掩码 (Matlab)

Using a cell as logical mask (Matlab)

我正在尝试使用 matlab 中的一个单元格作为另一个单元格的逻辑掩码(作为矩阵情况的概括)。

F.i.:

A = cellfun(@logical,{[1 0]; [0 1; 1 1]},'UniformOutput',false);
B = {[2 8]; [5 3; 2 9]};

然后我想用A作为B的掩码,这样C = B(A)就是列矩阵:

C = [2; 2; 3; 9];

不幸的是,这不能像在矩阵情况下那样用 C=B(A) 完成,所以我想知道是否有一种简单的方法也可以对单元格执行此操作。

如果我理解你的目标是正确的,你可以通过提供一个双参数匿名函数来实现这一点 cellfun:

C_cell = cellfun(@(x,y)x(y), B, A, 'UniformOutput', false);
C = cat(1,C_cell{:});