2.1 三角波
2.2 方波
三角波 | 方波 |
---|---|
三角波的谐波全部都是基频的奇数倍 | 方波也是只含有奇数谐波 |
各谐波的幅度随着频率的平方等比例地衰减 | 幅度随频率等比例衰减,衰减得慢一些 |
这种关系被称为谐波结构 | 例如,对比200Hz和600Hz,幅度比为 ( 600 200 ) 2 = 9 (\frac{600}{200})^2=9 (200600)2=9 |
![]() | ![]() |
![]() | ![]() |
生成三角波和方波都是从Sinusoid继承了_init_,区别在于evaluate
class SquareSignal(Sinusoid):
def evaluate(self,ts):
cycles = self.freq * ts + self.offset / PI2
frac, _ = np.modf(cycles)
ys = self.amp * np.sign(unbias(frac))#np.sign将负值投射到-1,正值投射到1
return ys
2.3 混叠
比如,每秒采样10 000次,那么我们能测的最高频率就是5 000Hz(该频率称为奈奎斯特频率/折叠频率)
即每秒含有5 000个周期,每周期仅有两个采样点
信号在离散的时间点上进行取值,就会失去采样点之间的信息,采样高频信号后,其结果与采样低频信号一样
在这个例子中,7 700Hz的信号无法与2 300Hz的信号区分,即高于5 000Hz的信号被折叠到了5 000Hz以下
2.4 计算频谱
补:fs,是一个包含对应hs各元素的频率的数组
理解hs的值
hs中的每一个值对应一个频率元素。其量值与对应的元素的振幅成比例,其角度为相位差。
Spectrum类提供了两个只读属性:amps和angles,返回的是NumPy数组,分别代表振幅和角度。
建议将DFT想象为振幅和角度的向量,只不过恰好用复数的形式来表示了。
修改Spectrum
#将所有匀速的振幅都变成原来的两倍
spectrum.hs *= 2
spectrum.scale(2)
#将hs元素中超过截至频率的所有元素都置零
spectrum.hs[spectrum.fs > cutoff] = 0
spectrum.low_pass(cutoff)