如何查找行数大于阈值的单元阵列中的所有单元阵列?

时间:2017-03-22 09:02:33

标签: matlab indexing cell-array

我有一组单元格BB的每个元素都有不同的行号。如何仅使用行数大于阈值B元素?

我试过了:

A = B{cellfun('length', B) >= threshold};

这可以在没有循环的情况下完成吗?

1 个答案:

答案 0 :(得分:1)

无论

B(cellfun('length', B) >= threshold )

B(cellfun(@(x) numel(x) >= threshold, B))

应该有用。

它们都计算内部单元格数组中的元素。

如果你真的想要只有单元格,行数大于或等于阈值:

B(cellfun('size', B, 1) >= threshold )

B(cellfun(@(x) size(x, 1) >= threshold, B))

示例

arr_Row1Col1 = {1};
arr_Row1Col2 = {1,2};
arr_Row2Col1 = {1;2};
arr_Row2Col2 = {1,2;3,4};

threshold = 2;

B = {arr_Row1Col1, arr_Row1Col2, arr_Row2Col1, arr_Row2Col2};

% All inner-cells that have more than one element
B(cellfun('length', B) >= threshold )

% All inner-cells that have more than one row
B(cellfun('size', B, 1) >= threshold )

输出:

ans = {1x2 cell}    {2x1 cell}    {2x2 cell}
ans = {2x1 cell}    {2x2 cell}