如何在MATLAB中计算Cell数组中的行数

时间:2013-12-22 20:03:53

标签: matlab rows cell-array

我想在MATLAB中计算Cell数组中的行数。 我使用下面的代码来计算单元格数组中的列数,但我不知道计算行数的方法。

filledCells = ~cellfun(@isempty,a);
columns = sum(filledCells,2)

例如,我将x作为单元格数组:

x =     [5]    [1x8 double]    [5]

此单元格数组有一行三列。我需要一个代码来计算等于“1”的行数,但我没有找到计算它的方法。

4 个答案:

答案 0 :(得分:5)

我使用了大部分的想法,但它没有起作用,然后借助于什么英雄话说我达到了这个正常运作的想法

 [nr,nc]=size(x)

哪个nr是行数 谢谢你们所有人。

答案 1 :(得分:3)

稍微更通用的方法:适用于行或列,并考虑每个单元格的大小:

dim = 1; %// 1 for rows, 2 for columns
result = sum(cellfun(@(c) size(c,dim), a), dim);

示例:

>> a = {1, [2 3], []; 4, [], 5}
a = 
    [1]    [1x2 double]     []
    [4]              []    [5]
>> dim = 1;

给出

>> result = sum(cellfun(@(c) size(c,dim), a), dim)
result =
     2     1     1

答案 2 :(得分:2)

尝试

%% "a" is the cell array, total num of rows will be saved in "rows"
num = length(a); % num of objects in "a" - big rows
rows = 0;
for i=1:num
    [r c] = size(C{i})
    rows = rows+r;
end

答案 3 :(得分:2)

实现这一目标的最简单方法是获得大小的第一个维度。

rowCount = size(x,1)