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)、次と同じサイズの論理ベクトルを生成します。

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

ご覧のとおり、これは論理インデックスに使用されます。

于 2012-05-07T16:07:17.447 に答える
5

NaNの場合も同様に、isnan()これらの要素を必要なものに置き換えるために使用できます。

于 2012-05-07T16:33:48.143 に答える