【问题标题】:how to replace Inf and NaN with zero using built in function如何使用内置函数将 Inf 和 NaN 替换为零
【发布时间】:2012-05-16 03:36:47
【问题描述】:

在八度音程中,是否有内置函数用于将向量中的 Inf/NaN 替换为 0

例如

a = log10([30 40 0 60]) => [1.4771 1.6021 -Inf 1.7782]

我可以使用有限或查找函数来查找有效值的索引/位置 但我不知道如何在不编写函数的情况下正确复制值。

finite(a) => [1 1 0 1]

【问题讨论】:

    标签: matlab octave


    【解决方案1】:
    >> a = log10([30 40 0 60])
    a =
          1.477    1.602    -Inf    1.778
    
    >> a(~isfinite(a))=0
    a =
          1.477    1.602    0       1.778
    

    成功了,这使用logical indexing

    ~ 是布尔/逻辑值的 NOT 运算符,isfinite(a) 生成一个逻辑向量,大小与 a: 相同:

    >> ~isfinite(a)
    ans =
         0     0     1     0
    

    如您所见,这是用于逻辑索引。

    【讨论】:

      【解决方案2】:

      与 NaN 类似,您可以使用 isnan() 将这些元素替换为您想要的任何内容。

      【讨论】:

        猜你喜欢
        • 2015-09-08
        • 2014-01-29
        • 2021-10-25
        • 2021-06-29
        • 2019-01-09
        • 2018-01-07
        • 2015-12-01
        • 2011-10-29
        • 2017-08-28
        相关资源
        最近更新 更多