数字信号处理Python示例(11)生成非平稳正弦信号

文章目录

  • 前言
  • 一、生成非平稳正弦信号的实验设计
  • 二、生成非平稳正弦信号的Python代码
  • 三、仿真结果及分析
  • 写在后面的话


前言

本文继续给出非平稳信号的Python示例,所给出的示例是非平稳正弦信号,在介绍了实验设计之后给出Python代码,最后给出仿真结果并对结果进行了分析。


一、生成非平稳正弦信号的实验设计

本实验涉及生成非平稳正弦信号。特定频率的正弦信号是一个平稳信号,其表达式如下:

在这里插入图片描述

如果把不同频率的正弦信号在时间轴上进行拼接,将得到一个非平稳正弦信号。我们对非平稳正弦信号做如下设计:

(1)非平稳正弦信号1由1Hz正弦信号、4Hz正弦信号、和10Hz正弦信号拼接而成;

(2)与非平稳正弦信号1的拼接顺序相反,非平稳正弦信号2由10Hz正弦信号、4Hz正弦信号、和1Hz正弦信号拼接而成。

由于合成信号的频率随时间变化,所以是非平稳的。

下面给出生成这两个非平稳正弦信号Python代码及其运行结果。

二、生成非平稳正弦信号的Python代码

生成非平稳正弦信号的Python代码如下:

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

# 定义时间轴
t = np.linspace(0, 1, 1000)  # 生成从0到1秒的时间点,共1000个点

# 定义正弦波参数
A = 1       # 幅度
f1 = 1      # 信号1的频率(单位:Hz)
f2 = 4      # 信号2的频率(单位:Hz)
f3 = 10     # 信号3的频率(单位:Hz)
phi = 0     # 相位(单位:弧度)

# 生成三个频率的正弦信号(平稳正弦信号):
x1 = A * np.sin(2 * np.pi * f1 * t + phi)         # 信号1的频率为1Hz
x2 = A * np.sin(2 * np.pi * f2 * t + phi)         # 信号1的频率为4Hz
x3 = A * np.sin(2 * np.pi * f3 * t + phi)         # 信号1的频率为10Hz

# 生成合成信号(非平稳正弦信号):
nstsin1 = np.concatenate([x1,x2,x3])
nstsin2 = np.concatenate([x3,x2,x1])

# 重新定义时间轴
t = np.linspace(0,1,300)

# 画图
# 使用subplot创建一个2行1列的子图布局,并选中第一个子图进行绘制
plt.subplot(2, 1, 1)
# 在第一个子图中绘制非平稳正弦信号1
plt.plot(t, nstsin1)
# 设置x轴和y轴的标签
plt.xlabel('Time')
plt.ylabel('Amplitude')
# 设置子图的标题
plt.title('非平稳正弦信号1')

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

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

三、仿真结果及分析

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

在这里插入图片描述

结果分析:

  1. 第一个子图展示了非平稳正弦信号1。这个信号由三个不同频率的正弦波(1Hz、4Hz和10Hz)顺序拼接而成。因此,我们可以看到信号在时间轴上经历了频率的变化。
  2. 第二个子图展示了非平稳正弦信号2。这个信号同样由三个不同频率的正弦波(10Hz、4Hz和1Hz)顺序拼接而成,但顺序与第一个信号相反。这导致信号在时间轴上的频率变化模式与第一个信号不同。
  3. 这两个信号都是非平稳的,因为它们的频率随时间变化。信号1和信号2在不同的时刻包含相同的频率成分。

写在后面的话

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

感谢您的阅读!



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

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

相关文章

Linux 系统结构

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。 1. linux内核 内核是操作系统的核心,具有很多最基本功能,它…

网络安全之SQL初步注入

一.字符型 平台使用pikachu $name$_GET[name]; ​ $query"select id,email from member where username$name"; 用户输入的数据会被替换到SQL语句中的$name位置 查询1的时候,会展示username1的用户数据,可以测试是否有注入点(闭…

【IEEE/EI会议】第八届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2025)

会议通知 会议时间:2025年4月25-27日 会议地点:中国南京 会议官网:www.aemcse.org 会议简介 第八届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2025)由南京信息工程大学主办,将于2025年4月25日…

华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)

华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目分享——共九套(每套四十题) 岗位——芯片与器件设计工程师 岗位意向——模拟芯片 真题题目分享,完整题目,无答案(共8套) 实习岗位…

Python——数列1/2,2/3,3/4,···,n/(n+1)···的一般项为Xn=n/(n+1),当n—>∞时,判断数列{Xn}是否收敛

没注释的源代码 from sympy import * n symbols(n) s n/(n1) print(数列的极限为:,limit(s,n,oo))

104、Python并发编程:基于事件Event实现多线程间的同步

