数字信号处理Python示例(3)生成三相正弦信号

文章目录

  • 前言
  • 一、三相正弦信号的表示
  • 二、生成三相正弦信号的Python代码
  • 三、三相正弦信号的图示与分析
  • 四、生成幅度不相等的三相正弦信号的Python代码
  • 五、幅度不相等的三相正弦信号的图示与分析
  • 写在后面的话


前言

首先给出三相正弦信号的数学表达式,并给出生成三相正弦信号的Python代码,对Python的运行结果进行了分析。进一步,更改三相正弦信号的幅度A1、A2和A3的值,生成幅度不相等的三相正弦信号,查看输出波形的变化,并对结果进行分析。


一、三相正弦信号的表示

三相正弦信号的表达式如下:

A相: x_A(t) = A * sin(2 * π * f * t + Φ_A)

B相: x_B(t) = A * sin(2 * π * f * t + Φ_B)

C相: x_C(t) = A * sin(2 * π * f * t + Φ_C)

其中,‘A’ 是幅度,‘f’ 是频率,‘t’ 是时间变量,Φ_A、Φ_B 和 Φ_C 是 A、B 和 C 相的相位角。通常,三相正弦信号的幅度和频率是相等的;三相正弦信号之间的相位差为 120°,即 Φ_B = Φ_A + 120°,Φ_C = Φ_A + 240°。

二、生成三相正弦信号的Python代码

以下是使用 Python生成三相正弦信号的示例代码:

#导入必要的库
import numpy as np                     # numpy用于数学计算
import matplotlib.pyplot as plt       # matplotlib.pyplot用于绘图

# 定义参数
A = 1          # 幅度
f = 5         # 频率 (Hz)
t = np.linspace(0, 1, 1000)  # 时间向量
Phi_A = 0      # A相相位角 ()
Phi_B = Phi_A + 120  # B相相位角 ()
Phi_C = Phi_A + 240  # C相相位角 ()
# 生成三相正弦信号
x_A = A * np.sin(2 * np.pi * f * t + np.deg2rad(Phi_A))
x_B = A * np.sin(2 * np.pi * f * t + np.deg2rad(Phi_B))
x_C = A * np.sin(2 * np.pi * f * t + np.deg2rad(Phi_C))
# 绘制波形
plt.plot(t, x_A, label='Phase A')
plt.plot(t, x_B, label='Phase B')
plt.plot(t, x_C, label='Phase C')
plt.title('Three-Phase Sinusoidal Signal')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.legend()
plt.grid(True)
plt.show()

三、三相正弦信号的图示与分析

上述代码将生成三个相位相差 120° 的正弦波,并在同一图中显示出来,如下所示:

在这里插入图片描述

在这张图中,蓝色、红色和绿色线条分别代表A相、B相和C相的正弦波。从图中可以看到,使用所给Python代码生成的三相正弦信号中,每个信号的幅度是1V,频率是5Hz。信号之间的相位差是120°,它们在时间轴上是如何错开的。

四、生成幅度不相等的三相正弦信号的Python代码

进一步,更改三相正弦信号的幅度A1、A2和A3的值,使它们不再相等,查看输出波形的变化。
以下是更改三相正弦信号幅度的Python示例代码:

#导入必要的库
import numpy as np
import matplotlib.pyplot as plt

#定义参数(更改幅度)
A1 = 1          # A相幅度
A2 = 1.5        # B相幅度
A3 = 0.5        # C相幅度
f = 5           # 频率 (Hz)
t = np.linspace(0, 1, 1000)  # 时间向量
Phi_A = 0      # A相相位角 ()
Phi_B = Phi_A + 120  # B相相位角 ()
Phi_C = Phi_A + 240  # C相相位角 ()

# 生成三相正弦信号
x_A = A1 * np.sin(2 * np.pi * f * t + np.deg2rad(Phi_A))
x_B = A2 * np.sin(2 * np.pi * f * t + np.deg2rad(Phi_B))
x_C = A3 * np.sin(2 * np.pi * f * t + np.deg2rad(Phi_C))

# 绘制波形
plt.plot(t, x_A, label='Phase A')
plt.plot(t, x_B, label='Phase B')
plt.plot(t, x_C, label='Phase C')
plt.title('Three-Phase Sinusoidal Signal')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.legend()
plt.grid(True)
plt.show()

五、幅度不相等的三相正弦信号的图示与分析

运行以上生成幅度不相等的三相正弦信号的Python代码,可以得到以下绘图结果:

