python - 如何使用python计算信噪比

标签 python scipy signal-processing

亲爱的专家,我有一个数据集。我只想计算数据的信噪比。数据在这里加载 https://i.fluffy.cc/jwg9d7nRNDFqdzvg1Qthc0J7CNtKd5CV.html
我的代码如下:

import numpy as np
from scipy import signaltonoise
import scipy.io
dat=scipy.io.loadmat('./data.mat')
arr=dat['dn']
snr=scipy.stats.signaltonoise(arr, axis=0, ddof=0) 
但我收到类似 importError 的错误:无法从 'scipy' 导入名称 'signaltonoise'
如果不存在如何计算 snr,请建议使用 python 使用此数据集使用其他方法。

最佳答案

scipy.stats.signaltonoise已在 scipy 1.0.0 中删除。您可以降级您的 scipy 版本或自己创建函数:

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)
来源:https://github.com/scipy/scipy/blob/v0.16.0/scipy/stats/stats.py#L1963
有关文档字符串,请参阅 github 链接。
编辑:完整的脚本如下所示
import numpy as np
import scipy.io

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)

dat = scipy.io.loadmat('./data.mat')
arr = dat['dn']
snr = signaltonoise(arr)

关于python - 如何使用python计算信噪比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63177236/

相关文章:

python - 如何在 Django 中创建用户定义字段

python - Django OneToOneField 可能有空白字段

python - 使用tensorflow tf.control_dependency 和 tf.layers.batch_normalization 出现错误

python - 在 Scipy 中切片稀疏矩阵——哪种类型效果最好?

audio - 跨平台离线音频处理库

python - 如何使用平滑技术消除姿势估计中的抖动?

python - 为什么这不抛出 SyntaxError 而不是默默地解释错误?

scipy - 如何直接获得scipy插值的梯度?

python - 使用 scipy.optimize 和 loglikelihood 查找 beta 二项式分布的 alpha 和 beta

image-processing - 与高斯滤波器 sigma 相关的盒式滤波器大小