引言 继续介绍关于多线程同步的实现方式,本文将介绍基于Event的线程同步方式。 本文的主要内容有: 1、什么是Event 2、Event的使用场景 3、Event的代码实例 4、Event与Condition的比较 什么是Event 在Python的多线程编程中,Event是一个…

首次超越扩散模型和非自回归Transformer模型!字节开源RAR:自回归生成最新SOTA!

文章链接:https://arxiv.org/pdf/2411.00776 项目链接:https://yucornetto.github.io/projects/rar.html 代码&模型链接:https://github.com/bytedance/1d-tokenizer 亮点直击 RAR(随机排列自回归训练策略)&#x…

IDEA在编译时: java: 找不到符号符号: 变量 log

一、问题 IDEA在编译的时候报Error:(30, 17) java: 找不到符号符号: 变量 log Error:(30, 17) java: 找不到符号 符号: 变量 log 位置: 类 com.mokerson.rabbitmq.config.RabbitMqConfig 二、解决方案 背景:下载其他同事代码时,第一次运行&#xff0c…

【Hadoop实训】Hive 数据操作②

延续上一篇文章,不懂的宝子们请看以下链接: 【Hadoop实训】Hive 数据操作①-CSDN博客 目录 一、Group by 语句 (1)、计算emp表每个部门的平均工资 (2)、计算emp表每个部门中每个岗位的最高工资 二、Having 语句 (1)、求每个部门的平均工资 (2)、求每个…

nginx的相关命令

nginx的启用和停止有多种方式1、nginx服务的信号控制;2、nginx的命令行控制。 1、信号控制 ps -ef | grep nginx 可以查询跟nginx有关的所有线程。 有一个master进程和worker进程 我们作为管理员,只需要通过master进程发送信号来控制nginx&#xff0c…

【SpringMVC】——Cookie和Session机制

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:实践 1:获取URL中的参数 (1)PathVariable 2&…

31.校园志愿者管理系统(基于springboot和vue的Java项目)

目录 1.系统的受众说明 2.开发技术与环境配置 2.1 SpringBoot框架 2.2Java语言简介 2.3 MySQL环境配置 2.4 MyEclipse环境配置 2.5 mysql数据库介绍 2.6 B/S架构 3.系统分析与设计 3.1 可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3经济可行性 3.4.1 …

Android下的系统调用 (syscall),内联汇编syscall

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 什么是系统调用 (syscall) 系统调用是操作系统提供给应用程序的一组接口,允许用户空间程序与内核进行交互。 在 Android(基于 Linux …

linux-vlan

# VLAN # 1.topo # 2.创建命名空间 ip netns add ns1 ip netns add ns2 ip netns add ns3 # 3.创建veth设备 ip link add ns1-veth0 type veth peer name ns21-veth0 ip link add ns3-veth0 type veth peer name ns23-veth0 # 4.veth设备放入命名空间,启动接口 ip link set n…

浙江大学高等数学研究所已变样

跟我199X年春季到访相比,现改名为“研究院”,说是2017年建立的,刘克峰(1965-,研究黎曼几何,加州洛杉矶大学教授)已退位,励建书(1959-,香港科技大学教授&#…

使用 AMD GPU 上的 Whisper 进行语音转文字

Speech-to-Text on an AMD GPU with Whisper — ROCm Blogs 2024年4月16日,作者:Clint Greene. 介绍 Whisper是由 OpenAI 开发的高级自动语音识别(ASR)系统。它采用了一个简单的编码器-解码器 Transformer 架构,其中…

统信UOS开发环境支持rust

集成了Rust编译器和包管理工具,支持系统级编程、网络应用等多场景,为开发者提供丰富的库支持。 文章目录 一、环境部署1. rust开发环境安装2. rust开发环境配置二、代码示例三、常见问题1. 借用和所有权问题2. 编译器错误和警告一、环境部署 1. rust开发环境安装 rust是一门…

上海沪尚茗居干货分享:码住这4步,投影仪不再吃灰

在追求高品质家庭娱乐的今天,投影仪已成为年轻人打造家庭影院的新宠。然而,面对市场上琳琅满目的投影仪品牌和型号,如何做出明智的选择呢?上海沪尚茗居为您精心整理了一份投影选择4步曲,助您轻松选购心仪的家庭投影仪。…

[NewStarCTF 2023 公开赛道]逃1

代码审计. 这段代码分为三部分:1.war函数,2.GetFlag类,3.GetFlag类对象的定义,waf过滤以及反序列化 . 很经典的的一道题,键值对逃逸,改变cmd的value,去获取flag. 而war就是我们的突破点&#xf…

基于微信小程序的电商平台+LW示例参考

1.项目介绍 系统角色:管理员、普通用户功能模块:管理员(用户管理、商品分类、商品管理、订单管理、系统管理等),普通用户(个人中心、收藏、我的订单、查看商品等)技术选型:SpringBo…