在python scipy版本1.1中计算信噪比

时间:2018-07-19 01:26:49

标签: python numpy image-processing scipy signal-processing

我在网上环顾四周,似乎已弃用了 scipy.stats 中的 signaltonoise 比率功能,该功能在1.1版中不可用。 scipy软件包内还有其他等效方法,因为我无法在线找到它。

如果不是scipy,那么是否建议使用其他任何库进行此类计算?

1 个答案:

答案 0 :(得分:6)

scipy issue #609 on github所示,signaltonoise函数

  

[...] 除向后兼容外没有用。原因是存在一个Matlab信噪比函数http://www.mathworks.com/help/signal/ref/snr.html,它的含义有所不同。这不好,因为scipy克隆了其他信号相关功能的Matlab接口,这种不兼容显然没有抵消作用。

如果您确实需要此功能以实现向后兼容,则可以在history of scipy repository中找到简短的实现,如下所示(此处复制而没有文档注释,license):

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)