Advertisement

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

阅读量:

文章目录

  • 前言
  • 一、相量叠加原理
  • 二、使用旋转相量生成余弦和正弦波的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)  # 生成时间向量,从0到1秒,共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)显示了一个周期为0.2秒(因为频率为5 Hz)的余弦波。
(2)时间范围从0秒到1秒。
(3)可以看到余弦波的波峰和波谷分别位于振幅的+1和-1。

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

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

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

写在后面的话

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

感谢您的阅读!



全部评论 (0)

还没有任何评论哟~