自学内容网 自学内容网

数字信号处理Python示例(8)使用复数指数函数生成正弦函数和余弦函数


前言

首先给出使用复数指数函数生成正弦函数和余弦函数的数学表达式,然后给出Python仿真代码,并绘制了生成的函数图形,最后给出了仿真分析。

一、相量叠加原理

由欧拉公式可以知道,正弦信号可以通过两个相反方向旋转的相量(phasors)生成,这种方法通常被称为相量叠加原理。数学上表达为:

在这里插入图片描述

二、使用旋转相量生成余弦和正弦波的Python代码

使用旋转相量生成余弦和正弦波的Python代码如下:

# 导入numpy和matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt

# Step 1: 设定参数
f = 5  # 频率为5 Hz
omega = 2 * np.pi * f  # 角频率 ω = 2πf
t = np.linspace(0, 1, 1000)  # 生成时间向量,从01秒,共1000个点

# Step 2: 生成两个复数指数信号(旋转相量)
x1 = np.exp(1j * omega * t)  # x_1(t) = e^(jΩt)
x2 = np.exp(-1j * omega * t)  # x_2(t) = e^(-jΩt)

#Step 3: 生成余弦函数和正弦函数
x_cos=(x1 + x2) / 2
x_sin=np.real((x1 - x2) / (2j))

#Step 4: 画图
plt.subplot(2, 1, 1)
# 在第一个子图中绘制余弦函数
plt.plot(t, x_cos)
# 设置x轴和y轴的标签
plt.xlabel('Time')
plt.ylabel('Amplitude')
# 设置子图的标题
plt.title('余弦函数')

# 使用subplot选中第二个子图进行绘制
plt.subplot(2, 1, 2)
# 在第二个子图中绘制正弦函数
plt.plot(t, x_sin)
# 设置x轴和y轴的标签
plt.xlabel('Time')
plt.ylabel('Amplitude')
# 设置子图的标题
plt.title('正弦函数')

# 使用tight_layout自动调整子图参数,避免标签之间的重叠
plt.tight_layout()  
# 在所有子图上添加网格线
plt.grid(True)
# 显示绘制的图像
plt.show()

三、仿真结果及分析

以下是执行代码后画图的结果。

在这里插入图片描述

第一个子图绘制了余弦函数,第二个子图绘制了正弦函数。以下是图形的详细描述:

  1. 余弦函数子图
    (1)显示了一个周期为0.2秒(因为频率为5 Hz)的余弦波。
    (2)时间范围从0秒到1秒。
    (3)可以看到余弦波的波峰和波谷分别位于振幅的+1和-1。

  2. 正弦函数子图
    (1)显示了一个周期同样为0.2秒的正弦波。
    (2)时间范围也是从0秒到1秒。
    (3)正弦波的波峰和波谷也分别位于振幅的+1和-1。

对比两个子图,也可以看到,正弦波和余弦波之间有一个90°的相位差。

仿真与绘图结果验证了欧拉公式,展示了如何通过复数指数信号来生成余弦和正弦函数。

写在后面的话

这是《数字信号处理python示例》系列文章的第8篇。整个系列将使用python语言示例说明数字信号处理的基本原理与工程应用。给出的所有Python程序将努力做到简单且具有说明性。在数字信号处理的理论方面,将尽量避免数学上的推导与证明,而注重其物理意义阐述和工程应用的介绍。

感谢您的阅读!




原文地址:https://blog.csdn.net/weixin_45333185/article/details/143609764

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!