SignalsAndSystems-Preparation
标签: SignalsAndSystems
概述
信号与系统这门课程的实现大多是在Matlab环境下完成的,由于python相比Matlab而言较轻量,并且个人而言比较喜欢python,因此打算用python进行信号与系统这门课程的学习,第一次先用python做一些简单的实验。
基础概念
首先熟悉一下用来表示连续时间信号的基本信号。
单位阶跃信号
忽略t=0处的值,函数定义如下:
单位冲激信号
首先定义面积为1的矩形脉冲信号:
在矩形脉冲信号的基础上定义单位冲激信号:
具有筛选性质,用来筛选有用信号。
斜变信号
其定义是在单位阶跃信号的基础上定义的,函数定义如下:
代码实现
由于是最基本的信号,所以代码移植到python上也比较简单。
单位阶跃信号如下:1
2
3
4
5
6
7
8
9def ustep(t,ad):
n = len(t)
y = np.zeros(n)
for i in range(0,n-1):
if t[i] >= -ad:
y[i] = 0
else :
y[i] = 1
return y
参数t为时间,参数ad为正时为超前系数,为负时为延迟系数。
斜变信号如下:1
2
3
4
5
6
7
8
9def ramp(t,m,ad):
n = len(t)
y = np.zeros(n)
for i in range(0,n-1):
if t[i] > -ad:
y[i] = 0
else:
y[i] = m*(t[i] +ad)
return y
参数t为时间支撑,参数m为斜变函数的斜率,参数ad意义与上同。
之后我们利用单位阶跃信号和斜变信号组成一个稍微复杂一点的信号1
2
3
4x1 = np.arange(-6,6)
y1 = ramp(x1,3,3) + ramp(x1,-6,1) +ramp(x1,3,0) - 3*ustep(x1,-3)
plt.plot(x1,y1)
plt.show()
输出如下:
在此基础上再做一个简单的时移1
2
3
4
5
6
7x1 = np.arange(-6,6)
x2 = x1 - 2
y1 = ramp(x1,3,3) + ramp(x1,-6,1) +ramp(x1,3,0) - 3*ustep(x1,-3)
y2 = ramp(x2,3,3) + ramp(x2,-6,1) +ramp(x2,3,0) - 3*ustep(x2,-3)
plt.plot(x1,y1)
plt.plot(x1,y2)
plt.show()
输出如下:
小结
今天将Matlab代码部分移植到到python上,由于代码本身比较简单,所以移植也比较容易,目前感觉还是用python方便一些。