Python - > TypeError:^的不支持的操作数类型

时间:2017-11-14 13:47:07

标签: python algorithm list numpy equation

我正在努力使用Python代码。我想这样做equation

这是我的代码:

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'

2 个答案:

答案 0 :(得分:3)

电源运算符为**^为按位异或。

答案 1 :(得分:1)

除了错误^/**之外,好的方法是使用np.piecewise用于快速向量的结果:

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

只需在n上循环播放所有值。