def evaluate(self,ts):
phases=PI*self.freq*ts+self.offset
ys=self.amp*self.func(phases)
return ys
下面我们来逐步地解析这个函数:
(1)self.freq是频率,代表每秒周期数,而ts的各个元素都是以秒计的,所以它们的乘积是从其实时间开始的周期数。
(2)PI2是一个常数,也是常用圆的Π,这里为2Π。乘上PI2之后就把周期转换成了相位。读者可以把相位理解为弧度形式的“从其实时间开始的周期数”,而每个周期的弧度为2Π。
(3)self.offset是t=0时刻的相位,其作用是把信号在时域上向左或者向右移动一定的距离。
(4)如果self.func是np.sin或者np.cos,其值便是出于-1到1之间。
(5)乘上self.amp之后产生的信号范围为-self.amp到self.amp。
在数学意义上,evaluate的公式如下:
y=Acos(2πft+φ0)
其中A是幅度,f是频率,t是时间,φ0是相位偏移。上面的代码其实就是这段表达式的值,但是正如我们将要看到的,这段代码提供了处理所有信号的构架,而不仅是三级函数信号的。