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

ops/2024/11/13 3:32:47/

文章目录

  • 前言
  • 一、相量叠加原理
  • 二、使用旋转相量生成余弦和正弦波的Python代码
  • 三、仿真结果及分析
  • 写在后面的话


前言

首先给出使用复数指数函数生成正弦函数和余弦函数的数学表达式,然后给出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程序将努力做到简单且具有说明性。在数字信号处理的理论方面,将尽量避免数学上的推导与证明,而注重其物理意义阐述和工程应用的介绍。

感谢您的阅读!




http://www.ppmy.cn/ops/131885.html

相关文章

ChatGPT任务设计和微调策略的优化

目录 ChatGPT任务设计和微调策略的优化 一、GPT-3的基础 二、任务设计和微调策略的优化 三、基于人类反馈的强化学习(RLHF) 举例 完全注意力机制的自回归解码器网络 一、定义与原理 二、举例说明 ChatGPT任务设计和微调策略的优化 ChatGPT确实是从GPT-3开始,通过任…

基于统计方法的语言模型

基于统计方法的语言模型 基于统计方法的语言模型主要是指利用统计学原理和方法来构建的语言模型,这类模型通过分析和学习大量语料库中的语言数据,来预测词、短语或句子出现的概率。 N-gram模型:这是最基础的统计语言模型之一,它基…

解决中文乱码问题:常见原因与解决方案

大家好,我是G探险者。 最近开发遇到了中文乱码问题,在本地环境我导入一个json文件到系统后,中文显示正常,但是我们的项目部署在华为云的容器之后,发现,同样的操作,导入的数据,最终显…

微积分复习笔记 Calculus Volume 1 - 4.7 Applied Optimization Problems

4.7 Applied Optimization Problems - Calculus Volume 1 | OpenStax

一七五、HTML 不同类型的事件及其说明和示例

HTML 事件处理程序是通过 JavaScript 来捕获和响应不同的用户操作、系统事件或浏览器事件。下面是不同类型的事件及其说明和示例。 Window 事件 1. onresize 当浏览器窗口的大小发生变化时触发。 <!DOCTYPE html> <html lang"en"> <head><m…

前端预览word、excel、ppt

看到很多人都是用微软 Office Web Viewer https://view.officeapps.live.com/op/view.aspx?src[文件链接]&#xff0c; 但是我们内网访问不到&#xff0c;不说废话了&#xff0c;上代码 1.预览word、excel&#xff08;vue-office/docx、vue-office/excel&#xff09; //预览…

边缘计算网关在生产设备数据采集中的创新应用-天拓四方

随着工业4.0和智能制造的快速发展&#xff0c;生产设备的数据采集与分析已成为提升生产效率、保证产品质量、优化加工过程的关键环节。传统的数据采集方式&#xff0c;如中心化的数据处理模式&#xff0c;在面对海量数据、实时性要求高的工业场景时&#xff0c;显得力不从心。边…

Android Kotlin Flow 冷流 热流

在 Android 开发中&#xff0c;Flow 是 Kotlin 协程库的一部分&#xff0c;用于处理异步数据流的一个组件。本质上&#xff0c;Flow 是一个能够异步生产多个值的数据流&#xff0c;与 suspend 函数返回单个值的模式相对应。Flow 更类似于 RxJava 中的 Observable&#xff0c;但…