在这里插入图片描述

在这张图中,蓝色、红色和绿色线条分别代表A相、B相和C相的正弦波。A相、B相和C相的振幅分别为1、1.5和0.5,频率为5Hz。三个波形之间存在120度的相位差,因此可以看到它们在时间轴上是如何错开的,并且由于振幅不同,每个波形的峰值也不同,这将有助于理解不同幅度对三相系统波形的影响。

如果更改三相正弦信号的幅度A1、A2和A3的值,以下是一些可能的观察结果和评论:

(1)如果 A1、A2 和 A3 的值不相等,那么每个相的波形幅度将不同,这将在输出图中清晰地显示出来。这可以用来模拟实际应用中不同相的负载不平衡情况。

(2)增加某个相的幅度会导致该相的波形在图中更加突出,而减小幅度则会使波形不那么显著。

(3)即使幅度不同,相位差仍然保持 120°,因此三相系统的对称性不会被破坏,但是波形的视觉对比会改变。

(4)这种幅度的变化不会影响波形的频率,因为频率是由正弦函数中的时间变量t和频率参数f决定的,而不是由幅度决定的。

写在后面的话

这是《数字信号处理python示例》系列文章的第3篇。整个系列将使用python编程示例说明数字信号处理的基本原理与工程应用。给出的所有Python程序将努力做到简单且具有说明性。在数字信号处理的理论方法,将注重其实际意义和工程应用方面的介绍,而避免其数学上的推导与证明。
感谢您的阅读。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/907252.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【linux 多进程并发】0302 Linux下多进程模型的网络服务器架构设计,实时响应多客户端请求

0302 多进程网络服务器架构 ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 一、概…

Linux云计算 |【第五阶段】CLOUD-DAY9

主要内容: Metrics资源利用率监控、存储卷管理(临时卷ConfitMap、EmptyDir、持久卷HostPath、NFS(PV/PVC)) 一、Metrics介绍 metrics是一个监控系统资源使用的插件,可以监控Node节点上的CPU、内存的使用率,或Pod对资…

Kafka 判断一个节点是否还活着有那两个条件?

大家好,我是锋哥。今天分享关于【Kafka 判断一个节点是否还活着有那两个条件?】面试题?希望对大家有帮助; Kafka 判断一个节点是否还活着有那两个条件? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Ka…

PyQt5实战——多脚本集合包,UI以及工程布局(二)

