0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Python的numpy进行的数字信号的频谱分析详解

dKBf_eetop_1 2017-12-12 14:16 次阅读

Python 是目前的热门语言,一直觉得掌握一门编程语言对作为搞技术的来说还是很有必要的,结合工作中能用到的一些数据处理和分析的内容,觉得从数据分析入手,争取能够掌握Python在数据处理领域的一些应用。下面是基于Python的numpy进行的数字信号的频谱分析介绍

一、傅里叶变换

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

二、基于Python的频谱分析

# _*_ coding:utf-8 _*_

import numpy as np #导入一个数据处理的模块

import pylab as pl #导入一个绘图模块,matplotlib下的模块

sampling_rate = 8000 ##取样频率

fft_size =512 #FFT处理的取样长度

t = np.arange(0,1.1,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,因此如上面简单

#的介绍FFT对于取样时间有要求,

#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,1e1000))

#最后我们计算每个频率分量的幅值,并通过 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"时间(秒)")

pl.title(u"The Wave and Spectrum 156.25Hz234.375Hz")

pl.subplot(212)

pl.plot(freqs, xfp)

pl.xlabel(u"Hz")

pl.subplots_adjust(hspace=0.4)

pl.show()

#绘图显示结果

现在来看看频谱泄露,将采样对象的频率改变

x = np.sin(2*np.pi*100*t)+2*np.sin(2*np.pi*234.375*t)

我们明显看出,第一个对象的频谱分析出现“泄露”,能量分散到其他频率上,

没法准确计算到计算对象的频谱特性。

窗函数

上面我们可以看出可以通过加“窗”函数的方法来处理,尽量保证FFT长度内

的取样对象是对称的。

import pylab as pl

import scipy.signal as signal

pl.figure(figsize=(8,3))

pl.plot(signal.hann(512))#汉明窗函数

pl.show()

对上述出现频谱泄露的函数进行加窗处理,后面会介绍一下各种加窗函数的原理和效果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    51

    文章

    4674

    浏览量

    83458
  • 傅里叶变换
    +关注

    关注

    5

    文章

    415

    浏览量

    42233

原文标题:基于Python的数字信号处理初步

文章出处:【微信号:eetop-1,微信公众号:EETOP】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    用FFT对信号进行频谱分析的实验

    应用FFT对信号进行频谱分析实验实验二 应用FFT对信号进行频谱分析一、 实验目的1、在理论学习的基础上,通过本次实验,加深对快速傅里叶变换的理解,熟悉FFT算法及其程序的编写。2、熟
    发表于 05-12 01:51

    频谱分析仪原理结构框图

    系列频谱分析仪的结构框图。MXA采用全数字中频和数字信号处理的方式进行频谱分析信号的矢量分析
    发表于 09-18 16:27

    怎么用频谱分析法测量数字信号电平?

    数字电视、数字传输、数据通信中,其信号是采用多种调制方式的数字信号,这时的数字信号电平已不能用一般传统的方法来定度和测量,用
    发表于 08-08 07:44

    带你走进频谱分析仪“世界”,了解频谱分析仪!

    元件沿所需的频率范围进行扫描。老式的扫频式频谱分析仪(SSA)在工作时使用模拟调谐、滤波及显示元件,而现代扫频式频谱分析仪(SSA)将输入信号数字化,并使用快速傅立叶变换(FFT)方法
    发表于 06-16 14:37

    什么是频谱分析

    什么是频谱分析频谱分析仪的英文全称:Spectrum Analyzer 频谱分析仪系统主要的功能是在频域里显示输入信号频谱
    发表于 11-26 11:20 3719次阅读

    信号频谱分析和测试

    信号频谱分析和测试 1.了解周期函数的傅立叶变换理论及虚拟频谱分析仪的工作原理;2.熟悉典型信号的波形和频谱特征,并能够从
    发表于 06-22 09:16 5787次阅读
    <b class='flag-5'>信号</b><b class='flag-5'>频谱分析</b>和测试

    虚拟信号频谱分析仪的设计

    虚拟信号频谱分析仪的设计 随着计算机技术的迅速发展,利用软件进行信号处理技术的应用日益广泛,已开发的用于虚拟仪器的数字信号处理和图
    发表于 01-21 17:12 1430次阅读
    虚拟<b class='flag-5'>信号</b><b class='flag-5'>频谱分析</b>仪的设计

    复平面内信号频谱分析

    给出了一种在复平面内,用图形分析进行信号频谱分析的方法,详细地分析数字频率与模拟频率之间的关系
    发表于 02-07 11:58 29次下载
    复平面内<b class='flag-5'>信号</b><b class='flag-5'>频谱分析</b>

    频谱分析中避免较大幅度误差方法

    近年来,现代频谱分析仪在低频模拟精度与数字信号处理(DSP)器件方面取得了极大的改进,尤其是前端中频(IF)滤波器。虽然频谱分析仪在RF频率具有较高的精度,但在微波频率的精度并未普遍得到改善。由于
    发表于 12-11 01:49 1503次阅读
    <b class='flag-5'>频谱分析</b>中避免较大幅度误差方法

    数字信号处理教程之数字信号频谱的详细资料说明

    数字信号处理教程之数字信号频谱的详细资料说明包括了:1 频谱的意义,2 非周期数字信号频谱,3
    发表于 11-13 17:08 24次下载

    详解频谱分析仪的基本原理

    本文的目的是为您提供关于频谱仪或信号分析仪的基本概述。您或许想要进一步了解与频谱分析相关的更多其他话题,您可访问频谱分析仪网页。这里将重点介
    的头像 发表于 04-28 10:18 4614次阅读

    频谱分析仪如何看杂散信号

    频谱分析仪是一种用于测量和分析信号频谱的仪器。它可以帮助我们检测和分析信号中的杂散
    的头像 发表于 08-09 17:31 1000次阅读
    <b class='flag-5'>频谱分析</b>仪如何看杂散<b class='flag-5'>信号</b>?

    单频信号频谱分析

    单频信号频谱分析
    的头像 发表于 10-16 11:15 366次阅读

    如何使用频谱分析分析射频信号的调制特性?

    的调制特性。 首先,让我们先了解一下频谱分析仪的基本原理。频谱分析仪是一种测量设备,通过将信号输入仪器,将信号进行频谱分解,并以频率为横轴,
    的头像 发表于 12-21 15:37 399次阅读

    如何使用频谱分析仪来观察和分析杂散信号

    如何使用频谱分析仪来观察和分析杂散信号频谱分析仪是一种广泛应用于电子领域的仪器,用于观察和分析信号
    的头像 发表于 12-21 15:37 820次阅读