如何在MATLAB中计算单元数组中的行数
我想在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
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)