首页 > 编程语言 >时频分析—连续小波变换python代码实现

时频分析—连续小波变换python代码实现

时间:2024-12-07 12:58:27浏览次数:5  
标签:plt scal python 变换 时频 fs wavelet np total

连续小波变换python代码实现:

import matplotlib.pyplot as plt
import numpy as np
import pywt


def MyCWT(y, fs, wavelet='cmor2-5', total_scal=512):
    '''
    连续小波变换CWT
    :param y: 信号,nnumpy, (n,)
    :param fs: 采样频率
    :param wavelet: 复小波cmorB-C,推荐‘cmor3-3’,‘cmor3-5’
    :param total_scal: 尺度
    :return:
        t -- 时间轴
        f -- 频率轴
        z -- 幅值轴
    Notes:
        total_scal越大,频率分辨率越高,但是计算消耗越大,一般推荐256/512
    '''
    N = len(y)
    t = np.linspace(0, (N-1)/fs, N) # 时间轴
    fc = pywt.central_frequency(wavelet)  # 小波中心频率
    cparam = 2. * fc * total_scal
    scales = cparam / np.arange(1, total_scal + 1) # 各个尺度,用于获得频率序列
    coefficients, f = pywt.cwt(y, scales=scales, wavelet=wavelet, sampling_period=1.0 / fs)
    z = np.abs(coefficients)
    return t, f, z


if __name__ == "__main__":
    fs = 12800  # 采样频率
    f0 = 60  # 信号基频
    f1 = 90  # 信号基频
    t_total = 0.32  # 信号持续时间

    t = np.linspace(0, t_total, int(fs * t_total), endpoint=False)
    signal = np.sin(2 * np.pi * f0 * t) + np.sin(2 * np.pi * f1 * t)

    t, f, z = MyCWT(signal, fs)
    plt.figure(figsize=(6, 4), constrained_layout=True)
    plt.contourf(t, f, z, cmap='jet')
    plt.xlabel("Time (s)")
    plt.ylabel("Frequency (Hz)")
    plt.ylim(0, 500)  # 限制频率范围
    plt.colorbar(label="Magnitude")
    plt.show()

结果如下:
在这里插入图片描述

标签:plt,scal,python,变换,时频,fs,wavelet,np,total
From: https://blog.csdn.net/qq_45454258/article/details/144301349

相关文章

  • Python+OpenCV系列:绘制图形和文字
    绘制图形和文字1.基本绘图函数简介2.绘制示例代码2.1创建一个空白图像2.2绘制基本图形1.绘制直线2.绘制矩形3.绘制圆4.绘制椭圆2.3添加文字3.显示与保存图像4.扩展应用总结在图像处理领域,绘制基本图形和文字是一个常见需求,例如标记对象、绘制边界框或添......
  • 基于微信平台健身小助手小程序的设计与实现【java或python】-计算机毕业设计源码+LW文
    选题的意义与目的网络和科技的进步以及人们生活条件的提高都让微信小程序越来越平民化,深入日常生活中。我国非常强调体育以及健身,需要不断的让更多人参与到健身中,因为健身不仅可以锻炼身体,也能锻炼意志,有了健康的身体,就可以好好的努力工作,努力学习,为国家做出应有的贡献。有一......
  • Python Tkinter制作恶作剧小程序(可以发给朋友)
    跟大家分享了游戏和教程,也该来点好玩的了,今天我就来和大家分享一个让朋友无法使用电脑的程序。这个程序运行之后,你会发现电脑的屏幕被蒙上了一层白布,除了ALT+F4以外都关不掉它,如果点击电脑屏幕还会弹出:程序:importtkinterastkfromtkinterimportmessageboxdefshow_......
  • [oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
    [词根溯源]locals_现在都定义了哪些变量_地址_pdb_调试中观察变量回忆上次内容上次我们了解了变量赋值连等赋值解包赋值 所有对象变量variable模块module函数function类class都有自己所属的类型也都在内存中引用唯一位置......
  • Python从0到100(七十六):计算机视觉-直方图和自适应直方图均衡化(文末送书)
    前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知......
  • python毕设 图书馆管理信息系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于图书馆管理信息系统的研究,现有研究多集中在传统管理模式或者基于特定技术框架的实现方面12。专门针对使用Python实现功能全面(包含......
  • 使用Python实现智能食品消费趋势预测的深度学习模型
    在现代食品行业中,预测消费趋势对于库存管理、生产计划和市场营销策略的制定至关重要。通过深度学习技术,可以有效地分析和预测食品消费趋势,从而帮助企业做出数据驱动的决策。本文将详细介绍如何使用Python构建一个智能食品消费趋势预测的深度学习模型,并通过具体代码示例展示......
  • Python 操作 MySQL 数据库
    Python标准数据库接口为PythonDB-API,PythonDB-API为开发人员提供了数据库应用编程接口。Python数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFlymSQLMySQLPostgreSQLMicrosoftSQLServer2000InformixInterbaseOracleSybase你可以访问Python数据库接......
  • 深入傅里叶级数与傅里叶变换:从基础到应用
            傅里叶分析是数学、物理和工程领域的一项基础工具,其核心思想是将复杂的信号或函数分解为一系列简单的正弦和余弦函数的叠加。本文将带你从傅里叶级数入门,逐步深入傅里叶变换的概念及其应用场景。一、傅里叶级数:周期信号的分解 1.什么是傅里叶级数?   ......
  • 用一篇博文带你了解c++和python两种编程语言到底有什么区别?
      成长路上不孤单......