2017-11-14 11 views
0
のオペランドタイプがサポートされていません

私はPythonコードで苦労しています。私はこれをしたいequationPython - > TypeError:^

この私のコード:

fs= 5000 
T=np.linspace(0,2.2,fs) 
n=np.arange(fs*2.2) 
u=[] 
for x in T: 
    if x < 0.2: 
     u.append(x * np.sin(34*np.pi*n/fs)) 
    if (x >= 0.2 and x < 0.8): 
     u.append(1/x * np.log10(x+1)) 
    if x >= 0.8 and x < 1.4: 
     u.append((x^2 + 1) * np.sin(12*np.pi*n/fs)) 
    if x >= 1.4: 
     u.append(np.sin(20*np.pi*n/fs + x/3)) 

とPythonを返す:

File "D:/Semestr V/Podstawy Transmisji Danych/labki-ZAD3.py", line 20, in <module> 
    u.append((x^2 + 1) * np.sin(12*np.pi*n/fs)) 

TypeError: unsupported operand type(s) for ^: 'numpy.float64' and 'int' 
+0

タイトル自体は意味がありません。 –

+0

文章の目的のためには、あなたのロジックにif、elif、elseの規則を使用してください。 – APorter1031

+0

[Python TypeError:^: 'float'と 'int'のサポートされていないオペランドタイプの重複の可能性があります(https://stackoverflow.com/questions/34258537/python-typeerror-unsupported-operand-types-for- float-and-int) – kazemakase

答えて

3

パワーオペレータが**で、^は、ビット単位のXORです。間違い^/**超え

1

は、良い方法は、迅速なベクトル化の結果のために、そのために意図されてnp.piecewiseを使用することです:すべての値のn

fs= 5000 
x=np.linspace(0,2.2,fs) 
n=3 

functions=[ 
lambda x : x * np.sin(34*np.pi*n/fs), 
lambda x : 1/x * np.log10(x+1), 
lambda x : (x**2 + 1) * np.sin(12*np.pi*n/fs), 
lambda x : np.sin(20*np.pi*n/fs + x/3)] 

conditions=[x < 0.2,(x >= 0.2) & (x < 0.8), (x >= 0.8) & (x < 1.4), x >= 1.4] 

res=np.piecewise(x,conditions,functions) 
plt.plot(x,res) 

enter image description here

だけループ。

関連する問題