2024-09-30 12:11:20 发布
网友
我试图用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))
但它给了我一个错误:
cmath不支持numpy数组:
cmath
BER2=(3/8)*erfc(sqrt(ebno*(2/5)))+(1/4)*erfc(3*sqrt(2/5*ebno))
您似乎导入了很多函数作为from foo import *这确实会让您绊倒。另外,您使用的是int(例如2/5)而不是float,因此上面的等式只返回一个包含所有零的数组:
from foo import *
2/5
我建议:
>>> 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])
cmath
不支持numpy数组:您似乎导入了很多函数作为
^{pr2}$from foo import *
这确实会让您绊倒。另外,您使用的是int(例如2/5
)而不是float,因此上面的等式只返回一个包含所有零的数组:我建议:
相关问题 更多 >
编程相关推荐