14

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

例如

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

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

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

2 回答 2

23
>> 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

诀窍,这使用逻辑索引

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

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

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

于 2012-05-07T16:07:17.447 回答
5

同样对于 NaN,您可以使用isnan()任何您想要的来替换这些元素。

于 2012-05-07T16:33:48.143 回答