Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中计算单元数组中的行数_Matlab_Rows_Cell Array - Fatal编程技术网

如何在MATLAB中计算单元数组中的行数

如何在MATLAB中计算单元数组中的行数,matlab,rows,cell-array,Matlab,Rows,Cell Array,我想在MATLAB中计算单元格数组中的行数。 我使用下面的代码来计算单元格数组中的列数,但我不知道如何计算行数 filledCells = ~cellfun(@isempty,a); columns = sum(filledCells,2) 例如,我将x作为单元数组: x = [5] [1x8 double] [5] 此单元格数组有一行三列。我需要一个代码来计算等于“1”的行数,但我没有找到计算它的方法。试试看 %% "a" is the cell array, tota

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

filledCells = ~cellfun(@isempty,a);
columns = sum(filledCells,2)
例如,我将x作为单元数组:

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

试试看

%% "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

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

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;
给予


我使用了大部分的想法,但在胡永涛所说的帮助下,我达到了这个想法,这个想法很有效

 [nr,nc]=size(x)
哪个nr是行数
谢谢大家。

实现这一点的最简单方法是获得尺寸的第一个维度

rowCount = size(x,1)

你能举个例子吗?单元格数组
a
的内容是什么?从计算列数的方式推断:
sum(filledCells)
行数。@Oleg它不起作用您的问题不清楚,证明4在解决方案不重要时给出了答案。如果您首先为示例提供了
x
,那么您将在1分钟内获得asnwet。为了避免将来的混淆,“单元格数组中的行数”可能指的是单元格数组的内容。因此,为了避免混淆,请记住单元格数组是一个包装器,它的内容可以是任何内容,因此请使用“单元格数组的大小”。@Oleg如果我知道答案是数组的大小,那么我根本不会问这个问题。我只是想知道一个单元格数组中的行数,我想这是很清楚的。它不会适用于所有的例子,比如x{1,1}=[2 3 4],x{1,2}=[2],x{1,3}=[2 3 4]@Saradian,我刚刚在MATLAB中测试过,它工作得很好。它返回
rows=3
,对吗?@SaraDean为什么不返回3?它确实有3行。我不明白。可能是我错了!?x{行,列}它错了吗?x{1,1:3}表示一行三列,对吗?现在我知道你的意思了。是的,这会有用的。这有多简单!:)@是的,那很简单,谢谢你
rowCount = size(x,1)