オクターブで、ベクトルのInf/NaNを0に置き換えるための組み込み関数はありますか
例えば
a = log10([30 40 0 60]) => [1.4771 1.6021 -Inf 1.7782]
有限関数または検索関数を使用して有効な値のインデックス/位置を見つけることができますが、関数を作成せずに値を正しくコピーする方法がわかりません。
finite(a) => [1 1 0 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
_
トリックを行います、これは 論理インデックス を使用します
_~
_はブール値/論理値のNOT演算子であり、isfinite(a)
は以下と同じサイズの論理ベクトルを生成します。
_>> ~isfinite(a)
ans =
0 0 1 0
_
ご覧のとおり、これは論理インデックスに使用されます。
同様にNaNの場合、isnan()
を使用して、これらの要素を必要なものに置き換えることができます。