赞
踩
戳链接看第一篇:
Python信号分析 | 信号的表示(一)
1、三角信号
三角信号在MATLAB中用tripuls函数表示。
ft=tripuls(t,width,skew)
产生幅度为1,宽度为width,且以0为中心左右各展开width/2大小,斜度为skew的三角波。
width默认值为1,skew的取值范围为[-1,1]。
在Python中用一个分段函数来表示三角信号。
Python代码如下:
""" 三角信号 """ import numpy as np import matplotlib.pyplot as plt def triangle_wave(x,c,hc): #幅度为hc,宽度为c,斜度为hc/2c的三角波 if x>=c/2: r = 0.0 elif x<=-c/2: r = 0.0 elif x > -c/2 and x<0: r=2*x/c*hc+hc else: r=-2*x/c*hc+hc return r x=np.linspace(-3,3,1000) y=np.array([triangle_wave(t,4.0,1.0) for t in x]) plt.ylim(-0.2,1.2) plt.plot(x,y) plt.show()
运行结果如下图:
2、复指数信号
在MATLAB中,复指数函数的调用格式为:
exp((a+j*w)*t)
在Python中的函数表示为:
exp((complex(a,w))*t)
Python代码如下:
""" 复指数信号 """ import numpy as np import matplotlib.pyplot as plt t=np.linspace(-3.0,3.0,1000) plt.ylim(0,4) f=2*np.exp((complex(-0.5,8))*t) plt.subplot(221) plt.title(u'实部') plt.plot(t,np.real(f)) plt.subplot(222) plt.title(u'虚部') plt.plot(t,np.imag(f)) plt.subplot(223) plt.title(u'绝对值') plt.plot(t,np.abs(f)) plt.subplot(224) plt.title(u'angle') plt.plot(t,np.angle(f)) plt.show()
运行结果:
3、矩形脉冲信号
在MATLAB中,矩形脉冲信号可用rectpuls函数产生,其调用格式为:
y=rectpuls(t,width)
该函数生成幅度为1,宽度为width,以t=0为对称中心的矩形脉冲信号。
Python中用一个分段函数表示矩形脉冲信号。
代码如下:
""" 矩形脉冲信号 """ import numpy as np import matplotlib.pyplot as plt def rect_wave(x,c,c0): #起点为c0,宽度为c的矩形波 if x>=(c+c0): r=0.0 elif x<c0: r=0.0 else: r=1 return r x=np.linspace(-2,4,1000) y=np.array([rect_wave(t,2.0,-1.0) for t in x]) plt.ylim(-0.2,1.2) plt.plot(x,y) plt.show()
运行结果:
4、阶跃信号
在MATLAB中,阶跃信号用“t>=0”产生,调用格式为:
ft=(t>=0)
在Python中可以用where函数绘制其波形,调用格式为:
where(condition,[x,y])
该函数的返回结果是根据前面的条件判断输出x还是y。
Python代码如下:
"""
阶跃信号
"""
import numpy as np
import matplotlib.pyplot as plt
#定义阶跃信号
def unit(t):
r=np.where(t>0.0,1.0,0.0)
return r
t=np.linspace(-1.0,3.0,1000)
plt.ylim(-1.0,3.0)
plt.plot(t,unit(t))
plt.show()
运行结果:
5、符号算法表示正弦信号
Python代码如下:
"""
符号算法表示正弦信号
"""
import numpy as np
from sympy import plot,sin,Symbol
t=Symbol('t') #定义符号变量t
y=sin(np.pi/4*t)
plot(y)
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。