如何在[n x 1]矩阵的按列大小查询中忽略NaN(在Matlab中)

如何在[n x 1]矩阵的按列大小查询中忽略NaN(在Matlab中),matlab,size,cell,ignore,nan,Matlab,Size,Cell,Ignore,Nan,我在Matlab中有一个单元格:c[3x1 double],其值为: c{1}(1) = 0.4980 c{1}(2) = NaN c{1}(3) = NaN 现在我想知道当忽略任何NaN时,单元格c的列大小,NaN的大小为1。通常我会使用: size(c{1},1) 但这并没有忽略NaN,因此返回的大小为3。有人知道我如何计算这个单元格的大小,以尽可能有效地补偿任何NaN吗?为什么要使用单元格?为什么不使用矩阵呢?根据您的评论判断,您希望使用稀疏矩阵进行研究。这样,您只需输入非空/零的值。

我在Matlab中有一个单元格:c[3x1 double],其值为:

c{1}(1) = 0.4980
c{1}(2) = NaN
c{1}(3) = NaN
现在我想知道当忽略任何NaN时,单元格c的列大小,NaN的大小为1。通常我会使用:

size(c{1},1)

但这并没有忽略NaN,因此返回的大小为3。有人知道我如何计算这个单元格的大小,以尽可能有效地补偿任何NaN吗?

为什么要使用单元格?为什么不使用矩阵呢?根据您的评论判断,您希望使用稀疏矩阵进行研究。这样,您只需输入非空/零的值。看


此外,我知道在计算尺寸时没有办法忽略NaN。在最小值/最大值计算中,它们往往被忽略。

我怀疑除了循环并确定哪些条目为NaN之外,没有其他选择。@OliCharlesworth,这正是我害怕的。。这只是一个简化问题的示例单元。我使用的实际电池有点大,所以需要很多时间。嗯,也许你希望它响应size=3,但它响应size=1,只需更正sizec{1},1到sizec{1},2@OliCharlesworth是的,你的答案适用于OP的具体例子。但我怀疑,对于标题中的实际问题,是否有一个与示例不符的干净的解决方案!。我不想使用单元格,但它是[m,f,c]=modeB返回的内容,所以我几乎被它卡住了。除非我把它转换成矩阵,但这有点太低效了,唉。像cell2mat这样的东西真的太低效了吗?在我的工作中,我发现它很少受到惩罚。
a = find(isnan(c{1}(1)))
length(a)