返回顶部
首页 > 资讯 > 后端开发 > Python >基于Python的频谱分析(一)
  • 903
分享到

基于Python的频谱分析(一)

频谱Python 2023-01-30 22:01:52 903人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

1、傅里叶变换  傅里叶变换是信号领域沟通时域和频域的桥梁,在频域里可以更方便的进行一些分析。傅里叶主要针对的是平稳信号的频率特性分析,简单说就是具有一定周期性的信号,因为傅里叶变换采取的是有限取样的方式,所以对于取样长度和取样对象有着一

1、傅里叶变换
  傅里叶变换是信号领域沟通时域和频域的桥梁,在频域里可以更方便的进行一些分析。傅里叶主要针对的是平稳信号的频率特性分析,简单说就是具有一定周期性的信号,因为傅里叶变换采取的是有限取样的方式,所以对于取样长度和取样对象有着一定的要求。

2、基于python的频谱分析
  将时域信号通过FFT转换为频域信号之后,将其各个频率分量的幅值绘制成图,可以很直观地观察信号的频谱。
   具体分析见代码注释。

import numpy as np#导入一个数据处理模块
import pylab as pl#导入一个绘图模块,matplotlib下的模块

sampling_rate = 8000#采样频率为8000Hz
fft_size = 512 #FFT处理的取样长度
t = np.arange(0, 1.0, 1.0/sampling_rate)#np.arange(起点,终点,间隔)产生1s长的取样时间
x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t)#两个正弦波叠加,156.25HZ和234.375HZ
# N点FFT进行精确频谱分析的要求是N个取样点包含整数个取样对象的波形。因此N点FFT能够完美计算频谱对取样对象的要求是n*Fs/N(n*采样频率/FFT长度),
# 因此对8KHZ和512点而言,完美采样对象的周期最小要求是8000/512=15.625HZ,所以156.25的n为10,234.375的n为15。
xs = x[:fft_size]# 从波形数据中取样fft_size个点进行运算
xf = np.fft.rfft(xs)/fft_size# 利用np.fft.rfft()进行FFT计算,rfft()是为了更方便对实数信号进行变换,由公式可知/fft_size为了正确显示波形能量
# rfft函数的返回值是N/2+1个复数,分别表示从0(Hz)到sampling_rate/2(Hz)的分。
#于是可以通过下面的np.linspace计算出返回值中每个下标对应的真正的频率:
freqs = np.linspace(0, sampling_rate/2, fft_size/2+1)
# np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
#在指定的间隔内返回均匀间隔的数字
xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100))
#最后我们计算每个频率分量的幅值,并通过 20*np.log10()将其转换为以db单位的值。为了防止0幅值的成分造成log10无法计算,我们调用np.clip对xf的幅值进行上下限处理

#绘图显示结果
pl.figure(figsize=(8,4))
pl.subplot(211)
pl.plot(t[:fft_size], xs)
pl.xlabel(u"Time(S)")
pl.title(u"156.25Hz and 234.375Hz WaveFORM And Freq")
pl.subplot(212)
pl.plot(freqs, xfp)
pl.xlabel(u"Freq(Hz)")
pl.subplots_adjust(hspace=0.4)
pl.show()

 

3、绘图结果显示

如果你放大其频谱中的两个峰值的部分的话,可以看到其值分别为:

>>>xfp[10]
-6.0205999132796251
>>>xfp[15]
-9.6432746655328714e-16

 

即156.25Hz的成分为-6dB, 而234.375Hz的成分为0dB,与波形的计算公式中的各个分量的能量(振幅值/2)符合。
---------------------
作者:赵至柔
来源:CSDN
原文:https://blog.csdn.net/qq_39516859/article/details/79794549
版权声明:本文为博主原创文章,转载请附上博文链接!

--结束END--

本文标题: 基于Python的频谱分析(一)

