web-dev-qa-db-ja.com

python scipyバージョン1.1で信号対雑音比を計算する

オンラインで調べたところ、scipy.stats内のsignaltonoise ratio関数は非推奨であり、バージョン1.1では使用できないようです。私はそれをオンラインで見つけることができなかったので、scipyパッケージ内に他の同等の方法がありますか?.

そして、scipyでない場合、そのような計算に推奨される他のライブラリはありますか?

5
sahu

githubのScipy issue#609 で示されているように、signaltonoise関数

[...]は、後方互換性を除いて有用ではありません。その理由は、Matlabの信号対雑音関数 http://www.mathworks.com/help/signal/ref/snr.html があり、これは何か異なることを意味するためです。 scipyは他の信号関連関数のMatlabインターフェイスを複製するため、これは良くありません。この非互換性は明らかに相殺するメリットがないためです。

後方互換性のためにこの関数が必要な場合、短い実装は scipyリポジトリの履歴 as(ドキュメントのコメントなしでここで再現、 ライセンス )で見つけることができます:

def signaltonoise(a, axis=0, ddof=0):
    a = np.asanyarray(a)
    m = a.mean(axis)
    sd = a.std(axis=axis, ddof=ddof)
    return np.where(sd == 0, 0, m/sd)
9
SleuthEye