【Python】Python 时域到频域的变换方法

2023-09-21 17:15:50

Python 时域到频域的变换方法

时域到频域的变换方法是信号处理中一个非常重要的概念,它将时域上的信号转换为频域上的信号,方便我们对信号频率特性的分析和处理。

一、傅里叶变换

傅里叶变换是时域到频域转换的一种常用方法,它将时域上的信号转换成一个连续的复数函数,表示信号在各个频率上的成分。在具体的实现中,可以使用Python中的numpy.fft库来进行傅里叶变换:

import numpy as np

t = np.linspace(-1, 1, 200)
y = np.sin(2 * np.pi * 10 * t) + 2 * np.sin(2 * np.pi * 20 * t)
y_fft = np.fft.fft(y)

绘制频谱图

import matplotlib.pyplot as plt

plt.plot(np.abs(y_fft))
plt.show()
上述代码实现了对一个由10Hz和20Hz正弦波构成的信号进行傅里叶变换,并绘制了其频谱图。使用numpy.fft库的fft函数可以对信号进行变换,而np.abs则可以得到其幅值,即频谱图。

二、快速傅里叶变换

快速傅里叶变换是一种高效的傅里叶变换算法,它能够大幅度减少计算时间,广泛应用于信号处理领域。下面是使用Python中numpy.fft库实现的快速傅里叶变换:

import numpy as np

t = np.linspace(-1, 1, 200)
y = np.sin(2 * np.pi * 10 * t) + 2 * np.sin(2 * np.pi * 20 * t)
y_fft = np.fft.fft(y)

绘制频谱图

import matplotlib.pyplot as plt

plt.plot(np.abs(y_fft))
plt.show()
与傅里叶变换的实现类似,使用numpy.fft库的fft函数可以进行快速傅里叶变换。

三、小波变换

小波变换也是一种常用的时域到频域变换方法,它与傅里叶变换不同的是,它能够捕捉信号中的瞬态特征,而不仅仅是频域上的信息。下面是使用Python中pywt库实现的小波变换:

import pywt

t = np.linspace(-1, 1, 200)
y = np.sin(2 * np.pi * 10 * t) + 2 * np.sin(2 * np.pi * 20 * t)
(cA, cD) = pywt.dwt(y, ‘db1’)
y_wav = pywt.idwt(cA, cD, ‘db1’)

绘制小波变换后的信号与原信号对比图

import matplotlib.pyplot as plt

plt.subplot(2, 1, 1)
plt.plot(y)
plt.subplot(2, 1, 2)
plt.plot(y_wav)
plt.show()
上述代码实现了对一个由10Hz和20Hz正弦波构成的信号进行小波变换,并绘制了小波变换后的信号与原信号的对比图。使用pywt库的dwt和idwt函数可以对信号进行小波变换,其中’db1’是小波基名称。

四、总结

时域到频域的变换方法有很多种,傅里叶变换和快速傅里叶变换是最常用的方法,而小波变换则能够更好地捕捉信号的瞬态特征。在具体的实现中,可以使用Python中的numpy.fft和pywt库来进行相应的变换。

更多推荐

webpack:详解代码分离以及插件SplitChunksPlugin的使用

文章目录背景入口起点分离基本使用防重复SplitChunksPlugin插件分离背景基本使用splitChunks.chunkssplitChunks.minChunkssplitChunks.minSizesplitChunks.maxSizesplitChunks.namesplitChunks.cacheGrou

AI绘图提示词Stable Diffusion Prompt 笔记

基础提示词分为正向提示词(positiveprompt)和反向提示词(negativeprompt),用来告诉AI哪些需要,哪些不需要词缀的权重默认值都是1,从左到右依次减弱,权重会影响画面生成结果。AI会依照概率来选择性执行,如提示词之间有冲突,AI会根据权重确定的概率来随机选择执行哪个提示词。生成图片的大小会影响P

聚观早报 | 飞书签约韵达速递;蔚来首颗自研芯片“杨戬”量产

【聚观365】9月22日消息飞书签约韵达速递蔚来首颗自研芯片“杨戬”10月量产靳玉志接任华为车BUCEO亚马逊发布全新Alexa语音助手OpenAI推出图像生成器DALL-E3飞书签约韵达速递近日,国内物流服务公司韵达快递宣布全员上飞书。飞书解决方案副总裁何斌表示,“飞书将助力韵达快递进行全方面的数字化变革,包括:全场

MySQL数据库操作以及sql语句总结

一、MySQL数据库知识点补充一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的数据类型、约束(重点,后面要用)数据类型可以通过查看帮助文档查阅所有支持的数据类型:mysql--help使用数据

解决Vue项目中的“Cannot find module ‘vue-template-compiler‘”错误

1.问题描述在Vue项目中,当我们使用Vue的单文件组件(.vue文件)时,有时会遇到以下错误信息:ERROR:Cannotfindmodule'vue-template-compiler'这个错误通常发生在我们使用Vue的版本不匹配或者缺少必要的依赖模块时。本文将介绍如何解决这个问题。2.解决方法方法一:安装vue-

2023中国智能产业高峰论坛丨文档图像大模型的思考与探索

#前言随着人工智能技术的不断发展,尤其是深度学习技术的广泛应用,多模态数据处理和大模型训练已成为当下研究的热点之一,这些技术也为文档图像智能处理和分析领域带来了新的发展机遇。近期,2023第十二届中国智能产业高峰论坛(CIIS2023)在江西南昌开幕,政企研学各界学者专家同台交流,在成果分享、观点碰撞、经验互鉴中,共促

pytest一些常见的插件

Pytest拥有丰富的插件架构,超过800个以上的外部插件和活跃的社区,在PyPI项目中以“pytest-*”为标识。本篇将列举github标星超过两百的一些插件进行实战演示。插件库地址:http://plugincompat.herokuapp.com/1、pytest-html:用于生成HTML报告一次完整的测试,

GRACE球谐数据滤波处理(利用matlab实现GRACE月水储量的二维傅里叶变化滤波)

GRACE的全球重力场产品以球谐系数(SHCs)的形式表现出明显的南北条带噪声问题,这种噪声被认为来源于它的极轨道、缺乏横向敏感性以及采样频率引起的混叠效应。空间滤波器的例子包括各向同性高斯滤波器(Wahretal.,1998)及其非各向同性变体(Hanetal.,2005;Zhangetal.,2009),维纳滤波器

Springboot 集成WebSocket作为客户端,含重连接功能,开箱即用

使用演示publicstaticvoidmain(String[]args)throwsException{//初始化socket客户端BaseWebSocketClientsocketClient=BaseWebSocketClient.init("传入链接");//发送消息socketClient.sendMess

电磁散射模拟的体积积分方程求解器:使用MATLAB中的ceviche_challenges模块进行光子器件逆向设计详解

第一部分:电磁散射模拟与体积积分方程求解器简介在现代光子学领域,电磁散射模拟是一个核心技术,它涉及到光子器件的设计、分析和优化。为了准确地模拟电磁波在复杂介质中的传播,研究者们开发了多种数值方法。其中,体积积分方程求解器是一个强大的工具,它可以为复杂的光子器件提供精确的模拟结果。MATLAB,作为一个广泛使用的数值计算

讯飞星火认知大模型Java后端接口

文章目录1.免费申请星火大模型套餐2.Java后端接口说明2.1项目地址2.2项目说明2.3项目结构2.4项目代码🍀maven依赖🍀application.yml配置文件🍀config包📌XfXhConfig🍀dto包📌MsgDTO📌RequestDTO📌ResponseDTO🍀listener包📌

热文推荐