如何在单元格数组中找到行数大于阈值的所有单元格数组?
How to find all cell arrays in a cell array, where the row count is bigger than a threshold?
我有一个单元格数组 B
。 B
的每个元素都有不同的行号。我如何才能只访问 B
的 行数大于阈值 的元素?
我试过了:
A = B{cellfun('length', B) >= threshold};
这可以不用循环完成吗?
两者都
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}
我有一个单元格数组 B
。 B
的每个元素都有不同的行号。我如何才能只访问 B
的 行数大于阈值 的元素?
我试过了:
A = B{cellfun('length', B) >= threshold};
这可以不用循环完成吗?
两者都
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}