导入
如何生成一个基本的正弦波
了解如何构造一个简单的正弦波。
掌握数字信号处理(DSP)工具箱的第一步是从一个基本的正弦信号开始。
正弦波
作为时间 的函数,一个实数正弦波表示为:
该信号由三个参数决定:
- 幅度
- 频率 (单位:每秒周期数),或角频率 (单位:弧度/秒),对应的时间周期为 或
- 相位
通常使用余弦波是出于惯例,因为正弦波本质上也是余弦波的一种特殊相位形式。
下面展示了一个基础正弦波,其参数为 、、:
...
一个余弦信号
示例
让我们学习如何生成基本信号。
1import numpy as np 2import matplotlib.pyplot as pl 3 4figWidth = 20 5figHeight = 10 6 7# 生成一个余弦信号 8 9fs = 1000 # 采样率 10Ts = 1/fs # 采样间隔 11 12f = 10 13T = 1/f 14A = 1 15phi = 0 16 17nCycles = 2 # 修改此值可改变周期数量 18 19t = np.arange(0, nCycles*T, Ts) 20 21s = A*np.cos(2*np.pi*f*t + phi) 22 23 24# 绘制信号 25 26fig, ax = pl.subplots(1, figsize=(figWidth, figHeight)) 27 28ax.plot(t, s, linewidth=2, color='r') 29 30ax.set_xlim(0, nCycles*T) 31ax.set_xticks(np.linspace(0, nCycles*T, 5)) 32ax.set_ylim(-A, A) 33ax.set_yticks(np.linspace(-A, A, 5)) 34ax.tick_params(labelsize=18) 35 36# 隐藏右侧和上侧坐标轴线 37ax.spines['right'].set_visible(False) 38ax.spines['top'].set_visible(False) 39 40ax.set_title("一个连续时间正弦波", fontsize=18) 41ax.set_xlabel("t", fontsize=18) 42ax.set_ylabel("$x(t)$", fontsize=18) 43ax.grid() 44 45# 保存图像 46pl.savefig('output/cosine.png')
运行上述代码后,可以看到一个余弦波,其幅度、周期和相位由代码中高亮的部分定义。尝试修改几个参数,观察图形的变化。
幅度和频率(或周期)对波形的影响直观且明显。然而,相位——它与信号的时间偏移相关——是这里最难以理解的概念。