本文链接: https://lsjlt.com/news/180250.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 基于Python的频谱分析(一)
    1、傅里叶变换  傅里叶变换是信号领域沟通时域和频域的桥梁,在频域里可以更方便的进行一些分析。傅里叶主要针对的是平稳信号的频率特性分析,简单说就是具有一定周期性的信号,因为傅里叶变换采取的是有限取样的方式,所以对于取样长度和取样对象有着一...
    99+
    2023-01-30
    频谱 Python
  • python基于tkinter制作m3u8视频下载工具的示例分析
    这篇文章给大家分享的是有关python基于tkinter制作m3u8视频下载工具的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语...
    99+
    2023-06-14
  • 基于Python实现视频分辨率转换
    目录前言环境依赖代码验证一下前言 本文提供将视频调整分辨率的Python代码,一如既往的实用主义。 环境依赖 ffmpeg环境安装,可以参考文章:windows ffmpeg安装部署...
    99+
    2024-04-02
  • Python中利用FFT(快速傅里叶变换)进行频谱分析
    本文将从实例的角度出发讲解fft函数的基本使用,不包含复杂的理论推导。 一、基本条件 要对一个信号进行频谱分析,首先需要知道几个基本条件。 采样频率fs信号长度N(信号的点数) 采样频率fs:根据采样定理可知,采样频率应当大于等于被测...
    99+
    2023-09-09
    python numpy 开发语言 傅里叶分析
  • 基于Matlab实现数字音频分析处理系统
    目录一、语音处理简介1语音信号的特点2语音信号的采集3语音信号分析技术4语音信号的时域分析5语音信号的频域分析二、部分源代码三、运行结果一、语音处理简介 1 语音信号的特点 通过对大...
    99+
    2024-04-02
  • python基于tkinter写的画图项目分析
    本篇内容介绍了“python基于tkinter写的画图项目分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!# coding=ut...
    99+
    2023-06-22
  • 基于Python如何实现视频分辨率转换
    这篇文章主要为大家展示了“基于Python如何实现视频分辨率转换”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于Python如何实现视频分辨率转换”这篇文章吧。环境依赖ffmpeg环境安装,可...
    99+
    2023-06-22
  • 基于require.js的示例分析
    这篇文章将为大家详细讲解有关基于require.js的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.为什么使用require.js使用之前,我的页面的js是这...
    99+
    2024-04-02
  • python如何绘制音频的语谱图
    这篇文章主要介绍python如何绘制音频的语谱图,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文介绍如何通过python的pyplot来绘制音频的语谱图。语谱图,也就是语音频谱图,也叫时频图,横坐标是时间,纵坐标是...
    99+
    2023-06-19
  • Python基于jieba分词实现snownlp情感分析
    情感分析(sentiment analysis)是2018年公布的计算机科学技术名词。 它可以根据文本内容判断出所代表的含义是积极的还是负面的,也可以用来分析文本中的意思是褒义还是贬...
    99+
    2023-01-30
    Python snownlp情感分析 Python 情感分析 Python snownlp
  • Python与AzureVideoAnalytics:基于多源视频的实时
    作者:禅与计算机程序设计艺术 近年来,随着人工智能、云计算、物联网等技术的迅速发展,视频流媒体的应用越来越广泛。而在实际场景中,需要对不同来源的视频进行融合,获取更加丰富和生动的画面效果。Azure...
    99+
    2023-09-20
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
  • 基于python实现去除视频的水印
    我们再搬运视频的时候常常会遇到视频有水印的问题 如下 下面就通过python来实现对视频水印的去除 在pycharm新建一个项目,创建image,video目录其他不用 必要条件 在终端下载相关依赖包 pip install moviep...
    99+
    2023-09-14
    python 音视频 numpy
  • 基于ArrayList源码分析
    本篇内容主要讲解“基于ArrayList源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于ArrayList源码分析”吧!ArrrayList是Java中经常被用到的集合,弄清楚它的底层...
    99+
    2023-07-05
  • 如何基于Matlab实现数字音频分析处理系统
    这篇文章主要介绍了如何基于Matlab实现数字音频分析处理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、语音处理简介1 语音信号的特点通过对大量语音信号的观察和分析发...
    99+
    2023-06-29
  • 漂亮的频谱谐波图必备 Python + Pygame
    导读这个Python + Pygame程序绘制了4条衰减正弦波的轨迹,每条轴2条,彩虹色。 它会生成一系列随机谐波图(harmonographs)。harmonograph是通常在科学博物馆中看到的机械设备,它有两个或多个带有笔的摆锤,可以...
    99+
    2023-06-02
  • 基于Python实现股票收益率分析
    目录前言案例详情编程任务编程提示参考代码任务1的代码任务2的代码任务3的代码前言 金融行业的Python学习,不同于IT系统开发,我们并不需要达到程序员的水平。然而,学会Python...
    99+
    2024-04-02
  • 聚星C#数字信号处理工具包频谱分析的用法
    目录聚星C#数字信号处理工具包频谱分析JXI C# DSP Tools, Spectrum AnalysisC# 数字信号处理工具包 DSP-Core 重采样(Resample)输出...
    99+
    2023-02-26
    C#频谱分析 C#数字信号处理 C#工具包
  • 基于python中mysql复制工具的示例分析
    这篇文章主要为大家展示了“基于python中mysql复制工具的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于python中mysql复制工具的示例...
    99+
    2024-04-02
  • Python基于Pytorch特征图提取的示例分析
    这篇文章给大家分享的是有关Python基于Pytorch特征图提取的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。简述为了方便理解卷积神经网络的运行过程,需要对卷积神经网络的运行结果进行可视化的展示。大致...
    99+
    2023-06-29
  • Python 数据分析的科学:基于证据的见解
    数据分析已成为当今商业和研究中至关重要的工具。Python 因其易用性、强大的库生态系统和广泛的社区支持,已成为数据科学家和分析师的首选语言。基于证据的见解是数据分析的核心,而 Python 提供了一套全面的工具来提取、清理、探索和建模数...
    99+
    2024-03-12
    引言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作