个人博客:苏三有春的博客 系列往期: PyQt5实战——多脚本集合包,前言与环境配置(一) 布局 2.1 UI页面布局 整体框架分为分为三个部分,垂直分布。 第一个部分为功能选择按钮(如UTF-8转换&#…

Cpp::set map 的理解与使用(22)

文章目录 前言一、预备知识关联式容器键值对 二、set何为set?set的使用set的特点multiset 三、map何为map?map中的operator[ ]multimap 总结 前言 刚学完二叉搜索树,我们马上来感受一下直接与它相关的两个容器吧! 一、预备知识 关联式容器 在以往的 S…

PostgreSQL 学习笔记:PostgreSQL 主从复制

PostgreSQL 笔记:PostgreSQL 主从复制 博客地址:TMDOG 的博客 在现代应用程序中,数据库的高可用性和扩展性是至关重要的。PostgreSQL 提供了主从复制功能,可以在多个数据库实例之间复制数据,以实现冗余和负载均衡。本…

SQL,力扣题目1225,报告系统状态的连续日期【窗口函数】

一、力扣链接 LeetCode_1225 二、题目描述 表:Failed ----------------------- | Column Name | Type | ----------------------- | fail_date | date | ----------------------- 该表主键为 fail_date (具有唯一值的列)。 该表包含失败任务的天数.表…

晶台施密特触发器光耦KLH11LX,1MHz高传输速率

晶台推出KLH11LX系列由一个砷化镓红外发光二极管和一个高速集成电路检测器组成,该输出检测器包含了一个施密特触发器,利用其回滞特性,便于脉冲整形,提高抗噪性能。 功能图Functional Diagram 产品特点Product Features •高传输…

Mac在Typora配置PicGo图床,以github为例

Mac配置PicGo图床 0.准备阶段:下载PicGo https://picgo.github.io/PicGo-Doc/zh/guide/ 根据这个链接选择自己的安装方式 1.PicGo已损坏,无法打开 解决方法 打开iTerm,把sudo xattr -d com.apple.quarantine 输入命令行 然后把软件拖入命令行 sudo xa…

「Mac畅玩鸿蒙与硬件23」鸿蒙UI组件篇13 - 自定义组件的创建与使用

自定义组件可以帮助开发者实现复用性强、逻辑清晰的界面模块。通过自定义组件,鸿蒙应用能够提高代码的可维护性,并简化复杂布局的构建。本篇将介绍如何创建自定义组件,如何向组件传递数据,以及如何在不同页面间复用这些组件。 关键词 自定义组件复用组件属性传递组件通信组…

redis模板的应用:自定义redisTemplate序列化规则 (RedisTemplate和StringRedisTemplate)

文章目录 引言I 基础知识redis对key和value使用序列化方式RedisTemplate<Object, Object>自定义redisTemplate序列化规则RedisTemplate<String, String>II 存储自定义对象redisTemplate存储自定义对象StringRedisTemplate存储自定义对象引言 StringRedisTemplate只…

二叉苹果树

AcWing 1074. 二叉苹果树【有依赖背包DP】 - AcWing 问题描述 在一棵有权无向树中&#xff0c;从某个节点&#xff08;这里假设为节点 1&#xff09;出发&#xff0c;遍历树的子节点&#xff0c;每经过一条边会获得对应的权重值。在访问节点数的限制下&#xff08;即体积限制…

Linux基础命令(八) 之 alias ,history,stat,type,特殊符号及命令行快捷键

目录 一&#xff0c;命令别名 alias 常见用法 二&#xff0c;命令历史 history 参数及其作用 常见用法 三.显示文件或文件系统的详细信息 stat 参数及其作用 常见用法 四&#xff0c;显示命令的类型 type 参数及其作用 常见用法 五&#xff0c;特殊符号及命令行快捷…

省级-知识产权保护指数(2012-2022年)

省级知识产权保护指数&#xff08;以下简称“指数”&#xff09;正是衡量各省份在知识产权保护方面表现的一个综合指标&#xff0c;它涵盖了立法、执法、审查和监督等多个维度&#xff0c;全面反映了各省份在知识产权保护方面的综合实力。 2012年-2022年省级-知识产权保护指数…

GraphQL 与 Elasticsearch 相遇:使用 Hasura DDN 构建可扩展、支持 AI 的应用程序

作者&#xff1a;来自 Elastic Praveen Durairaju GraphQL 提供了一种高效且灵活的数据查询方式。本博客将解释 Hasura DDN 如何与 Elasticsearch 配合使用&#xff0c;以实现高性能和元数据驱动的数据访问。 此示例的代码和设置可在此 GitHub 存储库 - elasticsearch-subgraph…

filebeat+elasticsearch+kibana日志分析

1 默认配置 1.1 filebeat filebeat-7.17.yml,从网关中下载k8s的配置&#xff0c;指定es和kibana的配置 通过kibana查询可以查询到日志了&#xff0c;但此时还不知道具体怎么用。 1.2 kibana 在Discover中创建索引格式&#xff1a;filebeat-*&#xff0c;得到如下图&#xf…

Rust 力扣 - 2090. 半径为 k 的子数组平均值

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 半径为 k 的子数组平均值 等价于 子数组长度为2 * k 1的总和 除于 2 * k 1 我们遍历长度为2 * k 1的窗口&#xff0c;我们只需要记录窗口内的平均值即可 题解代码 impl Solution {pub fn get_averages(num…

uniapp的video视频属性打包app后层级过高

问题&#xff1a;在使用uniapp开发APP时&#xff0c;使用video标签显示视频发现H5可以正常展示&#xff0c;但是打包到APP后&#xff0c;它的层级过高&#xff0c;把底部导航都盖住了。 官网说明&#xff1a;uni-app官网 官网给了cover-view组件或plus.nativeObj.view、subNVue…

浅谈UI自动化

⭐️前言⭐️ 本篇文章围绕UI自动化来展开&#xff0c;主要内容包括什么是UI自动化&#xff0c;常用的UI自动化框架&#xff0c;UI自动化原理等。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题…

Vue3+Data-V实现可视化大屏页面布局

目录 一、前言 二、环境准备 1.Vue3安装npm create vuelatest 2.Data-V配置 项目Data-v安装 main.js中注册Data-v到全局 ​编辑可使用按需引入 3.测试 三、导航栏路由跳转配置 1.子组件mainNav组件准备 2.父组件准备导航栏参数传递 3.子组件接收父组件参数 4.导航…