【问题标题】:How to ignore NaN's in a columnwise size query for a [n x 1] matrix (in Matlab)如何在 [n x 1] 矩阵的列大小查询中忽略 NaN(在 Matlab 中)
【发布时间】:2012-04-03 10:06:13
【问题描述】:

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

c{1}(1) = 0.4980
c{1}(2) = NaN
c{1}(3) = NaN

现在我想知道单元格 c 的(按列)大小,忽略任何 NaN(即 size = 1)。通常我会使用:

size(c{1},1)

但这不会忽略 NaN(因此返回 size = 3)。有谁知道我如何计算这个单元格的大小以补偿任何 NaN(尽可能高效)?

【问题讨论】:

  • 我怀疑除了循环并确定哪些条目是 NaN 之外还有其他选择。
  • @OliCharlesworth,这就是我害怕的......这只是一个示例单元格(为了简化问题)。我使用的实际电池要大一些,所以需要很长时间。嗯嗯:)
  • 也许您希望它响应 size=3 但它响应 size=1,只需将 size(c{1},1) 更正为 size(c{1},2)
  • @OliCharlesworth,写一个 for,我希望不会少...
  • @g24l:是的,您的回答适用于 OP 的具体示例。但我怀疑标题中的实际问题是否有“干净”的解决方案(与示例不对应!)。

标签: matlab size cell nan


【解决方案1】:

你为什么使用细胞?为什么不使用矩阵?根据您想要使用稀疏矩阵的 cmets 来判断。这样,您只输入非空/零的值。见http://www.mathworks.com/help/techdoc/math/f6-8856.html

我也知道在大小计算中无法忽略 NaN。在最小/最大计算中往往会忽略它们。

【讨论】:

  • 我不想使用单元格,但这是[m,f,c] = mode(B) 返回的内容,所以我几乎坚持使用它。除非我将其转换为矩阵,否则效率太低了,唉。
  • 像cell2mat这样的东西真的太低效了吗?在我的工作中,我发现它几乎没有任何惩罚。
【解决方案2】:
a = find(isnan(c{1}(1)))
length(a)

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    相关资源
    最近更新 更多