【问题标题】:how to generate the values for the Q function如何生成 Q 函数的值
【发布时间】:2020-09-12 10:40:48
【问题描述】:

我正在尝试对问题应用 Q 函数值。我不知道 Python 中可用的函数。

以下代码在 octave 中的 python 等效项是什么?

>> f=0:0.01:1;
>> qfunc(f)

【问题讨论】:

  • 最好先解释一下 Q 函数的含义。

标签: python


【解决方案1】:

Q 函数可以用误差函数来表示。检查here 了解更多信息。 “scipy”具有误差函数 special.erf(),可用于计算 Q 函数。

import numpy as np
from scipy import special
f = np.linspace(0,1,101)
0.5 - 0.5*special.erf(f/np.sqrt(2)) # Q(f) = 0.5 - 0.5 erf(f/sqrt(2))

【讨论】:

  • 虽然此代码可以解决 OP 的问题,但最好包含关于您的代码如何解决 OP 问题的说明。这样,未来的访问者可以从您的帖子中学习,并将其应用到他们自己的代码中。 SO 不是编码服务,而是知识资源。此外,高质量、完整的答案更有可能获得支持。这些功能,以及所有帖子都是独立的要求,是 SO 作为一个平台的一些优势,使其与论坛区分开来。您可以编辑以添加其他信息和/或使用源文档补充您的解释。
【解决方案2】:

看看这个https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.stats.norm.html 看起来 norm.sf 方法(生存函数)可能是您正在寻找的。​​p>

【讨论】:

  • 但在我上面的例子(matlab)中没有均值也没有方差
  • 无均值表示 0,无方差表示 1
【解决方案3】:

我在我的代码中使用了这个 Q 函数,它运行得非常好,

from scipy import special as sp
def qfunc(x):
    return 0.5-0.5*sp.erf(x/sqrt(2))

我没用过这个,但我认为它应该可以工作,

def invQfunc(x):
    return sqrt(2)*sp.erfinv(1-2x)

参考: https://mail.python.org/pipermail/scipy-dev/2016-February/021252.html Python equivalent of MATLAB's qfuncinv() 感谢@Anton 让我知道如何写出好的答案

【讨论】:

  • 虽然这在理论上可以回答问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
  • 逆Q函数应该是return np.sqrt(2)*sp.erfinv(1-2*x),需要import numpy as np
猜你喜欢
  • 2020-09-16
  • 2020-10-25
  • 2021-11-22
  • 2012-09-14
  • 2021-01-21
  • 2019-03-25
  • 1970-01-01
  • 2011-07-01
  • 2012-12-06
相关资源
最近更新 更多