数字信号处理Python示例(14)生成锯齿波和三角波

文章目录

  • 前言
  • 一、锯齿波和三角波
  • 二、生成锯齿波和三角波的Python代码
  • 三、仿真结果及分析
  • 写在后面的话


前言

因其独特的数学特性和物理表现,在工程和技术领域扮演着重要角色。这是生成非正弦信号的几个Python示例的其中一个,生成三角波与锯齿波,给出Python代码示例。


一、锯齿波和三角波

锯齿波和三角波都是常见的周期性波形,它们在电子学和信号处理中有着广泛的应用。

锯齿波具有不相等的上升时间和下降时间,这使得波形呈现出明显的非对称性。

三角波可以看作是锯齿波的一种特殊情况,它是对称的,具有相等的上升时间和下降时间。

二、生成锯齿波和三角波的Python代码

下面给出一个生成并绘制锯齿波和三角波的Python代码示例,并给出代码的运行结果。

# 导入必要的库
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt# 生成时间向量,从0到1秒,共1000个点
t = np.linspace(0, 1, 1000)
# 设置锯齿波的频率为5赫兹
f = 5
# 定义不同的宽度参数
width = [0.2, 0.5, 0.8]# 遍历不同的宽度参数,生成并绘制锯齿波
for i in range(len(width)):# 使用scipy.signal.sawtooth生成锯齿波,2*np.pi*f*t是角频率,width[i]是锯齿波的宽度x = signal.sawtooth(2 * np.pi * f * t, width[i])# 创建子图,3行1列,当前索引为i+1plt.subplot(3, 1, i + 1)# 绘制锯齿波plt.plot(t, x)# 设置x轴标签plt.xlabel('时间 (秒)')# 设置y轴标签plt.ylabel('幅度 (V)')# 设置y轴的范围plt.ylim(-2, 2)# 设置子图的标题,显示当前的宽度plt.title('锯齿波 (width={})'.format(width[i]))plt.grid(True)# 调整子图之间的间距,使其紧凑显示,避免标签之间的重叠
plt.tight_layout()
# 显示所有子图
plt.show()

三、仿真结果及分析

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

在这里插入图片描述

结果分析:
仿真结果为三个不同宽度参数的锯齿波图形。每个图形都显示了从0到1秒的时间范围内,频率为5Hz的锯齿波。三个子图分别对应不同的宽度参数:0.2、0.5和0.8。从图中可以看出,随着宽度参数的增加,锯齿波的形状也在变化。当宽度为0.5时,锯齿波波形变成三角波波形。三角波具有均匀的上升和下降时间,而在锯齿波中,上升和下降时间明显不同。

写在后面的话

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

感谢您的阅读!



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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

HBase理论_HBase架构组件介绍

近来有些空闲时间,正好最近也在开发HBase相关内容,借此整理一下学习和对HBase组件的架构的记录和个人感受,付出了老夫不少心血啊,主要介绍的就是HBase的架构设计以及我的拓展内容。内容如有不当或有其他理解 matirx70163.com HB…

前端快速上手(一):HTML

目录 1. HTML 基础 1.1 HTML 标签 1.2 标签的结构关系 2. HTML 常见标签 2.1 标题标签: h1 - h6 2.2 段落标签: p 2.3 换行标签: br 2.4 图片标签: img 2.5 超链接: a 标签 2.5.1 外部链接 2.5.2 内部链接 2.5.3 文件资源链接 2.5.4 空链接 2.6 表格标签 2.7 表单…

QT<30> Qt中使鼠标变为转圈忙状态

前言:当我们在写软件时,在等待阻塞耗时操作时可以将鼠标变为忙状态,并在一段时间后恢复状态,可以用到GxtWaitCursor:Qt下基于RAII的鼠标等待光标类。 一、效果演示 二、详细代码 在项目中添加C文件,命名为…

Shell环境导致编译失败处理方法

