efrc给出错误长度为1的数组可以转换为python

2024-09-30 12:11:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用numpy计算python中的误码率。代码如下:

EbbyNo = arange(0,16,1)
ebno   = 10**(EbbyNo/10)
BER2   = (3/8)*erfc(cmath.sqrt(ebno*(2/5)))+(1/4)*erfc(3*sqrt(2/5*ebno))

但它给了我一个错误:

^{pr2}$

Tags: 代码numpy错误sqrtcmatharangepr2试图用
1条回答
网友
1楼 · 发布于 2024-09-30 12:11:20

cmath不支持numpy数组:

BER2=(3/8)*erfc(sqrt(ebno*(2/5)))+(1/4)*erfc(3*sqrt(2/5*ebno))

您似乎导入了很多函数作为from foo import *这确实会让您绊倒。另外,您使用的是int(例如2/5)而不是float,因此上面的等式只返回一个包含所有零的数组:

^{pr2}$

我建议:

>>> import numpy as np
>>> import scipy.special as sp
>>> EbbyNo=np.arange(0.,16.,1)
>>> ebno=10**(EbbyNo/10)
>>> BER2=(3./8)*sp.erfc(np.sqrt(ebno*(2./5)))+(1./4)*sp.erfc(3*np.sqrt(2./5*ebno))
>>> BER2
array([  1.40982603e-01,   1.18997473e-01,   9.77418560e-02,
         7.74530603e-02,   5.86237373e-02,   4.18927600e-02,
         2.78713278e-02,   1.69667344e-02,   9.24721374e-03,
         4.39033609e-03,   1.75415062e-03,   5.64706106e-04,
         1.38658689e-04,   2.42337855e-05,   2.76320800e-06,
         1.84185551e-07])

相关问题 更多 >

    热门问题