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

时间:2015-11-16 18:15:37

标签: matlab cell-array

我正在尝试在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)来完成,所以我想知道是否有一种简单的方法可以为细胞做这个。

1 个答案:

答案 0 :(得分:2)

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

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