文章目录
- 前言
- 一、生成非平稳正弦信号的实验设计
- 二、生成非平稳正弦信号的Python代码
- 三、仿真结果及分析
- 写在后面的话
前言
本文继续给出非平稳信号的Python示例,所给出的示例是非平稳正弦信号,在介绍了实验设计之后给出Python代码,最后给出仿真结果并对结果进行了分析。
一、生成非平稳正弦信号的实验设计
本实验涉及生成非平稳正弦信号。特定频率的正弦信号是一个平稳信号,其表达式如下:
如果把不同频率的正弦信号在时间轴上进行拼接,将得到一个非平稳正弦信号。我们对非平稳正弦信号做如下设计:
(1)非平稳正弦信号1由1Hz正弦信号、4Hz正弦信号、和10Hz正弦信号拼接而成;
(2)与非平稳正弦信号1的拼接顺序相反,非平稳正弦信号2由10Hz正弦信号、4Hz正弦信号、和1Hz正弦信号拼接而成。
由于合成信号的频率随时间变化,所以是非平稳的。
下面给出生成这两个非平稳正弦信号Python代码及其运行结果。
二、生成非平稳正弦信号的Python代码
生成非平稳正弦信号的Python代码如下:
# 导入必要的库
import numpy as np # numpy用于数学计算
import matplotlib.pyplot as plt # matplotlib.pyplot用于绘图
# 定义时间轴
t = np.linspace(0, 1, 1000) # 生成从0到1秒的时间点,共1000个点
# 定义正弦波参数
A = 1 # 幅度
f1 = 1 # 信号1的频率(单位:Hz)
f2 = 4 # 信号2的频率(单位:Hz)
f3 = 10 # 信号3的频率(单位:Hz)
phi = 0 # 相位(单位:弧度)
# 生成三个频率的正弦信号(平稳正弦信号):
x1 = A * np.sin(2 * np.pi * f1 * t + phi) # 信号1的频率为1Hz
x2 = A * np.sin(2 * np.pi * f2 * t + phi) # 信号1的频率为4Hz
x3 = A * np.sin(2 * np.pi * f3 * t + phi) # 信号1的频率为10Hz
# 生成合成信号(非平稳正弦信号):
nstsin1 = np.concatenate([x1,x2,x3])
nstsin2 = np.concatenate([x3,x2,x1])
# 重新定义时间轴
t = np.linspace(0,1,300)
# 画图
# 使用subplot创建一个2行1列的子图布局,并选中第一个子图进行绘制
plt.subplot(2, 1, 1)
# 在第一个子图中绘制非平稳正弦信号1
plt.plot(t, nstsin1)
# 设置x轴和y轴的标签
plt.xlabel('Time')
plt.ylabel('Amplitude')
# 设置子图的标题
plt.title('非平稳正弦信号1')
# 使用subplot选中第二个子图进行绘制
plt.subplot(2, 1, 2)
# 在第二个子图中绘制非平稳正弦信号2
plt.plot(t, nstsin2)
# 设置x轴和y轴的标签
plt.xlabel('Time')
plt.ylabel('Amplitude')
# 设置子图的标题
plt.title('非平稳正弦信号2')
# 使用tight_layout自动调整子图参数,避免标签之间的重叠
plt.tight_layout()
# 在所有子图上添加网格线
plt.grid(True)
# 显示绘制的图像
plt.show()
三、仿真结果及分析
以下是执行代码后画图的结果。
结果分析:
- 第一个子图展示了非平稳正弦信号1。这个信号由三个不同频率的正弦波(1Hz、4Hz和10Hz)顺序拼接而成。因此,我们可以看到信号在时间轴上经历了频率的变化。
- 第二个子图展示了非平稳正弦信号2。这个信号同样由三个不同频率的正弦波(10Hz、4Hz和1Hz)顺序拼接而成,但顺序与第一个信号相反。这导致信号在时间轴上的频率变化模式与第一个信号不同。
- 这两个信号都是非平稳的,因为它们的频率随时间变化。信号1和信号2在不同的时刻包含相同的频率成分。
写在后面的话
这是《数字信号处理python示例》系列文章的第11篇。整个系列将使用python语言示例说明数字信号处理的基本原理与工程应用。给出的所有Python程序将努力做到简单且具有说明性。在数字信号处理的理论方面,将尽量避免数学上的推导与证明,而注重其物理意义阐述和工程应用的介绍。
感谢您的阅读!