在嵌入式Linux系统源码(BSP包)编译时,有可能会如现如下提示: [[: not found 这种提示,一般是Shell环境为dash而不是bash导致,可以通过如下命令来切换: sudo dpkg-reconfigure dash 执行后会…

nginx openresty lua-resty-http 使用的一些问题记录

需求背景 需求是使用 nginx 做一个 https 服务的代理 nginx 收到 http 请求后,需要修改 body 中的某些参数值,然后将修改后的数据发送到目标服务器(https) 本来以为很简单的需求,结果中间出现了不少岔子,这…

Redis的分布式锁分析

系列文章目录 Java项目对接redis,客户端是选Redisson、Lettuce还是Jedis? 由Redis引发的分布式锁探讨 系列文章目录一、什么是分布式锁?二、Redis分布式锁的几种实现1. 简单分布式锁2. Redlock 三、Redis 锁的问题1. 互斥失效2. 时钟偏移 四…

柯桥生活英语口语学习“面坨了”英语怎么表达?

“面坨了”英语怎么表达? 要想搞清楚这个表达,首先,我们要搞明白“坨”是啥意思? 所谓“坨”就是指,面条在汤里泡太久,从而变涨,黏糊凝固在一起的状态。 有一个词汇,很适合用来表达这…

鸿蒙NEXT应用示例:切换图片动画

【引言】 在鸿蒙NEXT应用开发中,实现图片切换动画是一项常见的需求。本文将介绍如何使用鸿蒙应用框架中的组件和动画功能,实现不同类型的图片切换动画效果。 【环境准备】 电脑系统:windows 10 开发工具:DevEco Studio NEXT B…

UAC2.0 speaker——speaker 数据传输

文章目录 麦克风数据传输准备音频数据抓包原始数据频谱分析(FFT)应用麦克风数据传输 上一节中实现了 USB 麦克风设备 本节主要介绍 MCU 麦克风的数据如何传输给上位机。 准备音频数据 MCU 端发送 48KHZ, 16bit 单声道的正弦波数据,正弦波数据的生成参考 音频——C语言生…

【多语言】每种语言打印helloworld,编译为exe会占多大空间

文章目录 背景c语言 53KBc 53KBgo 1.8Mdart 4.6Mpython未测试nodejs未测试rust未测试java未测试cmd || bash || powershell 未测试other 背景 各个版本的helloworld,纯属闲的, 环境如下: - win10 - mingw: gcc8.1.0 - go1.21 - dart3.5.4c语言 53KB gcc main.c -…

Android12的ANR解析

0. 参考: ANR分析 深入理解 Android ANR 触发原理以及信息收集过程 1.ANR的触发分类: ANR分为4类: InputDispatchTimeout:输入事件分发超时5s,包括按键和触摸事件。BroadcastTimeout:比如前台广播在10s内未执行完成&#xff0…

2022-2023全国高校计算机能力挑战赛区域赛python组编程题

mi目录 2022 1. 2. 1. 使用 format() 方法 2. 使用 f-string(Python 3.6 及以上) 2023 1. 2. 3. 4 闽农大宝玲楼 2022 1. 1.某动物研究员给动物园的动物们定了一个园区幸福值,其中园区幸福值的计算为一个园区内“所有动物的活动时…

函数的栈帧

前言: 1.请使用vs2013调试,我使用vs2019被恶心到了,封装严重,不利于观察。 2.函数栈帧:函数就是程序,程序就需要空间来运行,所以我们要为他分配空间,分配的空间用ebp esp维护&…

机器学习基础04

目录 1.朴素贝叶斯-分类 1.1贝叶斯分类理论 1.2条件概率 1.3全概率公式 1.4贝叶斯推断 1.5朴素贝叶斯推断 1.6拉普拉斯平滑系数 1.7API 2.决策树-分类 2.1决策树 2.2基于信息增益的决策树建立 2.2.1信息熵 2.2.2信息增益 2.2.3信息增益决策树建立步骤 2.3基于基…

如何解决IDE添加错误GitHub token后无法连接GitHub的问题

背景 当初学者首次使用IDE(IDEA、Xcode等)对GitHub仓库进行操作(push、fetch)时,会提示输入GitHub账户和token,如果这时候你一不小心输入了错误的token,之后你就叫天天不应叫地地不灵了&#xf…

PPT技巧:如何合并PPT文件?

在工作与学习中,PPT(PowerPoint)演示文稿已成为信息传递、项目汇报、教育培训等领域不可或缺的工具。随着任务的累积,我们往往会积累大量单独的PPT文件,每个文件可能包含特定章节、项目阶段或是不同主题的内容。为了更…

安全见闻1-5

涵盖了编程语言、软件程序类型、操作系统、网络通讯、硬件设备、web前后端、脚本语言、病毒种类、服务器程序、人工智能等基本知识,有助于全面了解计算机科学和网络技术的各个方面。 安全见闻1 1.编程语言简要概述 C语言:面向过程,适用于系统…

k-近邻算法(K-Nearest Neighbors, KNN)详解:机器学习中的经典算法

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

LeetCode297.二叉树的序列化和反序列化

题目要求 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序…

蓝牙5.0模块助力闹钟升级,开启智能生活第一步

随着智能家居产业的快速发展,智能闹钟作为其中一个重要的品类,逐渐从单一的时间提醒功能演变为集音频播放、语音交互、智能控制等多种功能于一体的智能设备。而在这些功能的实现中,蓝牙音频模组扮演着核心角色。 1、蓝牙音频模组的功能概述 …