我正在努力使用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'
答案 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)
只需在n
上循环播放所有值。