cmath
numpy 配列をサポートしていません:
BER2=(3/8)*erfc(sqrt(ebno*(2/5)))+(1/4)*erfc(3*sqrt(2/5*ebno))
from foo import *
これは本当につまずく可能性があるため、多くの関数をインポートしているようです。また、float の代わりに int (たとえば2/5
) を使用しているため、上記の式はすべてゼロの配列を返します。
>>> 2/5
0
>>> 2./5
0.4
私は提案します:
>>> 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])